一次VLAN标签引发的网络事件的处置

一、背景介绍

事件背景:

  HZ某分公司新装一套业务系统,通过一条专线和BJ总公司连通。分配给HZ公司的ip地址为:a.b.c.X,掩码24位,网关a.b.c.1。BJ总公司网络管理员无法联系、相关配置未知。

故障现象:

  HZ分公司端光猫下来网线直连某台服务器(ip、掩码、网关设置好),能ping通网关a.b.c.1。

  光猫下来网线连接到二层Hub,所有服务器也连到该Hub,所有服务器能正常ping通网关a.b.c.1。Hub网口不够,且性能不佳,未采用。

  光猫下来网线连接UNIS S5600 Series交换机,该交换机为出厂配置,所有服务器之间能互通,但是均无法ping通网关。

二、原因分析

  光猫下来网线直接连接服务器,服务器能ping通网关。光猫下来网线连接S5600以太口G1/0/1(access模式,vlan 1),服务器连接S5600以太口G1/0/2(access模式,vlan 1),ping网关不通。

  从服务器直连光猫到达BJ对端交换机端口的数据包未带vlan tag,从S5600以太口G1/0/1(access模式)连接BJ对端交换机端口的数据包也未带vlan tag,所以出去的数据包是一样的。

  那么很可能接收到的数据包携带了vlan tag,服务器收到带vlan tag的数据包正常处理了。傻瓜机是不具备任何处理(修改,封装,处理封装等)数据的能力的,所以傻瓜交换机的转发原则,收到什么转发什么。而S5600以太口G1/0/1的PVID默认为1,如果收到数据包vlan tag不为1,S5600收到后直接丢弃。

三、wireshark抓包查看vlan tag

  将光猫网线直连电脑,wireshark抓包,查看接收到的数据包vlan tag为1016,说明这个C类段的vlan为1016。具体过程如下:

(一)先设置Wireshark

  1、打开Wireshark,点击 编辑–>首选项

  2、选择 外观 --> 列(中文版),对应appearance–>columns,并点击下方 + 按钮。

  3、添加命名 “Vlan”(大小写皆可),选择802.1Q VLAN id,并确认保存。

(二)修改电脑注册表

  1、打开电脑 网络和Internet设置,点击 以太网–>更改适配器设置。

  选择抓包的网口,右键 点击“属性”。

  选择Microsoft网络客户端,点击配置

  选择高级,找到Priority & VLAN(中文版为优先级和VLAN)并选择Enabled(中文版为使能),确定保存。

  选择详细信息,属性找到驱动程序关键字,记录值。

  2、在windows运行下查找regedit,进入注册表编辑器。

   进入HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007

  

  查看 MonitorModeEnabled的值是否为1,PreserveVlanInfoInRxPacket的值是否为1。若不存在,则新建 DWORD(32位),文件名分别为MonitorModeEnabled 、PreserveVlanInfoInRxPacket,设置值为1。设置完后重启电脑。

(三)wireshark抓包查看vlan tag

数据包分析:

  IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag。VLAN帧最小帧长为64字节。

  VLAN帧格式:

  1、Destination address:6字节,目的MAC地址。

  2、Source address:6字节,源MAC地址。

  3.1、Type:2字节,长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

  3.2、PRI:3比特,Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当阻塞时,优先发送优先级高的数据包。

如果设置用户优先级,但是没有VLANID,则VLANID必须设置为0x000。

  3.3、CFI:1比特,CFI (Canonical Format Indicator),长度为1比特,表示MAC地址是否是经典格式。CFI为0说明是标准格式,CFI为1表示为非标准格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。

  3.4、VID:12比特 ,VLAN ID,长度为12比特,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。0和4095协议中规定为保留的VLAN ID。三种类型:Untagged帧:VID 不计;Priority-tagged帧:VID为 0x000;VLAN-tagged帧:VID范围0~4095。三个特殊的VID:0x000:设置优先级但无VID;0x001:缺省VID;0xFFF:预留VID。

  4、Length/Type:2字节/指后续数据的字节长度,但不包括CRC检验码。

  5、Data:42~1500字节/负载(可能包含填充位)。

  6、CRC:4字节/用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

  0x81 00时表示802.1Q Tag帧,0x 3f8为VLAN ID,转换成十进制为1016。如下图:

四、解决方法

(一)H3C交换机设备上access、trunk、hybrid端口的处理流程

(1)access端口

  发送(从交换机内部往外发送):

    带有vlan tag:删除tag后,发送

    不带vlan tag:不可能出现

  接收

    带有vlan tag:若该tag等于该access端口的pvid,则可以接收,进入交换机内部

    不带vlan tag:添加该access端口的pvid,进入交换机内部

(2)trunk端口(允许发送native VLAN数据的时候,可以不加tag)

  发送(从交换机内部往外发送):

    带有vlan tag:若tag等于该trunk端口的pvid,则删除tag后发送;否则保留tag直接发送

    不带vlan tag:不可能出现

  接收

    带有vlan tag:保留该tag,进入交换机内部

    不带vlan tag:添加该trunk端口的pvid,进入交换机内部

(3)hybrid端口(允许发送多个VLAN数据的时候,可以不加tag)

  发送(从交换机内部往外发送):

    带有vlan tag:是否带tag进行发送,取决于用户配置(用户可以配置tagged list,untagged list)

    不带vlan tag:不可能出现

  接收

    带有vlan tag:保留该tag,进入交换机内部

    不带vlan tag:添加该hybrid端口的pvid,进入交换机内部

  注:数据帧在交换机内部处理时,均带有vlan tag。

