前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >了解交换口的链路类型以及实际使用场景(access篇)

了解交换口的链路类型以及实际使用场景(access篇)

作者头像
网络之路一天
发布2024-01-08 19:15:57
1480
发布2024-01-08 19:15:57
举报
文章被收录于专栏:网络之路网络之路

VLAN在数据包中如何体现?

在上一篇实际测试了,从PC2访问PC1的时候,ARP请求广播包,只从E0/0/2发送给E0/0/3,这是因为两个口都配置成了accessvlan 10里面,那一个数据包过来交换机它具体是如何处理的呢?,这就要了解下VLAN以及access处理规则了。

  • VLAN在数据包中的体现

正常情况下,终端(个人电脑、手机、平板)服务器(非虚拟化场景)发出的数据包是不带VLAN标签的,叫做Untagged帧,以太网头部发出是什么样,就是什么样。

如果交换机的接口由管理员定义了某一个vlan,比如上图的vlan 10,那么当数据进入的时候它会执行一个操作,给这个以太网头部加入一个VLAN标签进去,这样交换机在转发的时候就知道,原来这个数据包是带有VLAN标签的,它就知道怎么进行转发操作了。为了保证所有厂商的交换机之间能够去识别带有VLAN的数据帧,并且进行对VLAN标签的处理,,IEEE组织推出了一个标准,叫做802.1Q。

vlan标签(vlan tag)字段由4个字节组成,内容

上一篇内容中,正式因为使用了VLAN技术,交换机利用VLAN标签中的VID来识别数据帧所属的VLAN,带有VLAN标签的数据帧只在同一个VLAN内转发,所以不管是ARP请求的广播报文还是未知单播帧这种泛洪操作,都被限制在了同一个VLAN内了。下面来了解下交换机具体是如何处理的。

  • 接口链路类型access处理规则

交换机在收到一个数据的时候,根据接口不同的链路类型会有不一样的操作,目前我们接触到的第一个链路类型是access,处理规则上面列出来了,可能第一次看理解不了,我们先看第一个规则,对接收不带Tag的报文处理,指的就是终端发出数据包的时候没有打VLAN标签的数据,标准的以太网头部,当这样一个数据抵达交换机的时候,交换机怎么处理呢?

  • PC2访问PC1的过程

(1)PC2想访问PC1,首先要知道PC1的MAC,于是发送ARP请求。二层头部:| 源MAC PC2 |目的MAc 全F | 类型(ARP)| ARP请求 PC1的MAC

(2)交换机E0/0/2收到包的时候,由于接口配置了类型为access,根据规则

PC2发出的数据是不带Tag,这时候交换机会在二层以太网头部打上对应的VLAN TAG,这个时候以太网头部变成了:| 源MAC PC2 | 目的MAC 全F | VLAN TAG 10| ARP请求 PC1 MAC

(3)交换机查看以太网头部,读取源MAC用于记录在MAC表中,体现为 PC2的MAC地址,从E0/0/2学习到,该接口属于VLAN 10;读取目的

MAC发现是全F,于是在除源接口所在VLAN内其他接口泛洪(存活接口),目前就E0/0/3属于VLAN 10,并且在线,所以数据包会从E0/0/3发出。

(4)交换机发现从E0/0/3发出,接口属于access模式,PVID=10,这个时候交换机会做一件事情,将数据帧包含的TAG剥离,然后在发送出去。

(5)PC1收到来数据包后,就是一个正常的以太网头部,读取处理后,进行ARP回应。

试想下,如果交换机不做剥离标签的处理,PC1会收到一个有标签的数据包,通常的PC终端是没办法处理带有标签的以太网头部的,最终会丢弃。

(1)PC1收到来自于PC2的请求后,PC1开始进行回应。 二层头部:| 源MAC PC1 |目的MAc PC2| 类型(ARP)| ARP回应

(2)交换机E0/0/3收到该包后,由于该接口配置了类型为access,根据规则

PC1发出的数据是不带Tag,这时候交换机会在二层以太网头部打上对应的VLAN TAG,这个时候以太网头部变成了:| 源MAC PC1 | 目的MAC PC2 | VLAN TAG 10 | ARP回应

(3)交换机查看以太网头部,读取源MAC用于记录在MAC表中,体现为 PC1的MAC地址,从E0/0/3学习到,该接口属于VLAN 10;读取目的

MAC发现为PC2,查询MAC表,走E0/0/2发出。

(4)交换机发现从E0/0/2发出,接口属于access模式,PVID=10,将数据帧包含的TAG剥离,然后在发送出去。

(5)PC2收到数据包后,读取untag的以太网头部,就得到了PC1的MAC了,后续的交互就跟这个流程一样。

通过上面的分析,在回过头来看这个处理规则是不是就容易懂了,这里在说下缺省的VLAN ID 在access中则为接口配置的ID(比如上面配置的default vlan 10),缺省VLAN ID=接口下配置的default vlan 对应的 id (对应华三的access vlanid),缺省VLAN ID有一个简称,叫做PVID。

总结:当交换机的接口处于Access模式时,收到一个untag(不打标签的数据帧时)会打上PVID,当带有VLAN的数据帧准备从接口发出去的时候,根据该接口也是access模式,会对数据帧的标签进行剥离标签,发送出去,最终PC收到的数据是untag的数据。

