Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >QinQ、VLAN Mapping原理和配置「建议收藏」

QinQ、VLAN Mapping原理和配置「建议收藏」

作者头像
全栈程序员站长
发布于 2022-09-22 23:30:59
发布于 2022-09-22 23:30:59
1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

我唯一知道的就是我一无所知。 —苏格拉底

文章目录

一、QinQ 基本原理

QinQ是指在802.1Q VLAN的基础上增加一层802.1Q VLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。

1、QinQ 报文封装格式

QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签,QinQ报文比802.1Q报文多四个字节。

2、QinQ配置

(1)QinQ功能可以为已存在VLAN标签的数据再次封装指定VLAN,使得数据携带二层VLAN标签。 (2)只有Hybrid及Trunk类型的接口支持此功能。 (3)针对外层标签,需要在QinQ配置接口配置untagger,拆除外层标签,用户vlan无需放行或者剥离标签。

二、VLAN Mapping 基本原理

1、交换机收到数据报文后,根据是否带有Tag做以下两种处理:

(1)数据报文带Tag,根据配置的VLAN Mapping方式,决定替换单层、双层或双层中的外层Tag;然后进入MAC地址学习阶段,根据源MAC地址+映射后的VLAN ID刷新MAC地址表项;根据目的MAC+映射后VLAN ID查找MAC地址表项,如果没有找到,则在VLAN ID对应的VLAN内广播,否则从表项对应的接口转发。

(2)数据报文不带Tag,根据配置的VLAN划分方式决定是否添加VLAN Tag,对于不能加入VLAN的数据报文上送CPU或丢弃,否则添加Tag;然后进入MAC地址学习阶段,按照二层转发流程进行转发。

2、映射方式

设备支持基于VLAN、802.1p优先级和MQC方式实现VLAN Mapping,其中基于VLAN的VLAN Mapping包括以下映射方式:

(1)1 to 1的映射方式

当部署VLAN Mapping功能设备上的接口收到带有单层VLAN Tag的报文时,将报文中携带的单层VLAN Tag映射为公网的VLAN Tag。包括1:1和N:1两种方式,其中1:1的方式是将指定的一个用户侧VLAN Tag标签映射到一个网络侧VLAN Tag标签,N:1的方式是将指定范围的多个用户侧VLAN Tag标签映射到一个网络侧VLAN Tag标签。

(2)2 to 1的映射方式

当部署VLAN Mapping功能设备上的接口收到带有双层VLAN Tag的报文时,将报文中携带的外层Tag映射为公网的Tag,内层Tag作为数据透传。

(3)2 to 2的映射方式

当部署VLAN Mapping功能设备上的接口收到带有双层VLAN Tag的报文时,将报文中携带的双层VLAN Tag映射为公网的双层VLAN Tag。基于MQC实现VLAN Mapping指的是通过MQC可以对分类后的报文实现VLANMapping。用户可以根据多种匹配规则对报文进行流分类,然后将流分类与VLANMapping的动作相关联,对匹配规则的报文重标记报文的VLAN ID值。基于MQC的VLAN Mapping能够针对业务类型提供差别服务。

3、Vlan-Mapping配置

(1)Vlan-Mapping功能可以为替换已经存在VLAN标签的数据,并且在带有映射后数据返回时自动还原数据之映射前的标签。 (2)只有Hybrid及Trunk类型的接口支持此功能。 (3)对于Vlan-Mapping接口只需tagger 映射后的标签,无需配置untagger,用户vlan无需放行或者剥离标签。

三、拓扑

四、配置与分析

1、ISP向A公司和B公司提供二层接入的VLAN为VLAN 100。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[SW-1]vlan 100

2、A公司的同VLAN需要跨域运营商二层网络实现同VLAN成员互通。 (使用QinQ实现这一需求)

LSW3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[SW-3]vlan batch 10
[SW-3]int g0/0/1
[SW-3-GigabitEthernet0/0/1]port link-type trunk
[SW-3-GigabitEthernet0/0/1]port trunk allow-pass vlan all
[SW-3]int e0/0/1
[SW-3-Ethernet0/0/1]port link-type access
[SW-3-Ethernet0/0/1]port default vlan 10

LSW1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[SW-1]v 100
[SW-1]int g0/0/1
[SW-1-GigabitEthernet0/0/1]port hybrid untagged vlan 100
//配置此接口可以放行并且拆除带有vlan 100标签的数据(如果有多层标签,只拆除外层标签)
[SW-1-GigabitEthernet0/0/1]qinq vlan-translation enable  //开启此接口的qinq多vlan标签处理功能
[SW-1-GigabitEthernet0/0/1]port vlan-stacking vlan 10 stack-vlan 100
//配置此接口收到带有vlan 10标签的数据后再次封装外层标签为vlan 100
[SW-1-GigabitEthernet0/0/1]int g0/0/24
[SW-1-GigabitEthernet0/0/24]port link-type trunk
[SW-1-GigabitEthernet0/0/24]port trunk allow-pass vlan all

