盛科平台下实现QinQ功能

背景

闲来无事,把之前在CTC5160上实现的QinQ拿来整理一下,供大家参考学习。整体思路主要是参考SDK_V5.3.0_TypicalConfiguration_APP.chm提供的示例,再结合市场实际应用进行开发。
博通QinQ功能实现

理论知识

查阅相关文献,总结归纳需要实现以下功能。

基于端口的QinQ

也称为基本QinQ,完全基于端口进行实现,端口对Ingress方向的报文,打上一层tag。vlan id值为端口缺省vlan(PVID)。根据进来的报文,做不同的处理。

  1. 进入端口的报文,携带tag,打上端口的pvid值,出去的是双层tag。
  2. 进入端口的报文, 没有携带802.1tag,打上一层端口的pvid,出去是单层tag。

基于vlan的灵活QinQ

由于基本的QinQ只能打特定的vlan tag,而且进来的报文都要强制加上一层tag。限制太大,所以这里有基于vlan的灵活QinQ配置。
原理:基于接口与vlan相结合的方式实现的,为具有不同内层VLAN ID的报文添加不同的外层vlan tag。出去的报文携带双层标签。
在后面的cli介绍可以看出来,灵活的QinQ和1:1、2:1、2:2都是基于vlan mapping来实现的,可以灵活控制。
还有一种针对untag报文,进来之后直接打上双层标签。

1:1 vlan mapping

Vlan mapping通过修改报文携带的vlan tag来实现不同VLAN的相互映射。1:1vlan映射表示携带单层tag的报文,映射成指定tag的报文,发送出去。

2:1 2:2 vlan mapping

2:1、2:2特指进入交换机端口的报文携带双层标签,2:1表示仅仅修改outer-vid,而2:2 同时映射修改Inner-Vid和Outer-vid。

CLI讲解

以下分别对上面不同场景的CLI配置

基本的QinQ

基本的QinQ
场景是进入端口23的报文将打上端口的默认vid。

  1. port 23 vlan-filtering direction both enable—使能端口vlan filter功能,默认关闭。
  2. port 23 default vlan 10----默认vid
  3. vlan add port 23 vlan 10----port 23加入到vlan10中
  4. port 23 vlan-domain cvlan ----修改端口23的vlan域为customer vlan,这样可以hit到cvlan-tagged,默认都是svlan 域
  5. port 23 dot1q-type cvlan-tagged ----端口规则,匹配cvlan-tagged,针对svlan 域,cvlan domain过来的报文,都是untag报文,将打上一层svid
  6. port 23 vlan-ctl drop-stag—设置vlan control,丢弃stag的报文,只要ctag的报文。

配置后会发现可能不转发,需要把出端口添加到默认转发域中去

  1. l2 fdb vlan-default-entry fid 10 add port 23
  2. l2 fdb vlan-default-entry fid 10 add port 45
    这里的fid表示转发域,在转发域中会洪泛。1-4095为vid值,4096–+1K表示VPLS的实例号,也相当于转发域。在同一个转发域内,未知报文会洪泛。

灵活QinQ

基于vlan的QinQ配置
以下配置和基于端口的QinQ相同,即端口的默认规则,规则匹配失败后所走的统一操作。
port 23 default vlan 5
vlan add port 23 vlan 5
vlan add port 23 vlan 100
port 23 vlan-domain cvlan
port 23 dot1q-type cvlan-tagged
port 23 vlan-ctl drop-stag

以下是精确匹配规则项
场景,针对入方向报文,携带的tag-vid在50-100之间的,在cvlan tag基础之上在加一层stag100,在10-30之间的除了增加一层svlan100之外,并且会修改pri字段为3

  1. vlan range create vrange-grp 0 direction ingress is-cvlan—创建一个vlan区域组
  2. vlan range add 50 to 100 vrange-grp 0 direction ingress—往这个组添加vlan区域成员,每个组可以添加8个vlan区域
  3. vlan mapping add port 23 cvid 50 to-cvid 100 vrange-grp 0 mapping-to new-svid 100 stag-op 2 sl-svid 2—下发vlan mapping 规则,
  4. vlan mapping add port 23 cvid 10 to-cvid 30 vrange-grp 0 mapping-to new-svid 100 stag-op 2 sl-svid 2 sl-scos 2 new-scos 3—外加一层outer tag,并同步修改pri值(值范围0-7)
  5. port 23 vlan-range direction ingress vrange-grp 0 enable —每个端口一个方向只能关联一个vlan区域组
  6. port 23 scl-key-type scl-id 0 direction ingress type cvid—查找方式基于cvid

