一个数据包来了,交换机如何判断二层交换还是三层路由?
如果目的MAC=单播MAC地址,且可以在MAC Address Table查询到端口,那么从对应的端口流出。 如果目的MAC=单播MAC地址,但是没有在MAC Address Table查询到端口,那么采用Flooding机制,在广播域里进行广播扩散。广播域 = 接收到该帧的端口所在的广播域(VLAN)。 如果目的MAC=广播MAC地址,本机如有对广播感兴趣的程序,复制一份给该程序,然后再广播域里广播扩散。如果没有感兴趣的程序,直接在广播域里广播扩散。 如果目的MAC=组播MAC地址,本机如有对广播感兴趣的程序,将报文递交给该程序。比如RSTP、LACP。 如果目的MAC=组播MAC地址,本机没有对广播感兴趣的程序。如果启用IGMP Snooping,查询端口是否为空,如果为空,直接将帧数据丢弃。否则将帧数据转发给查询到端口数,可能一个,也可能多个。 如果目的MAC=组播MAC地址,本机没有对广播感兴趣的程序。如果没有启用IGMP Snooping,将该帧直接在广播域里进行广播扩散。
如果相等,将数据包直接提交给三层路由处理。 否则,将数据包按照二层交换处理。具体的二层判断逻辑参考上文。
赞 (0)