最近单位决定升级网络设备,原来所采用的均为3Com交换机,所有计算机被划归到了两个VLAN中,除部分计算机采用固定IP外,其他计算机均通过一台DHCP服务器获得地址。实施网络升级后,网络中心路由器不变,大部分接入级交换机更换为Cisco Catayst 3550或Cisco Catayst 2950,但是升级后出现了以下情况:部分计算机刚启动或重启时不能获得IP地址,但在手动设定后又可获得IP地址。
通过观察,笔者发现只有使用Windows 98的计算机才会出现这种情况,笔者认为可能是计算机感染了专门针对Windows 98的病毒,但是用诺顿和金山毒霸均未查出病毒,所以就排除了病毒的原因。
难道是DHCP服务器出了问题,再次对DHCP服务器进行检查,确认DHCP服务器运行正常。经过仔细观察,笔者发现只有Cisco交换机所连接的使用Windows 98的计算机出现此类问题,而使用Windows 2000或Windows XP的计算机却没有出现问题,而且在使用3Com交换机的时候,采用Windows 98的计算机都能正常工作。
笔者挑选出一台Cisco Catayst3550-48交换机,仔细检查它的配置、ARP表、Mac-Add表以及Log,没有发现任何异常。笔者想到使用Windows 98的计算机也不是完全不能获得IP地址,只是在开机时无法获得,那么,可能就是在交换机端口初始化的时候出现了问题。
Cisco交换机的端口并不是连接上计算机就立即处于转发状态的,它有一个从Bloking(阻断)、Listening(监听)、Learning(学习)到Forwarding(转发)状态转换的过程。那么,极有可能就是在这个过程中,Cisco交换机和Windows 98的网络初始化发生了冲突。
如果让Cisco交换机改变端口转发方式,也就是让它的端口一旦加电,就处于转发状态,应该就可以解决问题。于是笔者在Cisco Catayst 3550的端口配置中添加了配置语句“spanning-tree portfast”后便解决了这一问题。
看来,Windows 98的网络启动过程确实和Cisco交换机的生成树协议有冲突,不过只是在采用DHCP的情况下才会表现出来,但是“spanning-tree portfast”命令只能用于交换机端口直连计算机的情况下,如果端口级联其他交换机,这个命令会使生成树协议运行出错。在这种情况下,一般不需要进行其他配置,因为生成树协议默认是在Cisco交换机上启用的,当然也可以在Cisco接入层交换机端口加上“spanning-tree uplinkfast”命令,以减少它的收敛速度。