[SW-1]dis vlan 100 verbose

LSW2、LSW5配置类似

PC1 ping 192.168.1.103(PC3)

3、B公司的不同VLAN成员跨域运营商二层网络后实现互通。 (是用Vlan-Mapping实现这一需求)

LSW4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[SW-4]vlan 24
[SW-4-vlan24]quit
[SW-4]int e0/0/2
[SW-4-Ethernet0/0/2]p l a
[SW-4-Ethernet0/0/2]p d v 24
[SW-4-Ethernet0/0/2]int g0/0/2
[SW-4-GigabitEthernet0/0/2]p l t 
[SW-4-GigabitEthernet0/0/2]p t a v 

LSW1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[SW-1]int g0/0/2
[SW-1-GigabitEthernet0/0/2]port hybrid tagged vlan 100	 //此接口放行映射后的标签 
[SW-1-GigabitEthernet0/0/2]qinq vlan-translation enable  //开启此接口的qinq多vlan标签处理功能 
[SW-1-GigabitEthernet0/0/2]port vlan-mapping vlan 24 map-vlan 100
//此接口收到带有vlan 24标签的数据将标签替换为vlan 100转发,在SW内部收到带有vlan 100的数据自动还原标签为vlan 24
[SW-1-GigabitEthernet0/0/2]quit

LSW2、LSW6配置类似

抓包 SW-1接口下g0/0/24

PC2 ping 192.168.1.104(PC4)

五、总结

对实验总结

① 收到不带标签的数据,封装PVID所在的标签 ② 带有指定标签的数据,收到vlan 10再封装一层vlan 100 ③ 非指定标签的数据,丢弃

(1)QinQ,携带标签进入发出时,查看外层标签 (2)QinQ,离开拆除标签时,只拆除外层标签

1、QinQ的部署

(1)基本QinQ,接口下收到任何数据都会封装指定的标签 (2)灵活QinQ,可以针对接收到的数据依据不同的特征添加不同的外层标签

2、特征:

(1)数据的源和目的—-IP/MAC (2)VLAN标签 (3)传输层协议+端口 (4)优先级-801.1p—-dot1q—-DSCP

3、Hybrid QINQ

(1)配untagger—营商添加的标签 (2)并启接口的Qino传输功能

VLAN–高级特性–打破常规

多对一的映射–块射设备会记录映射前数据MAC与VLAN的关系,还原时按照此表项。

QinQ核心作用: 为携带标签的数据再次封装新的标签,至于多层表的转发与拆除与qinq配置无关。

vlan映射和qinq的区别一个对vlan进行替换,一个是重新封装新的标签,正因为如此,针对vlan映射接口的配置试试带tagger放行替换后的标签。对于qinq是 untagger多添加的一层标签; 另外在vlan映射这个地方,当数据回程,还原用户标签时是基于用户数据进来时记录此数据源mac地址和用户自身的vlan标签,当收到回程用户数据先将数据从SW内部引导至进行vlan映射的接口,在基于之前此mac地址的数据对应额vlan 进行还原。

