当前位置: 首页 > news >正文

Qinq技术介绍与实战

说明:本文介绍部分是我在网络收集整理并添加提供。

Qinq技术介绍与实战

 

 

Qinq介绍

     Qinq就是为用户提供一种较为简单的二层***隧道。最核心的思想就是将用户私网VLAN tag封装到公网VLANtag上,报文带着两层tag穿越服务商的骨干网络。在用户端口上使QinQ功能时,都会为每个用户分配一个Customer-ID。其中报文中的两层tag标签包括内层ce-vid--VLAN标签和外层pe-vid-Qint标签。

 

那么问题来了,为什么要带两层标签呢?

    我们知道,普通VLAN中的一个VLAN标签是用来区分用户的,但如果想要同时区分用户又区分业务类型,那该怎么办呢?下图是一个总公司下面连接了两个分支子公司,而各分支子公司中已对不同部门的员工采用了VLAN进行区分,但两个子公司中相同部门VLAN ID规划是重叠的。这样如果数据帧中只采用一层VLAN标签,总公司就无法区分数据是来自哪个子公司的也就无法针对不同子公司的数据进行任何处理了。

wKioL1gEuduxNUwbAAJDmxbLlTk292.png-wh_50 

     为了解决这个问题,我们可以设想在总公司的交换机上为各子公司创建了不同的VLAN。这样当连接对应子公司的总公司交换机端口收到数据帧后再在数据帧外面添加一层VLAN标签(此时数据帧中就有两层VLAN标签了,原来的VLAN标签称之为内层VLAN标签,新添加的称之为外层VLAN标签),如为子公司1和子公司2的数据帧分别添加的外层VLAN标签为VLAN 10VLAN 20,这样就可实现在总公司中对来自不同子公司的数据进行区分了,也可以对来自这两个子公司的数据提供不同的服务,即差分服务了。

 

     如上文问题中所说,VLAN是用来区别用户用的,即每个用户都会有一个自己的VLAN区域,可是实际中,服务提供商所提供的vlan ID资源不仅只有4094个,而且还需要服务提供商来管理用户的VLAN号,用户是没有权利来规划VLAN的。那么VLAN ID紧缺的的问题该怎么解决呢?

     QinQ协议就很好的解决了这个问题,它向用户提供一个唯一的公网VLAN ID,这个特殊的VLANID被称作Customer-ID,将用户私网VLAN tag封装在这个新的Customer-ID中,依靠它在公网中传播,用户私网VLAN ID在公网中被屏蔽,从而大大地节省了服务提供商紧缺的VLAN ID资源。如下图。

wKioL1gEuyfAqflfAAEf0g3-jiE976.png-wh_50 

 

     双层VLAN标签可以当作单层VLAN标签使用,即仅使用新添加的外层公网VLAN标签,内层私网VLAN可以作为数据来传输,整个数据帧中的VLAN标签由内、外双层VLAN标签共同决定,这样一来,就相当于可以使用的VLAN ID数量达到了4094×4094个了。以此来达到扩展VLAN空间的目的。通过这样的双层VLAN标签封装,可以使私网VLAN ID可以在公网上透传,既解决了用户VLAN ID的安全性问题和由用户自己规划私网VLAN ID的需求问题,又解决了ISPVLAN ID空间不足的问题,因为在ISP中可以为需要相互访问的用户配置相同的外层VLAN,也只需为来自同一用户网络的不同VLAN提供一个VLAN ID

 

QinQ小经典拓扑实战

一:实验拓扑图:

wKiom1gEufbRH3jHAADQEdMXV0E546.png-wh_50 

分析:

    PC1属于VLAN 10,此时的数据帧中被打入一层标签,是属于内层标签。数据帧在经过公司总部交换机时,再次被打伤VLAN 100 标签,此标签属于外部标签。经过路由器时, 会脱掉标签,终结掉tag,路由器会根据数据包中的源ip地址和目标ip地址与自己的ARP缓存表中进行匹配。从路由器出来之后会再次打上标签。

二:实验目标

1:实现解决VLAN ID 不够用的问题

