深入理解Access和Trunk端口的报文收发规则

简介:

下面的内容摘自一年多来一直热销不断的《Cisco/H3C交换机配置与管理完全手册》图书。     

  许多朋友对Cisco交换机中的Access和Trunk二层端口的报文收发规则的理解都只停留在表面,根本没有真正理解其本质,这样一来在遇到问题时就无法从原理上来进行故障分析和排除。下面先介绍笔者自己总结的Access和Trunk端口报文收\发规则,然后再通过一个故障排除示例加深大家对这两种二层端口的报文收发规则的理解。

   Access端口的报文收发规则如下:
   Access端口在收到一个报文( Access 端口通常是从终端 PC 中接收报文 )后,先判断该报文中是否有VLAN标记信息:如果没有VLAN标记,则打上该Access端口的PVID后继续转发( 毕竟 Access 端口收到报文后是向其他端口发送的,可以识别带有 VLAN 标记的报文 );如果有VLAN标记( 这个报文肯定是来自其他非 Access 端口和终端 PC ,因为 Access 端口和终端 PC 网卡不会发送带 VLAN 标记的报文 ),则默认直接丢弃。

   Access端口上发送报文时,会先将报文中的VLAN信息去掉(因为Access端口发送报文一般是到终端PCPC中的网卡是不能识别VLAN标记的。还有一种情况是发送到另一个同VLAN中的Access端口,因为Access端口也不接受带有VLAN标记的报文),然后再直接发送,所以Access端口发关出去的报文都是不带VLAN标记的。4-1是根据上面介绍的Access端口接收或发送报文规则而例举的示例(表中的VLAN 2VLAN 3只是其中的两个VLAN例,实际上可为其他任意已激活的VLAN)。

082109364.jpg

  Trunk端口的报文收发规则如下:
在Trunk端口上发送报文时,先会将要发送报文的VLAN标记与Trunk端口的PVID进行比较, 如果与 PVID 相等,则从报文中去掉VLAN 标记再发送;如果与PVID 不相等,则直接发送。这样一来,如果将交换机级连端口都设置为Trunk,并允许所有VLAN通过后,默认情况下除VLAN 1外的所有来自其他VLAN中的报文将直接发送(因为这些VLAN不是Trunk端口的默认VLAN),而作为Trunk端口默认VLAN的VLAN 1,则需要通过去掉报文中的VLAN信息后再发送。
   在Trunk端口收到一个报文时,会首先判断是否有VLAN信息: 如果没有 VLAN 标记,则打上该Trunk 端口的PVID ,视同该帧是来自PVID 所对应的VLAN 转发到PVID 所对应的VLAN 接口上;如果有VLAN 标记,判断该Trunk 端口是否允许该VLAN 的报文进入,如果允许则直接转发,否则丢弃
   表4-2是根据上面介绍的Trunk端口接收或发送报文规则而例举的示例(表中的VLAN 2、VLAN 3只是其中的两个VLAN例,实际上可为其他任意已激活的VLAN)。

082131887.jpg

   下面通过一个因PVID设置不当造成的网络故障的排除方法来加深对Access和Trunk端口数据收发规则的理解。图4-1中,SW1与R1之间,SW1和SW2之间的连接链路都是Trunk链路,允许网络中所有VLAN的数据通过。并设置SW1的f0/2 Trunk接口的PVID=1,SW2的f0/1 Trunk接口的PVID=2,PC2~5各自属于自己的VLAN,为Access端口。现只有PC2无法上网。

082231255.jpg

            图4-1 Access和Trunk端口收发规则解析示例
   这时我们首先分析一下PC2在上网时发送的数据帧流程:首先PC2是向所连接的Access端口发送不带VLAN标记的帧,所连的Access端口接收到这个帧后打开它所属的VLAN 2的标记转发到达SW2的f0/1 Trunk端口,经过比较发现所收到的数据帧的VLAN标记(2)与SW2的f0/1 Trunk端口的PVID(2)一样,所以此时SW2的f0/1 Trunk端口会为把这个数据帧去掉VLAN标记转发到SW1的f0/2 Trunk端口。此时因为SW1的f0/2 Trunk端口收到的数据包没有VLAN标记,则直接把它打上与SW1的f0/2 Trunk端口PVID(1)对应的VLAN 1标记,然后错误地把它转发到VLAN 1所对应的VLAN接口上,所以造成PC2不能上网。
   现在再来看一下其他几台机为什么能正常上网,以PC3为例。
   PC3连接的也是SW2上的一个Access端口,发送的帧也是不带标记的,所连的Access端口接收到这个帧后打开它所属的VLAN 3的标记转发到达SW2的f0/1 Trunk端口,经过比较发现所收到的数据帧的VLAN标记(3)与SW2的f0/1 Trunk端口的PVID不一样,所以此时SW2的f0/1 Trunk端口会为直接转发这个数据帧到SW1的f0/2 Trunk端口。SW1的f0/2 Trunk端口再比较自己的PVID(1)与所收到的数据帧VLAN 标记(3),发现不一样,直接转发,所以PC3是能上网。其他的PC4、PC5与PC3的数据发送流程是一样。
  从以上分析可以看出,造成PC2不能上网的根本原因就在于从访问端口发送的数据帧的VLAN标记与SW2的f0/1 Trunk端口的PVID(2)一样,所以造成转发后的数据帧是不带VLAN标记的,最后被SW1的f0/2 Trunk端口错误地把这些数据帧直接转发到了它所属的VLAN中,而不是正确地发到对应的VLAN中。这时如果把SW2的f0/1 Trunk端口的PVID设置成其他PC机在VLAN的VLAN ID,则对应的VLAN中的PC机就不能上网了。所以在这种情况下,只有把SW2的f0/1 Trunk端口的PVID设置不包括网络中PC机所在VLAN的VLAN ID(本示例中如设置为1)就可以确保各VLAN中的PC都可以上网。这样就可以得出这样一条经验:要确保网络中所有VLAN用户都能上网,则需要把Trunk端口的PVID设置成非上网用户所在VLAN的VLAN ID。

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/555280如需转载请自行联系原作者


茶乡浪子

相关文章
|
6月前
|
Linux 网络安全
Linux - firewall-cmd 命令添加端口规则不生效排查
Linux - firewall-cmd 命令添加端口规则不生效排查
451 0
|
网络安全 数据安全/隐私保护 网络架构
【防火墙】iptables定义、iptables规则修改、常用端口号
文章目录 前言 一、概述 二、iptables(Centos5/6防火墙
342 0
【防火墙】iptables定义、iptables规则修改、常用端口号
|
Linux 网络安全
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
3436 0
|
1月前
|
存储 运维 安全
|
2月前
|
网络虚拟化
网络实验 VlAN 中 Trunk Access端口的说明及实验
本文介绍了VLAN技术及其在网络实验中的应用,包括Access端口和Trunk端口的工作原理,以及如何通过实验划分不同VLAN实现内部通信和跨交换机实现VLAN间通信的详细步骤和配置。
网络实验 VlAN 中 Trunk Access端口的说明及实验
|
3月前
|
JSON 安全 网络协议
【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问
为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。
|
3月前
|
网络协议 Linux
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
|
6月前
|
网络虚拟化 网络架构
|
6月前
|
弹性计算 运维 Shell
|
弹性计算 网络协议 安全
阿里云服务器开放端口教程(通过配置安全组规则)
阿里云服务器开放端口教程(通过配置安全组规则)阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
1834 0