Ethernet Switch
是如何工作的?


    Ethernet Switch的工作基础是Ethernet信息包结构。Ethernet信息包为固定格式,但长度可变,在信息包头中带有目的MAC地址、源MAC地址、信息长度等若干内容。目前使用较多的Ethernet交换机都是Layer 2(OSI的第二层)交换机,即基于Ethernet MAC地址进行交换。
    Ethernet Switch控制电路收到一个Ethernet 包(从某一端口)后,立即查找其内存中的地址对照表(MAC端口号),以确认该目的MAC的NIC挂在哪一个端口上,然后将该包送到该端口上,如果该目的MAC地址是首次出现,则广播到所有端口。Ethernet 交换机是根据Ethernet包中的源MAC地址来更新“MAC地址—端口号表”的,每一台计算机打开后,其上面的NIC会定期发出空闲包或信号,Ethernet 交换机可据此得知其存在及MAC地址,所谓自动地址学习就是指此意;所谓自动年龄更新(Auto-aging),指的是若一定时间内未见已出现的MAC地址发出包,则将此MAC地址从“MAC—端口号表”中清除,此MAC地址重新出现时将会被当作新地址处理。
    新太阳NS1024、 NS1212等交换机均支持Auto-Aging,但NS0212 HUB不支持Auto-Aging,但它能支持多达8000个MAC地址(每次关电后所有地址内容被清除),因此足够用。因为一个HUB用于最低层,在不关电的情况下接连8000台计算机是不太可能的,即使已达此数目,复位或重新开机即可。
    Ethernet Switch与Ethernet HUB的最大差别是Ethernet Switch记忆什么用户(即哪些MAC地址)挂在哪一个端口上,也就是说Switch中有一个地址表,表中的每一项内容主要是MAC地址与端口号。当Switch从某一端口收到一个包时(我们暂不讨论广播包),它要对地址表执行两个动作:一是检查该包的源MAC地址是否已在地址表中,如果没有,则将该MAC地址加到地址表中,这样以后就知道该MAC地址在哪一个端口;二是检查该包的目的MAC地址是否已在地址表中,如果该MAC地址已在地址表中,则将该包发送到对应的端口即可,如果该MAC地址不在地址表中,则将该包发送到所有其它端口(源端口除外),相当于该包是一个广播包。
    对于广播包,Ethernet Switch与Ethernet HUB的工作原理是一样的,没有什么差别。
    从Switch
上述工作过程我们可知:
  ① Switch是根据从端口收到的Ethernet包得知哪一个MAC地址在哪一个端口的,如果该MAC地址从来没有发出过Ethernet包,则Switch不知道该MAC地址在哪一个端口。
  ② 由于Switch中有一个地址表记录哪一个MAC地址在哪一个端口,因此对于非广播包,Switch而不必像HUB那样将该包发送到所有端口,只须将该包发送到对应的端口,从而使不相关的端口可以并行通信,从而提供了比HUB更高的速率。HUB则不同,不管该包是广播包也好,非广播包也好,HUB都按广播包处理,从而使用户只能串行操作,共享通信带宽。
  ③ Switch是有自动地址学习功能,它自动根据收到的Ethernet包中的源MAC地址,更新MAC地址表的内容,Switch使用的时间越长,它学到的MAC地址就越多,未知的MAC地址就越少,因而广播的包就越少(如果目的MAC地址未知,则将该包作广播包处理),速度就越快。
  ④ Switch一般都是有自动年龄功能,即对于某一个已在地址表中的MAC地址,如果超过一定时间没有从该MAC地址收到包(即该地址不发包),则将该MAC地址从地址表中删除,以后碰到目的地址为该MAC地址的包时,Switch将包当广播包处理,重新学习。我公司的NS1212 Swicth具有自动年龄功能,缺省时间为300秒。

若干问题:

  1.为什么用Windows 95/98中的“网上邻居”中看不到有些用户?
回答:请参看“
Ethernet HUB是如何工作的?”和“Windows 95/98对等网的浏览”中的分析,并着重检查半双工/全双工是否设置正确?电缆是否正确连接?计算机中软件配置是否一致、正确?
  2.对于新太阳NS1212 Switch,为什么将一个用户从一个端口转到另一个端口时需较长时间才能发现该用户?
回答:这个问题涉及自动地址学习和自动地址年龄问题。首先
NS1212 Switch是有自动MAC地址学习功能和自动地址年龄功能,年龄时间缺省为300秒。
    当一个
MAC地址原挂在端口A时,NS1212的地址表中有一项记录了该MAC地址与端口A的关系,将该MAC地址(计算机)从端口A移到端口B时,如果不从端口B发出Ethernet 包,则NS1212 Switch不知道此变化,仍然认为该MAC地址仍在端口A,所有发往该MAC地址的包仍发往端口A而不是端口B,从而导致该包丢失,使Ehternet上层软件将该包重发。经过300秒后(该时间可用网管模块改变),若仍然没有从端口B收到该MAC地址发出的包,则NS1212 Switch自动从地址表删去该MAC地址,以后去往该MAC地址的包被当作广播包处理,当然被发到端口B,从而找到该MAC地址,重新改写NS1212 Switch中的地址表。
    因此,要使计算机从一个端口移到另一个端口后尽快被其它用户发现,则应在新的端口上发一个包,如在
Windows 95/98上主动查看“网上邻居”等,从而使NS1212 Swicth
尽快更新地址表。即搬家后要尽快通知邮局,才能使朋友的信件尽快到达。


back(1).gif (2190 字节)