很多人可能会钻进一个牛角尖,出去的时候需要不需要检查数据包的VID与PVID一致吗?这个是不需要的,因为交换机在发送一个数据帧的时候,会查询MAC表,只有在该VLAN内的,它才会去发送,也就是说,交换机的MAC表转发机制就已经把相同VLAN一致的要求给检验了,所以从该接口出去的数据帧 VID肯定是等于PVID的,所以直接剥离PVID的Tag才不会出错。

  • 如果收到一个tag的报文后,该如何处理呢?

正常情况PC是无法发出打有tag的数据的,有的企业级网卡支持这个功能,假设某个客户端误设置了一个VLAN ID,那交换机会怎么处理呢?

对于规则,其实上面也提到了,但是光看不去感受,是不是觉得很抽象,正好eNSP模拟器支持这个功能,来测试下。(这里说下,并不是我偏爱eNSP,在搭建实验以及抓包、PC测试这块,eNSP确实要方便一些,大家学习起来更加容易理解,HCL的话都会有实验演示,所以学习华三的朋友不用担心。)

按照上图介绍,开启抓包、然后设置好PC2的参数(模拟器自带一个UDP发包工具,可以打VLAN。)点击发送

两边都收到包了。

在发一次VLAN ID是100的

这次PC1是没有收到这个UDP包的。

得到的结论是:当接口收到一个有TAG的数据包时,交换机会检查该tag的vid是否与接口配置的PVID一致,如果一致则通过,比如这里发出打上tag 10,接口属于VLAN 10是一致的,则通过,PC1收到了,如果不相同,比如后面发出打上tag 100,接口属于vlan 10,不一致,则丢弃,最终pc1没收到。

  • 抓包看看802.1Q

上面已经抓包了,直接来看看它的字段。

抓包跟字段介绍有点点不一样,是因为抓包给优化了

  • 第一个type其实就是TPID字段为 0x8100,
  • 第二个type才是以太网头部中的类型,上层为IPV4(0800)
  • priority=5,PC设置的5,所以这里抓包看到的也是5
  • DEI就是上面说的CFI,以太网值为0
  • id=10,指的就是vid,数据的TAG
  • 熟悉华三交换机配置

以一个小实验,来熟悉下华三的配置,G0/1与G0/3属于VLAN 10(同一个网段),G0/2的主机是另外一个网段,实现网段之间互不影响,进行VLAN划分隔离。

[H3C]vlan 10

[H3C-vlan10]vlan 20

[H3C-vlan20]quit

[H3C]interface range g1/0/1 g1/0/3

[H3C-if-range]port access vlan 10

[H3C-if-range]quit

[H3C]interface g1/0/2

[H3C-GigabitEthernet1/0/2]port access vlan 20

看来这个配置是不是有点奇怪,华三这边使用了一个便捷的方式,比如这里1口与3口都是要配置同样的属性,加入到VLAN 10里面,可以使用一个批量配置功能, interface range 后面跟需要的端口号就行,这样配置一个参数,匹配的端口号都会进行配置,华三另外一个不太一样的地方就是不需要配置 port link-type access ,因为华三接口类型默认就是工作在access,最后一个不太一样的是华三是 port access vlan ,华为是 port default vlan

来测试验证下(开启PC4的抓包,注意PC手动设置地址)

可以发现,抓包PC4是收不到任何的报文的,原理上面讲过了

看MAC地址表也是一样,学习到2个MAC地址,G1/0/1以及G1/0/3接口,VLAN是10,所以它是不会给PC4发送的,因为PC4默认属于VLAN20里面。

  • 实用的命令(细节部分建议看视频)

(1)查看当前VLAN有哪些

华为:display vlan 查看存在的VLAN以及对应接口; display vlan summary 查看当前创建了哪些VLAN。

华三:display vlan 查看当前创建了哪些VLAN;display vlan brief 查看存在的VLAN以及对应接口

(2)查看接口当前属于哪个VLAN,以及什么接口链路类型

华为:display port vlan 显示接口的链路类型以及属于的VLANID

华三:display interface brief 显示接口的链路状态、速率、链路类型与属于的VLAN ID

通用:display current-configuration interface:可以看到该接口当前的配置

(3)恢复接口配置

华为:某个接口想还原出初始化的状态,进入对应的接口下(1)undo port default vlan去掉对应的VLAN (2) undo port link-type,去掉配置的链路类型,还原成默认

华三:进入对应接口下default直接还原成默认配置(注意这个只有V7版本才支持)通用版本(V5 V7)可以使用undo portaccess vlan

(4)批量配置

华为华三有分老版本跟新版本,老版本,这里都介绍下。

新版本:华为华三都一样,可以通过 interface range来实现,华三上面的实验已经演示过,华为模拟器版本不支持,需要V2R5以后的版本。

老版本:

  • 容易遇到的故障(经验分享)

对于access模式来说,容易出错的地方在于接口加入VLAN的时候,把ID写错了,导致无法在同一个VLAN内进行传递,以及出去的时候无法剥离标签,另外建议多去做实验跟抓包,能够感受到数据包在整个转发过程中的变化,从而更容易理解access处理数据时候的规则。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络之路博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档