预备知识:
以太网报文格式
ethnetII报文格式 如下:
6bytes | 6bytes | 2bytes | 46~1500bytes | 4bytes |
Dest MAC | Src MAC | type | data | CRC |
802.3报文格式如下
6bytes | 6bytes | 2bytes | 46~1500bytes | 4bytes |
Dest MAC | Src MAC | length | data | CRC |
带vlan tag的报文格式(802.1q)
801.Q(vlan) | 6bytes | 6bytes | 2bytes | 4bytes | 46~1500bytes | 4bytes |
Dest MAC | Src MAC | 0x8100 | vlan tag | data | CRC | |
vlan tag | 3bit | 1bit | 12bit | 2bytes | ||
PRI | CFI | TAG(vlan id) | Eth-type |
基本报文转发:
交换机处理以太网报文,基本模式是基于源MAC地址的学习和目的MAC地址的转发,交换机根据内部的MAC表处理收到的报文,MAC表记录的是MAC地址和端口的对应关系,如交换机某个端口收到报文会将报文的源MAC和端口号对应关系记录下来(填充MAC表的一项-- 源MAC学习),并查MAC表中报文目的MAC对应的port号,如果查到将报文交换到该port发出,如果没有报文目的MAC对应的表项,则将报文发到接收端口除外的所有端口上。如下表是一个交换机的MAC表,MACA/B/C/D是与交换机4个端口相连PC的网卡MAC地址。
MAC表
MAC addr | port |
MACA | 1 |
MACB | 2 |
MACC | 3 |
MACD | 4 |
VALN报文转发:
有的交换机支持处理带VLAN标签的以太网报文(报文格式见802.1q报文格式),此时交换机端口可以配置为access,trunk或者hybrid属性,不同的端口类型对报文的处理方式不一致.
access端口:
接收处理:报文无VLAN则加端口PVID(port based vlan ID)进入交换机处理,报文有VLAN则丢弃;
发送处理:去掉VLAN标签发送
trunk端口:
接收处理:判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
发送处理:比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
hybrid端口:
接收处理:判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
发送处理:判断该VLAN在本端口的属性,如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。