在上图中,以PC2 ping PC4为例
1. 交换机内部的配置
VLAN表
VLAN_ID | PORT_BITMAP | UT_PORT_BITMAP |
2 | 001111 | 001110 |
3 | 110001 | 110000 |
端口2和端口4要配置为untag端口。
端口寄存器表
端口号 | 端口缺省VLAN标识(PVID) |
1 | 2 |
2 | 2 |
3 | 2 |
4 | 2 |
5 | 3 |
6 | 3 |
2. PC2发送ARP请求广播包,请求PC4的MAC地址。
3. 交换芯片将ARP包打上端口2的PVID,并根据交换机的配置进行ingress过滤。
4. 端口源MAC地址学习
以源MAC2地址+VID为索引检索MAC地址学习表,在系统的初始化阶段,MAC地址表是空的,查找不到相应表项,帮将这个表项源MAC地址+VID+端口号写入MAC地址表
MAC地址 | VLAN-ID | PORT |
MAC2 | 2 | 2 |
5. 目的MAC地址检索及转发。
如果收到的为单播包,则查MAC地址学习表,如果表项为空,就向所有端口洪泛;
如果收到的为广播包(目的MAC地址为0xFFFFFF),则向所有端口广播;
如果收到的为组播包(目的MAC地址以0x01005e开头),则以该组播MAC地址+VID去匹配组播表。如果查到表项,则取出组播输出端口列表中的端口列表,向这些端口发送;如果查表失败,则以VID去查VLAN表,得到该VLAN的所属端口列表,向这些端口转发。
在本例中,ARP报文为广播包,则在该端口PVLAN对应的VLAN组里广播出去,即向端口2、3、4广播出去。
6. 端口2、3、4对应的操作
端口2是ARP请求广播包接收端口,故不会向所连PC2转发,端口3和端口4则将ARP请求转发至所连PC机,并根据配置进行egress过滤。
7. 被请求的主机响应
与端口4相连的PC4检查到ARP请求包请求的IP地址是自己的,则发送ARP应答包到PC2(也要将MAC4+VID+端口号写入地址学习表)。
8. PC2收到ARP应答包后,发送ICMP请求单播包到PC4判断链路是否可达。
PC4收到ICMP控制包后,对PC2发送ICMP响应单播包进行响应。