我是艺博东,一个人知道的越多,越能明白自己的无知。也欢迎你和我一起讨论,我们下期见。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169378.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring boot 整合MyBatis Generator自动生成动态sql代码
最近使用mybatis时,看到一篇文章使用yml配置来简化MyBatis Generator默认使用的xml配置,就想着使用人家提供的MyBatis Generator去自动生成一些bean,动态mapper文件。
jiankang666
2022/05/12
1.3K0
spring boot 整合MyBatis Generator自动生成动态sql代码
Mybatis generator 1.4.x 入门教程--转载
​ 最近因为公司开了新的项目,所以在构建骨架的时候发现mybatis最新的版本已经更新到了1.4.0了,尝试了一下,比起之前的mybatis版本,有了更好的优化,用上了lamada表达式,还支持动态sql查询,所以在这里安利一波,因为之前我用的Laravel ORM,所以比较习惯使用这种lamada表达式来查询,可能之前用习惯了以前的查询方式的
allsmallpig
2021/02/25
1.1K0
Mybatis代码生成器Mybatis-Generator使用详解
最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体、Mapper接口和映射文件。其中,代码生成器是MyBatis Generator(MBG),用到了Mybatis-Generator-Core相关依赖,这里通过一篇文章详细地分析这个代码生成器的使用方式。本文编写的时候使用的Mybatis-Generator版本为1.4.0,其他版本没有进行过调研。
Throwable
2020/06/23
6.3K0
解放双手!MyBatis官方代码生成工具给力!
MyBatis Generator(简称MBG)是MyBatis官方提供的代码生成工具。可以通过数据库表直接生成实体类、单表CRUD代码、mapper.xml文件,从而解放我们的双手!
macrozheng
2021/01/06
1.2K0
解放双手!MyBatis官方代码生成工具给力!
5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解
本文我们主要实战Mybatis官方的代码生成器:Mybatis Generator(MBG),掌握它以后,可以简化大部分手写代码,我们只需要写复杂逻辑代码!
天罡gg
2023/10/13
10.3K0
5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解
MyBatis这样用,同事直呼哇塞,堪称最佳实践!
MyBatis是一款优秀的开源持久层框架,支持自定义SQL查询、存储过程和高级映射,目前在Github上已有17k+Star。在MyBatis中,我们可以在XML中编写SQL语句,然后绑定到Java方法中,通过参数和结果集的自动映射来实现复杂的查询逻辑。MyBatis消除了几乎所有JDBC操作和手动绑定参数操作,使用起来非常方便!
macrozheng
2022/12/14
5050
MyBatis这样用,同事直呼哇塞,堪称最佳实践!
Spring boot Mybatis-XML方式通用Mapper插件之MyBatis Geneator详解(六)
Github地址:https://github.com/AlanWalkerGuo/GeneratorMapper
楠楠
2018/09/11
1.5K0
MBG部分配置技巧
常见的配置以及简单的生成功能在网上已经很多资料。有些难以关注甚至被忽略的点这里备注一下。
二锅头一桶天下
2024/06/06
900
Spring Security实现RBAC权限管理
在企业应用中,认证和授权是非常重要的一部分内容,业界最出名的两个框架就是大名鼎鼎的
小忽悠
2018/08/27
5.2K0
mall整合SpringBoot+MyBatis搭建基本骨架
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-01
macrozheng
2019/07/22
7230
mall整合SpringBoot+MyBatis搭建基本骨架
tk mapper和mybatis plus_dozermapper
TK mapper(通用Mapper)和MP mapepr(MyBatis-Plus)是mybatis两大插件,功能相同,都提供了常规的增删改查操作,增强mybatis的功能,篇幅有限,文章仅说下两者的区别!
全栈程序员站长
2022/11/10
3.4K0
tk mapper和mybatis plus_dozermapper
MyBatis Generator逆向工程-你还在手写mapper吗?
简单来说,Mybatis逆向工程可以根据数据库的表来逆向生成相关java代码和sql语句,如mapper.java,mapper.xml。虽然mapper接口及其配置文件我们完全可以自己写,不过当表数量很多,关联复杂时,用MyBatis Generator逆向工程就十分方便了。当然了,我们也可以根据业务逻辑修改其生成的mapper。
唔仄lo咚锵
2020/09/15
2.5K0
mybatis逆向工程
就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。
西西嘛呦
2020/08/26
5790
mybatis逆向工程
技术汇总:第十五章:MyBatisGenerator数据层代码生成
第一步:pom.xml <dependencies> <dependency> <groupId>com.macro.mall</groupId> <artifactId>mall-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- MyBatis 生成器 --> <dependen
Java廖志伟
2022/09/28
2000
基于Spring MVC + Spring + MyBatis的【密室逃脱游戏主题排行榜】
密室逃脱游戏越来越受年轻人的喜欢,现在将各地密室游戏主题进行排名,评选2021年度最受玩家喜欢的密室主题。
全栈程序员站长
2022/08/25
1.1K0
基于Spring MVC + Spring + MyBatis的【密室逃脱游戏主题排行榜】
mall-tiny:基于SpringBoot+MyBatis的单应用项目骨架
本项目启动需要依赖MySql、Elasticsearch、Redis、MongoDb、RabbitMq等服务,安装依赖服务请参考mall在Windows环境下的部署,数据库中需要导入mall_tiny.sql脚本。
macrozheng
2019/08/13
1.4K0
mall-tiny:基于SpringBoot+MyBatis的单应用项目骨架
mybatis详解(全)「建议收藏」
1.JDBC技术–>Connection、PreparedStatement、ResultSet
全栈程序员站长
2022/11/08
2.6K0
mybatis详解(全)「建议收藏」
Spring+Spring MVC+MyBatis_java的图书管理系统
3. 用户输入完整信息提交以后,要求自动跳转至列表界面,此时列表界面显示新增的书籍信息(按添加时间降序排列,应该在第一条)。 4. 用户点击“列表”界面中的删除超链接,执行删除操作,然后列表进行自动刷新。 5. 用户点击“列表”界面中的修改超链接,跳转到修改页面,并在该页面回显需要修改的书籍信息. 、
全栈程序员站长
2022/11/09
6340
Spring+Spring MVC+MyBatis_java的图书管理系统
MyBatis-17MyBatis代码生成器(逆向工程)MBG使用
我们前面的博文中了解了MyBatis的基本用法,也写了很多单表的CRUD方法,基本上每个表都需要用到这些方法,这些方法都很规范而且比较类似。
小小工匠
2021/08/17
4630
Mybatis Generator xml格式配置
Mybatis Generator可以使用Maven方式和Java方法,使用Maven这里是配置文件:
二十三年蝉
2019/01/03
1.2K0
推荐阅读
相关推荐
spring boot 整合MyBatis Generator自动生成动态sql代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验