交换机的端口类型分3种,分别是access、trunk、hybrid,网络上对这3种类型的讨论很多,编者不才,略做一些总结,希望给初学者一些启示。
一、最基本的概念
1、数据进入与离开端口。PC1与交换机的端口1连接,PC2与交换机的端口2连接,PC1向PC2发送数据时,数据从端口1进入交换机,从端口2离开交换机。很多人在讨论的时候使用端口发送与接收数据的描述,个人认为端口位于数据通信的中间环节,每一次数据经过端口时接收与发送是同时存在的,如何认定端口是接收或发送数据存在二义性。
2、VLAN tag(以下简称tag,翻译为标签)。链路层的数据帧中包含一个4字节的tag,tag中包含VID(VLAN ID),指明发送该帧的PC属于哪个VLAN。注意:PC生成的帧不包含tag,交换机内转发的帧必须包含tag,这个矛盾由端口解决:数据进入端口时自动在帧中插入tag,数据离开端口时自动清除帧中的tag。
3、VID与PVID(Port VID)。VID是VLAN的标识,PC属于哪个VLAN是由PC连接的端口划分给哪个VLAN决定的,端口划分给哪个VLAN是由端口的属性PVID决定的。
二、最简单的情形
PC1与端口1(PVID假设为10)连接,PC2与端口2(PVID假设为10)连接,PC1向PC2发送数据,分析一下数据帧经过端口时是如何处理标签的:
数据帧进入端口1时先打标签(即在帧中插入tag,其中VID取值端口1的PVID),打标签是很形象的描述,意思是此帧由属于VLAN10的PC发送,只能由属于VLAN10的PC接收。数据帧经交换机转发至端口2离开时先去标签(即在帧中清除tag),然后交付PC2。
以上就是access端口的工作原理,重要的事再说一遍:
1、PC发送的数据帧(一定未携带tag)进入端口时,端口会打上PC的VID,打完标签后交付交换机;
2、交换机转发的数据帧(一定携带有tag)离开端口时,比较帧的VID与端口的PVID值,如相等(表示两者属于同一个VLAN)则先清除tag然后交付PC,如不相等则丢弃帧。
三、交换机的堆叠
因为交换机的堆叠产生了特殊的端口类型trunk。
如上图所示,两台交换机通过端口1相连,两台PC分别连交换机,网络配置如下:
交换机不做任何设置,经测试PC1与PC2是可以互相访问的,小伙伴们可以结合access端口的工作原理分析标签的处理过程,这也体现了二层交换机即插即用的特点。
现在稍作改变,将PC1与PC2划分给VLAN10,经测试PC1与PC2不能互相访问,以PC1向PC2发送数据分析原因:
1、PC1的数据帧进入端口2,打标签VID=PVID=10;
2、经查交换机SW1的转发表,数据帧被转发至SW1的端口1;
3、数据帧在经过SW1的端口1离开时,端口会比较帧的VID与自己的PVID,VID=10,PVID=1,对不起,端口不能通过非本VLAN的数据帧,数据帧被直接丢弃,甚至不能到达SW2,PC1当然不能访问PC2。
解决办法:把两个交换机的端口1划分给VLAN10,则来自VLAN10的数据帧可以跨交换机送达,但这并不是一个完美的解决方案,因为来自其他VLAN的数据依然不能跨越交换机。这时需要使用trunk端口,他可以设置哪些VLAN的数据可以通过,以SW1的配置为例:
[H3C]interface GigabitEthernet 1/0/1 //配置1号端口
[H3C-GigabitEthernet1/0/1]port link-type trunk //设置端口类型为trunk
[H3C-GigabitEthernet1/0/1]port trunk pvid vlan 20 //设置端口PVID属性值20,与PC的VID不同
[H3C-GigabitEthernet1/0/1]port trunk permit vlan all //允许通过所有VLAN的数据,当然也可具体指定VLAN
配置完成后SW1的端口状态如下图所示:
SW2进行同样的配置,经测试发现PC1与PC2可以互相访问。结合本例分析trunk端口的工作原理:当带有tag的数据帧经过端口时,检测帧的VID是否在端口允许通过的VLAN之内,如果在则通过,否则丢弃。
本例中trunk端口既没有去标签,也不会重新打标签。如果trunk端口对标签进行了处理,那么帧在经过SW1的端口1时会去掉标签,在经过SW2的端口1时会打上标签(VID=PVID=20),那么PC2是不会收到这一帧的(PC2的VID=10)。
当然trunk端口也可以直接和PC相连,这种情况下对标签的处理是完全不同的,但个人觉得初学者暂时不需要了解,因为实际工作中一般并不存在这种情况。
四、意义不大的hybrid端口
关于hybrid端口,建议小伙伴们别研究了,个人感觉意义不大,这里只是以一个简单的场景来解释一下hybrid是怎么回事:
如上图所示,1台交换机连接两台PC,网络配置如下:
以端口1的配置为例:
[H3C]interface GigabitEthernet 1/0/1 //配置1号端口
[H3C-GigabitEthernet1/0/1]port link-type hybrid //设置端口类型为hybrid
[H3C-GigabitEthernet1/0/1]port hybrid pvid vlan 10 //设置端口PVID=10
[H3C-GigabitEthernet1/0/1]port hybrid vlan 10 untagged //设置哪些VLAN的帧通过端口时去掉标签
按相同的方式配置端口2,经测试发现PC1与PC2可以互相访问。结合本例分析:PC1的数据帧进入端口1时,和所有其他类型端口一样,当发现帧未携带tag时,端口会打上PC1的VID,VID=PVID=10;数据帧离开端口2时去标签,经检测帧的VID(VID=10)在端口2的untagged属性定义的VLAN之内,则去掉标签并交付PC2。
从这里看出,hybrid端口通过PVID、tagged、untagged等属性决定数据帧能否通过端口以及打标签与去标签的方式,表面上似乎更加灵活,但个人感觉不够实用且难以维护。
五、总结一下
啰嗦了这么多,一句话总结:连接PC的交换机端口使用默认access类型,交换机互连的端口设置为trunk类型,不推荐hybrid端口。