vlan 接口和配置
PVID(port vlan ID)
定义 pvid 主要目的:
- 当交换机接口收到没有 vlan tag 标签的包时,接口会将定义的 pvid 作为当前包的 vlan id。
- 当对映 pvid vlan 的包,通过当前交换机接口发出时,接口会将包的 pvid 剥离,还原成一个不带 vlan tag 的包发出。
默认情况下,很多设备 PVID 为 1。
PVID 在 trunk 和 hybrid 情况下,并不是默认就可以允许通过 port 的。
access:
一般连接 PC,主要处理单独一个 vlan。
PVID
access 口只允许一个 vlan id 通过, access 口不会配置 PVID。access 口配置的 default vlan id,功能类似于 PVID。
收包:
access port 收到一个包后:
- 检查这个包带不带 vlan tag。
- 如果进入接口的包带 vlan tag。
a 如果带 vlan tag,且 vlan tag 为 PVID,则 接收。
b 如果带 vlan tag,但是 vlan tag 不是 PVID,则 drop。 - 如果包不带 vlan tag。
a 不带 vlan tag,给包打上 access 口的 default vlan id,然后 接收。
发包:
access port 发包:
检查包的 vlan tag。
- 如果需要发的包 vlan tag 是 access 口 default vlan, 则剥去 vlan tag,然后 发出。
- 如果包的 vlan tag 不是 access 口 default vlan,则丢弃。
trunk:
一般用于交换机互联,主要处理多个 vlan。
trunk 口可以配置多个 allow-pass vlan 和 一个 PVID。
如果想让接口顺利的接受和发送带有 PVID 的包。trunk 口 allow-pass vlan 中需要加入 PVID 的 vlan 号。(收包和发包都必须将 PVID 写入 allow-pass vlan 中)
PVID(port vlan ID)
trunk port 只允许定义一个 PVID。
当一个 trunk port 收到不带 vlan tag 的包时,这个包被 port 接收后会打上 PIVD。
从这个 trunk port 发送出去的包,如果包打有这个 port PVID 时,包在被发送出去前,port 会将包的 PVID tag 剥离后发出。
收包:
trunk 口收到一个包:
1.检查这个包带不带 vlan tag。
2. 包不带 vlan tag,会将包打上当前 PVID tag,接收处理(前提时 trunk port allow PVID vlan pass)。
3. 包带有 vlan tag,比对当前 port 上的 allow-pass vlan 配置,如果允许 allow pass vlan 中有当前包的 vlan tag 则接受,否则 drop。
发包:
trunk 口发送一个包:
- 检查这个包所带的 vlan 号。
- 如果这个包所带的 vlan 号和当前 trunk port 的 PVID一致(前提时 trunk port allow PVID vlan pass),则将包的 vlan tag 剥离后,发送出去。
- 如果这个包所带的 vlan 号不是当前 trunk port 的 PVID,则会比较当前 port 配置的 allow pass vlan。当前包的 vlan 在 allow pass vlan 中,则将 vlan 包原封不动发出。如果不在,则 drop。
hybrid:
可以用于连接 PC 或者交换机。可以当作 access 或者 trunk 口,也可以处理多个未知的 vlan。hybrid 口可以通过定义port tagged/untagged 来控制 port “发包”时,是否给包打上 vlan tag。
PVID(port vlan ID)
和 trunk port 类似。PVID 不管是 tagged 还是 untagged 必须定义在 hybrid port 上。
矛盾的配置:
如果在 port 上定义的 PVID 10(发出的包不带 vlan 10 tag),同时在 port 上定义 tagged vlan 10(发出的包带 vlan 10 tag)。
那么 hybrid port 发出的 vlan 10 包,是不带 vlan 10 tag 的。(貌似 PVID 优先级更高)
tagged/untagged
tagged 和 untagged 只是针对 port 发包。
发包时:如果发现 vlan 是 untagged,则将包的 vlan id 剥离后发出。如果发现 vlan 是 tagged,则将包原封不动发出。
port 在接收包时候,会看参照 port 上配置了tagged 和 untagged 的vlan 集合。接收包的 vlan id 在此集合中的,允许通过。(验证过)
收包:
当一个 hybrid 口收到一个包:
- 看包带不带 vlan tag。
- 如果不带 vlan tag,且 hybrid 的 PVID 在 port 的 tagged/untagged vlan 中有定义,那么就将 包 打上 PVID 接受。
- 如果带有 vlan tag,看包的 vlan id 在此 port 上有没有定义 tagged/untagged vlan,如果定义了对映 tagged 或者 untagged vlan则接受。没有则 drop。
发包:
当一个 hybrid 口发送一个包:
- 看包的 vlan tag 是否属于 PVID。(这里不考虑包是否有 tag,如果没有 tag,hybrid port drop )
- 如果属于 PVID,且 PVID 在 port 上有定义对映的 tagged/untagged vlan。这个时候不管 port 定义的是 tagged 还是untagged vlan,接口会将 PVID 从包中剥离发送出去。(比如上面描述的矛盾的情况)
- 如果不属于 PVID,且在 port 上有定义对映的 tagged/untagged vlan。则更具 tagged 或者 untagged 标识,将对映的 vlan id 打上或者剥离,再将包发送出去。
- 如果这个包的 vlan id 不再任何 tagged/untagged vlan 中,则丢弃。
其他
一台机器上可以配置多个不同的 access、trunk,hybrid 接口。
不同机器的 hybrid 口和trunk 口可以互联,如下图,
pc1 192.168.10.1 和 pc4 和 pc5 互相 ping 通。
PC>ping 192.168.10.3
Ping 192.168.10.3: 32 data bytes, Press Ctrl_C to break
From 192.168.10.3: bytes=32 seq=1 ttl=128 time=63 ms
From 192.168.10.3: bytes=32 seq=2 ttl=128 time=47 ms
From 192.168.10.3: bytes=32 seq=3 ttl=128 time=62 ms
From 192.168.10.3: bytes=32 seq=4 ttl=128 time=63 ms
From 192.168.10.3: bytes=32 seq=5 ttl=128 time=63 ms
--- 192.168.10.3 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/59/63 ms
PC>ping 192.168.10.4
Ping 192.168.10.4: 32 data bytes, Press Ctrl_C to break
From 192.168.10.4: bytes=32 seq=1 ttl=128 time=47 ms
From 192.168.10.4: bytes=32 seq=2 ttl=128 time=62 ms
From 192.168.10.4: bytes=32 seq=3 ttl=128 time=78 ms
From 192.168.10.4: bytes=32 seq=4 ttl=128 time=79 ms
From 192.168.10.4: bytes=32 seq=5 ttl=128 time=78 ms
--- 192.168.10.4 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/68/79 ms
** LSW1 **
[LSW1]display current-configuration interface Ethernet 0/0/1
#
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
return
[LSW1]display current-configuration interface Ethernet 0/0/3
#
interface Ethernet0/0/3
port hybrid tagged vlan 10
#
return
** LSW2 **
[LSW2]display current-configuration interface Ethernet 0/0/3
#
interface Ethernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10
#
return
[LSW2]display current-configuration interface Ethernet 0/0/2
#
interface Ethernet0/0/2
port link-type access
port default vlan 10
#
return
[LSW2]display current-configuration interface Ethernet 0/0/1
#
interface Ethernet0/0/1
port hybrid pvid vlan 10
port hybrid untagged vlan 10
#
return
参考:
https://support.huawei.com/enterprise/zh/doc/EDOC1100127233/f9b8a34a