2:理解数据帧的脱包过程(两层标签终结VLAN

3:实现不同地域相同部门的通信

三:实验代码

Sw2

[Huawei]vlan bat 10 20

[Huawei-Vlanif10]int e0/0/1

[Huawei-Ethernet0/0/1]port link-type access   

[Huawei-Ethernet0/0/1]port default  vlan 10

[Huawei-Ethernet0/0/2]int e0/0/2

[Huawei-Ethernet0/0/2]port link-type access   

[Huawei-Ethernet0/0/2]port default  vlan 20

[Huawei-Ethernet0/0/2]int e0/0/3

[Huawei-Ethernet0/0/5]port link-type trunk   

[Huawei-Ethernet0/0/5]port trunk allow-pass  vlan  10 20

 

Sw3

[Huawei]vlan 10    

[Huawei-vlan10]int e0/0/3

[Huawei-Ethernet0/0/3]port link-type  access  

[Huawei-Ethernet0/0/3]port default vlan 10

[Huawei-Ethernet0/0/3]int e0/0/2

[Huawei-Ethernet0/0/5]port link-type trunk  

[Huawei-Ethernet0/0/2]port trunk allow-pass  vlan 10

 

Sw1

[Huawei]vlan bat 100 200

[Huawei]int e0/0/1

[Huawei-Ethernet0/0/1]port link-type dot1q-tunnel

[Huawei-Ethernet0/0/1]port default vlan 100

[Huawei-Ethernet0/0/1]int e0/0/2

[Huawei-Ethernet0/0/2]port link-type dot1q-tunnel

[Huawei-Ethernet0/0/2]port default vlan 200

[Huawei-Ethernet0/0/2]int g0/0/1

[Huawei-GigabitEthernet0/0/1]port link-type trunk   

[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 100 200

 

R1

[Huawei]dhcp enable  

[Huawei]int g0/0/0.100

[Huawei-GigabitEthernet0/0/0.100]qinq termination pe-vid 100 ce-vid 10 to 20

[Huawei-GigabitEthernet0/0/0.100]ip add 192.168.10.1 24

[Huawei-GigabitEthernet0/0/0.100]dhcp select interface   

[Huawei-GigabitEthernet0/0/0.100]int g0/0/0.200

[Huawei-GigabitEthernet0/0/0.200]qinq termination pe-vid 200 ce-vid 10

[Huawei-GigabitEthernet0/0/0.200]ip add 192.168.20.1 24

[Huawei-GigabitEthernet0/0/0.200]dhcp  select interface    

 

测试

Pc1

wKiom1gEugHxfmdIAABWklgirNg988.png-wh_50 

#在同一公司分部上不同部门的员工不能通行

 

Pc3

wKioL1gEugqhZA77AACNBGSijJk022.png-wh_50 

#在不同抵御相同部门下的公司是可以通信的。

 

抓包分析

wKiom1gEuhKgpEmLAABhlkbOuo0990.png-wh_50 

#在路由器上抓reply包。如图外层为LAN 200,内层为VLAN 10,并且说明QinQ配置已经生效,

 

思考:

     PC 1 ping PC 3的回包过程中,数据帧到达路由器的时候,数据帧是否带有tag以及路由器是怎么区分回包走的是内层10的还是内层20的?

 

wKioL1gEuiDwEuh_AABJGiPBL50033.png-wh_50 

wKioL1gEuiuRB8iOAAAfhdmSPiA948.png-wh_50

#由上图得知,回包是带有两层tag的,在路由器的路由表中是记录的回包的路径的,所以数据帧是可以找到回包路的。


相关文章:

  • 搭建简易xss平台
  • Tomcat就是个容器,一种软件
  • php结合redis实现高并发下的抢购、秒杀功能
  • JAVA多线程(十三)模式-Thread Specific Storage
  • 开源大数据周刊-第26期
  • Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
  • Android 签名和哈希密钥
  • sql分组(orderBy、GroupBy)获取每组前一(几)条数据
  • mysql实现vsftp虚拟用户访问
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • makefile 一看就懂了
  • 统计服务连接状况
  • 什么是wall-clock time
  • Quartz 框架的应用
  • 直接启动tomcat时为tomcat指定JDK 而不是读取环境变量中的配置
  • SegmentFault for Android 3.0 发布
  • dva中组件的懒加载
  • Mysql数据库的条件查询语句
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (4)Elastix图像配准:3D图像
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (笔试题)合法字符串
  • (七)理解angular中的module和injector,即依赖注入
  • (一) springboot详细介绍
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 中插件式开发实现
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Core与存储过程(一)
  • .NET NPOI导出Excel详解
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET委托:一个关于C#的睡前故事
  • ??eclipse的安装配置问题!??
  • @RequestMapping 的作用是什么?
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • [IDF]被改错的密码
  • [leetcode] Longest Palindromic Substring
  • [LeetCode系列]子集枚举问题[无重复元素]
  • [linux c]linux do_div() 函数用法
  • [NOIP2018 PJ T4]对称二叉树
  • [php] 数据结构算法(PHP描述) 快速排序 quick sort