影响无线路由器的最大连接数因素分析
802.11协议规定,其中规定最大2007个节点,详见802.11的AID范围,802.11的协议性能,在初始802.11协议下,若节点数较多,比如50左右的节点数,从而会导致网络性能立刻降低,甚至无法工作,对于802.11n/ac之类的协议,该性能会有所改进,但是仍有极限。
路由器的设置,比如路由器存在默认的最大连接数设置,以及可以编辑的最大连接数,大于限制以外的节点不被关联,
路由器的性能限制,比如路由器的内存限制/CPU的限制,比如NAT可能是一个受影响的内容,貌似一个NAT会话维护大约需要300 byte左右的缓存,可以从这个方面估算下一个路由最多能够支持多少NAT。
-----------------------------------------------------------------------------------------------------------------------------------------PS:以下表述有个前提为,非硬件资源情况下,无线路由器的最大连接数,这里首先肯定是认同硬件资源对无线连接数的影响的,不过即使在硬件资源最佳的情况下也无法超过,单个无线接口也无法接入大量的设备,其原因就在于802.11协议的设计,不过这一块,协议也在不停的做改良,比如MU-MIMO机制之类,故因此,该回答主要是基于在硬件最佳的情况下,无线路由还是存在连接数量上限而言的。额。。。这里的确最大连接数的定义不明确,我理解是一个路由下最多能支持多少个设备进行接入,同时题设中把钱的层面忽略的话,那么就考虑硬件能做多好就做多好,不会出现由于一些小内存之类出现的性能缺陷。假设仅仅单个AP(即单个路由)的话,从协议设计上而言,本身就限定了其最大连接数,比如下图是经典的bianchi模型中,有关性能的图
可以看到随着节点数增加,其吞吐量是快速下降的(由于这里是用1M的速率,所以也可以认为纵轴是代表的网络的效率)。故这里我们需要知道,随着人数越来越多,系统的总带宽会快速减少,其基本原因就在于冲突概率大。所以这里能够注意到,不仅仅是由于共享带宽,人越多,每一个人分的越少,同时,总的带宽也变少了,从而每一个人所分时更加的少,换言之,就是“三个和尚没水喝”。如果对CSMA/CA机制有所了解的话,若两个节点同时backoff到0,那么就会冲突,这个Backoff是随机在一个范围内选值的,在图中,就是在[0,W]范围内随机选值,若冲突后,需要进行重发,每一重发的时候,协议规定要扩大一倍这里的W,即BEB算法,而增大也不是无穷无尽的,协议规定比如,增大5次以后,第6次保持W不变,再发送一次,若再失败则丢包。在图中,重发的次数限制就对应的m。(PS:若采用RTS/CTS模式会好一些,其基本思想是采用短帧冲突代替长帧冲突,从而若发生冲突仅仅损失RTS帧,不会损失数据,总而在上图中RTS/CTS模式下,吞吐量下降要好些,不过在显示环境下,要在一起传输中启用RTS/CTS需要满足待传数据包的payload长度大于RTS threshold的)所以,排除了路由器本身质量而言,协议本身就会限定接入节点个数的,故为了弥补这个缺点,比如MU-MIMO技术,都是扩展用户的增强型技术。故,即使硬件完美的情况下,无线网络最大接入节点数目还是有限制的。(实际上这里还没有加入讨论隐藏终端和暴露终端问题)同时为什么吞吐量会影响节点接入的情况,大致解释是,由于AP和节点为了发送数据需要同时接入信道,即竞争的层面上,AP和节点是一样的,比如我节点需要接入信道发送一个关联请求给AP,AP给我反馈了我才可以发起认证,认证过了我才关联上AP,若在中间AP无法竞争到信道,反馈一直迟迟发不出来,那么我的关联或者认证就会出现超时错误,从而发生无法关联AP。
再补充下,实际上早期的支持CSMA/CD的repeaters也是由于协议有最大客户端数限制的,所以由于协议导致的极限并不是第一次出现,如下图即是在《Ethernet: The Definitive Guide》中所述(注:第416页):
是1024,该1024实际上是基于CSMA/CD的BEB最大回退10次所导致(第0~10次会指数增加回退窗口,第11~16次不增加),而若采用包交换的交换机,则没有这个限制。------------------------------------------------------------------------------------------------------------------------------------------@沈磊 一开始看到你贴的驱动里面,最大到2048,感觉好大。后来发现,貌似2000左右也有可能,不过可能应该更具体点到2007个节点。(PS:本文一开始讨论的是协议的性能限制,这里补充讨论下,协议中默认的一些配置,即不考虑性能的情况下的默认配置)。在协议中,最有关最大关联参数的应该是AID范围,即TIM字段中的AID。目前对AID的考证如下:
在TIM中出现的AID的bitmap最大范围是512字节(bitmap中每一位都是关联到一个节点),即AID的范围最大是2008
TIM中的ParTIal Virtual Bitmap(即AID存放的地方)的大小不是定值,即有多少个节点,这里位数就有多少,不是保持512byte位定值。(PS:根据抓包结果总结,我家路由的bitmap仅仅有4个byte)
在PS-Poll中也存在AID字段,具体是在duration字段中,其中AID是在14位(duration中的[0:13]),那么范围是0~16384,其中0-2007是使用,2008~16383是保留
第二、最大连接数目是由驱动决定的,比如OpenWRT下是2048,参考static const struct ieee80211_iface_limit if_limits[] = {{ .max = 2048, .types = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_WDS) }, { .max = 8, .types =#ifdef CPTCFG_MAC80211_MESH BIT(NL80211_IFTYPE_MESH_POINT) |#endif BIT(NL80211_IFTYPE_AP) }, { .max = 1, .types = BIT(NL80211_IFTYPE_P2P_CLIENT) | BIT(NL80211_IFTYPE_P2P_GO) }, { .max = 1, .types = BIT(NL80211_IFTYPE_ADHOC) },};具体含义解释参考http://lxr.free-electrons.com/source/include/net/cfg80211.h#L2843但是实际上由于硬件性能和802.11协议的限制,有效的最大连接数目就很少了。
很多种因素限制路由器连接数量
上一篇:快车的连接数是什么
下一篇:关闭edge的欢迎页