以太网端口的链路类型比较
一、以太网端口的链路类型(3种):
1、Access类型:端口只能属于1个VLAN,一般用于连接计算机的端口;
2、Trunk类型:端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
3、Hybrid类型:端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
注:三种类型的端口可以共存在一台设备上,但Trunk端口和Hybrid端口之间不能直接切换,只能先设为Access端口,再设置为其他类型端口。例如: Trunk端口不能直接被设置为Hybrid端口,只能先设为Access端口,再设置为Hybrid端口。
二、处理报文的方法
1、Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
2、 tag报文结构的变化是在源mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的 当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口(如果设置了端口的缺省VLAN ID)。当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
3、缺省VLAN:当一个未打标签的报文通过trunk等允许多vlan通过接口时,默认要交给的那个vlan.
对于华为交换机缺省VLAN被称为“Pvid Vlan”, 对于思科交换机缺省VLAN被称为“Native Vlan”
Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置
Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1。如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
untag报文就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯。
三、交换机接口出入数据处理过程:
Acess端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
Acess端口发报文:
将报文的VLAN信息剥离,直接发送出去
trunk端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
trunk端口发报文:
比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
hybrid端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
hybrid端口发报文:
1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送
如图所示
各类型端口使用注意事项
配置Trunk端口或Hybrid端口,并利用Trunk端口或Hybrid端口发送多个VLAN报文时一定要注意:本端端口和对端端口的缺省VLAN ID(端口的PVID)要保持一致,否则端口将不能正常转发报文。
Access端口只能加入到1个VLAN中,Hybrid端口和Trunk端口可以加入到多个VLAN中。
当在交换机上使用isolate-user-vlan来进行二层端口隔离时,参与此配置的端口的链路类型会自动变成Hybrid类型。
Hybrid端口的应用比较灵活,主要为满足一些特殊应用需求。此类需求多为在无法下发访问控制规则的交换机上,利用Hybrid端口收发报文时的处理机制,来完成对同一网段的PC机之间的二层访问控制。
配置案例
<SwitchA>sys
Enter system view, return to user view with Ctrl+Z.
[SwitchA]vlan 10
[SwitchA-vlan10]vlan 20
[SwitchA-vlan20]int e0/2
[SwitchA-Ethernet0/2]port link-type trunk
[SwitchA-Ethernet0/2]port trunk pvid vlan 10
[SwitchA-Ethernet0/2]port trunk permit vlan 20
[SwitchA-Ethernet0/2]vlan 10
[SwitchA-vlan10]port int ethernet0/10
[SwitchA-vlan10]vlan 20
[SwitchA-vlan20]port int eth0/20
[SwitchA-vlan20]quit
<SwitchB>sys
Enter system view, return to user view with Ctrl+Z.
[SwitchA]vlan 10
[SwitchB-vlan10]vlan 20
[SwitchB-vlan20]int e0/2
[SwitchB-Ethernet0/2]port link-type trunk
[SwitchA-Ethernet0/2]port trunk pvid vlan 10
[SwitchB-Ethernet0/2]port trunk permit vlan 20
[SwitchB-Ethernet0/1]int e0/10
[SwitchB-Ethernet0/10]port access vlan 10
[SwitchB-Ethernet0/10]int e0/20
[SwitchB-Ethernet0/20]port access vlan 20
[SwitchB-Ethernet0/20]quit
实例解释
pc1发送了一个不带标签的报文,在进入SwA的e0/10时,被打上缺省vlan标签,由于e0/10是一个access接口,所以pvid 为vlan10。从配置来看我们配置的trunk链路只允许vlan 20通过,但是trunk的缺省vlan为vlan10;通过比对MAC地址表得知应由E0/2接口转发;当带有vlan 10标签的报文通过SwAe0/2时,根据规则则会去掉标签转发,然后当报文到达SwB的e0/2时将又会被打上vlan10的标签,然后通过比对mac地址表,由SwB的e/10所接受并去掉标签,发送给PC3
对于PC2和PC4,当带有vlan20的标签通过swA的e0/2时,vlanID与缺省vlanID不同,保持原有的TAG转发,
当到达SWB的e0/2,虽然vlanID与缺省vlanID不同,但是是该端口允许通过的vlanID所以依然接收该报文,然后通过比对mac地址表,由SwB的e/20所接受并去掉标签,发送给PC4
<SwitchA>sys
Enter system view, return to user view with Ctrl+Z.
[SwitchA]vlan 30
[SwitchA-vlan10]vlan 10
[SwitchA-vlan10]port int ethernet0/10
[SwitchA-vlan10]vlan 20
[SwitchA-vlan20]port int eth0/20
[SwitchA-vlan20]int e0/2
[SwitchA-Ethernet0/2]port link-type hybrid
[SwitchA-Ethernet0/2]port hybrid vlan 10 20 tagged
[SwitchA-Ethernet0/2]int ethernet0/10
[SwitchA-Ethernet0/10]port link-type hybrid
[SwitchA-Ethernet0/10]port hybrid vlan 30 untagged 只能接受vlan 30的报文
[SwitchA-Ethernet0/10]int ethernet0/20
[SwitchA-Ethernet0/20]port link-type hybrid
[SwitchA-Ethernet0/20]port hybrid vlan 30 untagged 只能接受vlan 30的报文
[SwitchA-Ethernet0/20]quit
[SwitchA-Ethernet0/20]int e0/24
[SwitchA-Ethernet0/24]port link-type hybrid
[SwitchA-Ethernet0/24]port hybrid vlan 10 20 untagged 能接受vlan10 和vlan20的报文
<SwitchB>sys
Enter system view, return to user view with Ctrl+Z.
[SwitchB]vlan 10
[SwitchB-vlan10]vlan 20
[SwitchB-vlan20]int e0/2
[SwitchB-Ethernet0/2]port link-type hybrid
[SwitchB-Ethernet0/2]port hybrid vlan 10 20 tagged
[SwitchB-Ethernet0/1]int e0/10
[SwitchB-Ethernet0/10]port access vlan 10
[SwitchB-Ethernet0/10]int e0/20
[SwitchB-Ethernet0/20]port access vlan 20
此时vlan30可以和SwB中的vlan10以及vlan20通信,但是不能和swA中的vlan10及vlan20通信,但是不同交换机上的相同vlan间依然可以通信
实例解释
此时inter e02/0和inter e0/24下的所接的PC是可以互通的,但互通时数据所走的往返vlan是不同的。
以下以inter e0/24下的所接的pc5访问inter e0/20下的所接的pc4为例进行说明
pc5 所发出的数据,由inter0/24所在的pvid vlan30封装vlan30的标记后送入交换机,交换机发现inter e0/20允许vlan 30的数据通过,于是数据被转发到inter e0/20上,由于inter e0/20上vlan 30是untagged的,于是交换机此时去除数据包上vlan30的标记,以普通包的形式发给pc4,此时pc5->p4走的是vlan30
再来分析pc4给pc5回包的过程,pc4所发出的数据,由inter0/20所在的pvid vlan20封装vlan20的标记后送入交换机,交换机发现inter e0/24允许vlan 20的数据通过,于是数据被转发到inter e0/24上,由于inter e0/24上vlan 20是untagged的,于是交换机此时去除数据包上vlan20的标记,以普通包的形式发给pc5,此时pc4->pc4走的是vlan20
转载于:https://blog.51cto.com/4459003/802505