vlan mapping 中的重要字段
stag-op : TAG_OP
1. 0:NONE(Do nothing),
2. 1:REP_OR_ADD (Replace for tagged, add for untagged. Rep or add is auto-ajusted)
3. 2:APPEND(add for untagged, even for tagged ),
4. 3:DELETE (delete tagged)
sl-svid : TAG_SL
1. 0:AS_RECEIVE(Select packet’s vid|cos),
2. 1:ALTERNATE(Select the other tag’s vid|cos),
3. 2:NEW (Select the tag user assigned),
4. 3:Default (Select the default vid|cos)
sl-scos : TAG_SL
1. 0:AS_RECEIVE(Select packet’s vid|cos)
2. 1:ALTERNATE(Select the other tag’s vid|cos)
3. 2:NEW (Select the tag user assigned)
4. 3:Default (Select the default vid|cos)

1:1 vlan mapping

配置场景,进入端口23并携带vid值为101到200的报文,vid将会被替换成120

  1. port 23 scl-key-type scl-id 0 direction ingress type svid–查找方式为svid,注意和vlan QinQ 的区别,此时端口23处于svlan domain中
  2. vlan range create vrange-grp 0 direction ingress is-svlan 创建的vrange用于svlan域中的
  3. port 23 vlan-range direction ingress vrange-grp 0 enable —绑定到端口23上
  4. vlan range add 101 to 200 vrange-grp 0 direction ingress—添加vlan区域
  5. vlan mapping add port 23 svid 101 to-svid 200 vrange-grp 0 mapping-to new-svid 120 stag-op 1 sl-svid 2—同样使用vlan mapping规则,主要是针对stag-op的控制,上面有讲解

2:1 2:2vlanmapping

进入端口23的报文携带双层标签,根据stag-op 和ctag-op进行控制inner和outer的vlan tag。
两种映射的共同配置

  1. port 23 scl-key-type scl-id 0 direction ingress type dvid—hit的是双层标签
  2. vlan range create vrange-grp 0 direction ingress is-cvlan —可以给inner vlan进行区域匹配
  3. port 23 vlan-range direction ingress vrange-grp 0 enable
  4. port 23 scl-key-type scl-id 0 direction egress type dvid—这里是使能egress的查找方式,两个方向配置差不多

2:2vlan mapping
区域配置举例
5. vlan range add 50 to 100 vrange-grp 0 direction ingress
6. vlan mapping add port 23 svid 60 cvid 50 to-cvid 100 vrange-grp 0 mapping-to new-svid 200 stag-op 1 sl-svid 2 new-cvid 300 ctag-op 1 sl-cvid 2—ingress方向的配置

不进行区域匹配的vlan mapping
7. vlan mapping add port 0x0001 cvid 6 svid 5 mapping-to new-svid 10 stag-op 1 sl-svid 2 new-cvid 12 ctag-op 1 sl-cvid 2 —ingress方向配置
8. vlan mapping egress add port 0x0001 cvid 12 svid 10 mapping-to new-svid 5 stag-op 1 sl-svid 2 new-cvid 6 ctag-op 1 sl-cvid 2 —egress方向,如果需要区域匹配,则配置上vrange即可,和ingress配置差不多。

2:1vlan mapping
区域配置举例

  1. vlan range add 50 to 100 vrange-grp 0 direction ingress
  2. vlan mapping add port 23 svid 60 cvid 50 to-cvid 100 vrange-grp 0 mapping-to new-svid 200 stag-op 1 sl-svid 2

不需要range控制

  1. vlan mapping add port 0x0001 cvid 6 svid 5 mapping-to new-svid 10 stag-op 1 sl-svid 2
  2. vlan mapping egress add port 0x0001 cvid 12 svid 10 mapping-to new-svid 5 stag-op 1 sl-svid 2 new-cvid 6 ctag-op 1 sl-cvid 2 —egress 方向的vlan mapping

备注
优先级可以在vlan_mapping的命令行里用sl-sclos 2 new-scos来更改
tpid的修改,CTC5160要借用egs scl来实现,可以配置scl egs-vlan-edit来替换tpid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值