首页 > 其他分享 >了解交换口的链路类型以及实际使用场景(access篇)

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

时间:2023-11-05 23:02:05浏览次数:33  
标签:10 场景 VLAN 接口 access MAC 交换机 链路 vlan


作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)

VLAN在数据包中如何体现?


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


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


VLAN在数据包中的体现

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

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

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

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

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

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

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


接口链路类型access处理规则



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

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


PC2访问PC1的过程



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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发出。

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

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

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

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

通过上面的分析,在回过头来看这个处理规则是不是就容易懂了,这里在说下缺省的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,那交换机会怎么处理呢?

          

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

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

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

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

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

两边都收到包了。

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

在发一次VLAN ID是100的

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

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

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


  • 抓包看看802.1Q

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

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

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

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


熟悉华三交换机配置

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


以一个小实验,来熟悉下华三的配置,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 后面跟需要的端口号就行,这样配置一个参数,匹配的端口号都会进行配置,华三另外一个不太一样的地方就是不需要配置 ,因为华三接口类型默认就是工作在access,最后一个不太一样的是华三是 port access vlan ,华为是 port default vlan


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

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


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

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

看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篇)_数据_23

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

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

 

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

 作者:网络之路一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。

标签:10,场景,VLAN,接口,access,MAC,交换机,链路,vlan
From: https://blog.51cto.com/ccieh3c/8196608

相关文章

  • 前端javasript——forEach、map、filter和reduce的使用场景
    (文章目录)⭐前言大家好,我是yma16,不止前端,本文分享关于前端javasript——forEach、map、filter、reduce区别与使用。自我介绍前端->全栈开发,csdn内容合伙人,2023csdn新星计划Node赛道Top1,csdn2023新星计划vue3+ts赛道导师,阿里云社区专家博主,华为云享专家,前端技术栈:vue2v......
  • uniapp小程序小bug,扫码进入小程序场景值为1001的情况之一。
    首先,这个问题原因是这样的用户第一次扫码进入小程序在app.vue的onLaunch下拿不到optiond的query对象的值场景值为1001,按照正常来说扫码进来应该是1047。排查原因只有用户在打开小程序的情况下没有杀掉进程只是切换页面到微信主页进行扫码进入小程序,结果就会出现扫码进入小程序的......
  • Flutter开发遇到The instance member 'widget' can't be accessed in an initializer.
    问题描述Theinstancemember'widget'can'tbeaccessedinaninitializer.问题原因"Theinstancemember'widget'can'tbeaccessedinaninitializer"错误是因为在初始化器列表中(constructorinitializerlist)访问了widget成员。这是因为在构造函数的初始化器......
  • AI问答:关于字符串匹配算法的区别及应用场景,哈希/kmp/字典树/AC自动机
    1. 哈希(Hashing):哈希是一种将字符串转换为唯一标识符的技术,通常用于字符串的快速查找和比较。实现难度相对较低,但需要处理哈希冲突的问题。哈希在处理大量数据的查找和比较问题时非常实用。2. KMP(Knuth-Morris-Pratt):KMP 是一种用于字符串匹配的算法,特别适用于查找子串在主串中的......
  • 了解交换口的链路类型以及实际使用场景(access篇)
    作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)VLAN在数据包中如何体现?在上一篇实际测试了,从PC2访问PC1的时候,ARP请求广播包,只从E0/0/2发送给E0/0/3,这是因为两个口都配置成了accessvlan10里面,那一个数据包过来交换机它具体是如何处理的呢?,这就要了解下VLAN以及access处理......
  • 在公共安全场景下,智能监控如何做到保障安全的同时又最大化地提供便利?
    智能监控系统应用的场景十分广泛,其中,公共安全场所的需求尤为重要,为保障公共区域的安全,提升人民群众的归属感,增强公共场所的安全性,智慧安防EasyCVR智能视频监控系统做出了极大努力。具体细节如下:1、预防犯罪智能视频监控系统可以通过实时监控公共场所,帮助预防犯罪行为。例如,摄像头可......
  • TSINGSEE青犀智能分析网关人员徘徊AI算法应用场景概述
    我们的AI边缘计算网关硬件——智能分析网关目前有5个版本:V1、V2、V3、V4、V5,每个版本都能实现对监控视频的智能识别和分析,支持抓拍、记录、告警等,每个版本在算法模型及性能配置上略有不同。硬件可实现的AI检测包括:人脸结构化数据、车辆结构化数据、场景检测类算法、行业类检测算......
  • 在公共安全场景下,智能监控如何做到保障安全的同时又最大化地提供便利?
    智能监控系统应用的场景十分广泛,其中,公共安全场所的需求尤为重要,为保障公共区域的安全,提升人民群众的归属感,增强公共场所的安全性,智慧安防EasyCVR智能视频监控系统做出了极大努力。具体细节如下:1、预防犯罪智能视频监控系统可以通过实时监控公共场所,帮助预防犯罪行为。例如,摄......
  • 为什么要强调AI技术与边缘智能结合?应用场景有哪些?
    随着城市规模扩大所带来的公共安全问题越来越受到重视。传统城市安全视频监控系统前端摄像机内置计算能力较低,以边缘计算和万物互联技术为基础的新型视频监控系统是未来发展趋势。在移动计算和物联网进步的推动下,数十亿移动和物联网设备连接到互联网,在网络边缘生成数以亿计的数据字......
  • 浅述边缘计算场景下的云边端协同融合架构的应用场景示例
    云计算正在向一种更加全局化的分布式节点组合形态进阶,而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快,海量设备产生的数据,若上传到云端进行处理,会对云端造成巨大压力。如果利用边缘计算来让云端的能力下沉,则可以很好地解决海量数据的处理问题,让云端的数据......