(二)对端互联端口配置分析

  对端交换机和我互联端口不可能为access口(access口删除tag后再发送出去)。

  若为trunk口:(1)trunk口发送规则为:若tag等于该trunk端口的pvid,则删除tag后发送;否则保留tag直接发送。说明该端口的pvid不可能为1016。(2)其接收规则为:不带vlan tag的包添加该trunk端口的pvid,进入交换机内部  。而电脑直连能和网关通又要求trunk端口的pvid为1016。所以不成立。

  对端和我互联交换机端口则为hybrid端口。该端口pvid为1016(接收不带vlan tag时添加该hybrid端口的pvid,进入交换机内部)。1016在tagged list中(发送带有vlan tag时是否带tag进行发送,取决于用户配置)。

(三)我端交换机S5600配置。

  满足:(1)对端发过来的vlan tag 1016能接得住;(2)发过去的要么不带vlan tag,要带就带1016即可。

  连接服务器的端口配置:access模式,vlan 1016。

  与对端交换机互联口配置:(1)若为access模式,该端口pvid设置为1016即可。(2)若为trunk模式,该端口pvid不为1016,且允许1016过即可。(3)若为hybrid模式,将vlan 1016配置为tagged list,允许1016过即可。

一次VLAN标签引发的网络事件的处置的更多相关文章

  1. WebView 实现JS效果和a标签的点击事件

    目前很多android app都可以显示web页面的界面,嵌入式开发,这个界面一般都是WebView这个控件加载出来的,学习该控件可以为你的app开发提升扩展性. 先说下WebView的一些优点: 可 ...

  2. img标签中的onerror事件

    img标签中有一个onerror事件.是当我引用的src属性获取不到图片或者网络错误导致无法正常显示我src属性的图片时,显示的提示错误图片或者是可以代替的万能图片. 用法: <img src= ...

  3. 浅析 Nginx 网络事件

    Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件.在深入了解 Nginx 各种原理及在极端场景下的一些错误场景处理时,需要 ...

  4. 关于a标签自身的click事件所带来的一些影响

    众所周知a标签自身带有点击事件<a href="#"></a>从它本身的特性来讲并没有什么不好的影响,但是如果你在a标签里又加入onclick事件则< ...

  5. 利用epoll写一个"迷你"的网络事件库

    epoll是linux下高性能的IO复用技术,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.另一点原因就是获取 ...

  6. 绝对实用 NAT + VLAN +ACL管理企业网络

    在企业中,要实现所有的员工都能与互联网进行通信,每个人各使用一个公网地址是很不现实的.一般,企业有1个或几个公网地址,而企业有几十.几百个员工.要想让所有的员工使用这仅有的几个公网地址与互联网通信该怎 ...

  7. a标签中有点击事件

    我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...

  8. 深入A标签点击触发事件而不跳转的详解

    本文介绍下,当点击A标签时,触发事件但不跳转的实现方法,有需要的朋友参考下吧. 点击页面上的空链接,点击后页面自动刷新,并会定位到页面顶端. 不过,有时需要点击#页面但不作跳转,可以这样写: < ...

  9. 在js中拼接<a>标签,<a>标签中含有onclick事件,点击无法触发该事件

    我们在<a>标签中添加事件一般是onclick="editUser()" 这样添加,在html页面上是行的通的 但是如何你是在js中拼接<a>标签并在< ...

随机推荐

  1. SVG path d Attribute

    Scalable Vector Graphics (SVG) 1.1 (Second Edition) W3C Recommendation 16 August 2011 http://www.w3. ...

  2. Web 前端如何优雅的处理海量数据

    Web 前端如何优雅的处理海量数据 Q: 如何在 Web 页面上处理上亿条后端返回的数据,并且保证 UI 展示的流畅性 A: 思路: 时间分片, 批处理,Buffer 缓存,虚拟滚动,Web Work ...

  3. how to remove duplicates of an array by using js reduce function

    how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ...

  4. Immutable.js 实现原理

    Immutable.js 实现原理 Immutable collections for JavaScript v4.0.0-rc.12 released on Oct 31, 2018 https:/ ...

  5. MacBook Pro 关闭触控板

    MacBook Pro 关闭触控板 https://support.apple.com/zh-cn/HT204895 https://support.apple.com/zh-cn/HT203171 ...

  6. project config generator

    project config generator React, Vue, https://createapp.dev/ parcel https://parceljs.org/ https://git ...

  7. 聊聊CacheLine

    本文转载自聊聊CacheLine 导语 文章聊聊缓存一致性协议中我们提到过,缓存里面最小的单位是缓存行/缓存条目,但是缓存中的具体存储结构是什么样的,缓存行中有存放的是什么?在缓存中是如何寻找指定是还 ...

  8. 文件I/O的内核缓冲

    本文转载自文件 I/O 的内核缓冲 导语 从最粗略的角度理解 Linux 文件 I/O 内核缓冲(buffer cache),啰嗦且不严谨.只为了直观理解. 当我们说一个程序读写磁盘上的文件时,通常指 ...

  9. 微信小程序(一)-工具创建和结构配置说明 Stable Build

    按装前特别说明: windows最好下载32位的,不然用到用到后面就出现"网络连接失败",然后就登录不上去了,打不开编辑器了! 问题 : 微信开发者工具网络连接失败, " ...

  10. svn报错Previous operation has not finished; run 'cleanup' if it was interrupted