DHCP客户端获取IP地址慢的原因分析

公司网络的DHCP客户端获取IP地址很慢,大概需要最长需要一分钟,禁用本地连接后,再启用本地连接,使用抓包工具,从抓包中看到,首先抓到的数据就是STP的数据包:

由于大部分交换机为了避免环路,会使能STP(生成树协议)

生成树协议的主要功能有两个:一是在利用生成树算法、在以太网络中,创建一个以某台交换机的某个端口为根的生成树,避免环路。二是在以太网络拓扑发生变化时,通过生成树协议达到收敛保护的目的。

生成树协议拓扑结构的思路是: 不论网桥(交换机)之间采用怎样物理联接,网桥(交换机)能够自动发现一个没有环路的拓扑结构的网路,这个逻辑拓扑结构的网路必须是树型的。生成树协议还能够确定有足够的连接通向整个网络的每一个部分。所有网络节点要么进入转发状态,要么进入阻塞状态,这样就建立了整个局域网的生成树。当首次连接网桥或者网络结构发生变化时,网桥都将进行生成树拓扑的重新计算。为稳定的生成树拓扑结构选择一个根桥, 从一点传输数据到另一点, 出现两以上条路径时只能选择一条距离根桥最短的活动路径。 生成树协议这样的控制机制可以协调多个网桥(交换机)共同工作, 使计算机网络可以避免因为一个接点的失败导致整个网络联接功能的丢失, 而且冗余设计的网络环路不会出现广播风暴。

交换机默认的端口配置为自动识别模式,所以在端口起用前要进行多次生成树计算,寻找根桥(由于只有一台使能STP的交换机,所以这台交换机自己一直当根桥),根端口,指定端口。然后根据生成树协议,判断开启此端口为何种类型的端口,经过计算后,判断开启此端口,不会引起环路,然后才开始转发DHCP的广播。
注:有些高级一点的交换机,如果确定了端口类型为access一般在端口上起用spanning-tree portfast可以解决问题。
启用span-tree 端口快速转发后,将不进行判断而是直接使用端口配置的模式进行转发,此时的端口配置样例:
int f0/?
# sw mode acc /dynamic
# span portfast

但是以后操作此端口时,需要更谨慎一些。

以上理论有个测试方法,你可以将PC直接连接到路由器端口,记录获得DHCP分配的地址的时间,然后再经过一台开启了STP的交换机连接到路由器再DHCP获取地址,记录时间,就可以发现前者所需时间明显比后者短。