CTC5610-VPLS开发

概述

最近需要在之前做的MPLS 基础上实现L2VPN,所以想在这里把整个开发流程记录下,以便以后进行回忆。
整体的实现方案是采用VPLS技术,这个技术盛科5160芯片是完全支持的。目前VPLS的信令协议采用LDP协议,所以远端PE需要自己手动配置。

5160对MPLS VPN的支持

看了下5160的DataSheet,支持MPLS L2VPN(VPLS、VPWS)、MPLS L3VPN。我要用的就是VPLS(Virtual Private LAN Service虚拟专用局域网服务)。VPLS可以提供一种点到多点的VPN服务,不像传统的VPN(GRE、L2TP、PPTP)只能在公网上搭建一个点对点的专用网络,进行传输私有数据。
在这里插入图片描述

VPLS技术简介

VPLS: 是在公网上提供一种点到多点的L2VPN业务。这种通过VPLS技术把各个分散的站点连接起来,构成一个大的二层VPN网络,称为一个VPLS实例。在某个PE设备上,会对每一个VPLS实例虚拟出一个VSI(Virtual Switch Instance)出来。每个VSI在功能上,相当于一个传统的二层以太网设备。

几个基本概念

  1. CE:Customer Edge 用户网络边缘设备。用于连接PE,无需支持MPLS功能,并感知不到VPN的存在。
  2. PE:Provider Edge 服务提供商网络边缘设备。处于MPLS网络的边缘,用于直连CE,所有的VPN业务都在该设备上实现。在MPLS L2VPN中,主要实现VSI,来处理VPN数据的转发。
  3. AC:Attachment Circuit 接入电路。CE和PE的链接,在PE设备上需要绑定具体的二层端口,和VPN实例一一对应,绑定服务实例。
  4. PW:Pseudowire 伪线即PE–PE的虚链路。用于承载VC标签,链接着同一VPLS实例中的两个PE设备。
  5. Tunnel:公网隧道。由LSP维护,用于承载PW。一条公网隧道可以跑多条PW。
  6. LSP:Label Switching Path标签交换路径,即转发分组在MPLS网络中所走过的路径。
  7. LER:Label Switching Router LSR是MPLS网络的核心交换机,
  8. FEC:Forwarding Equivalence Class 转发等价类,具有相同转发规则的一组数据,例如目的地址前缀相同的数据分组,在LDP协议中,为一个FEC分配一个标签,和路由表的关系是,一条路由可以映射一个FEC。
  9. NHLFE:Next Hop Label Forwarding Entry 下一跳标签转发项。用于描述对标签执行的操作,类似IPUC中的Nexthop表项,代表当前转发分组的编辑方式。
  10. FTN:Fec To NHLFE map 指在Ingress节点将转发等价类 FEC映射到NHLFE的过程。
  11. ILM:Incoming Label Map 入标签映射,存在LSR设备以及Egress设备上。对标签进行交换、空操作、出栈操作等。

VPLS 实现机制

  1. 创建PW-----静态PW、LDP PW(手动指定远端PE)、BGP PW(自动发现远端PE设备)。
  2. 实现VSI 具有传统以太网设备所有功能,包括基于MAC地址表转发、查表失败泛洪、组播/广播的泛洪。
  3. PW全连接 在同一个VPLS实例中,每两个PE之间必须建立PW链接。
  4. 水平分割 在PE设备上,从PW上过来的数据禁止向该VSI内的其它PW转发,仅仅只能向AC转发。

基于sdk2.6.0实现VPLS

静态配置
创建一个vlanif接口,interface v10 绑定一个端口。
SDK下敲的命令:

  1. 使能接口mpls功能
    l3if ifid 1 mpls-property mpls-en value 1
    下面几条命令用于 AC—>PW
  2. 创建用于编辑隧道的NextHop Id,用于承载PW 方向为AC---->PW
    nexthop add mpls-tunnel 10 working-path mac e.e.e vlan-if vlan 10 port 45 label1 200 ttl1 10 exp1 2 exp1-type 0
  3. 创建用于编辑VC的NextHop Id,用于打上VC标签 方向为AC---->PW
    nexthop add mpls 102 push fwd vpls-port 300 payload-op op-l2vpn cvlan-edit-type 1 svlan-edit-type 4 output-cvid 1 output-svid 1 tunnel-id 10 label1 100 ttl1 100 exp1 1 exp1-type 0
  4. 使用vlan mapping映射出fid 方向为AC---->PW
    vlan mapping add port 44 mapping-to fid 4096 vpls-fid
  5. 暂时不知道什么作用,这条如果不设置,不会转发报文。方向为AC---->PW
    port 44 scl-key-type scl-id 1 direction ingress type port
  6. 创建入方向fdb表,AC—>PW 方向为AC---->PW
    l2 fdb add mac 0.0.1 fid 4096 nexthop 102 static
    下面几条命令用于PW—>AC
  7. 出方向弹出隧道标签 PW—>AC
    mpls ilm add space 0 label 200 pop
  8. 出方向报文编辑NextHop规则 PW—>AC
    nexthop add egs-vlan-edit 100 port 44 cvlan-edit-type 1 svlan-edit-type 4 output-cvid 1 output-svid 1
  9. 出方向FDB表 PW—>AC
    l2 fdb add mac 0.0.2 fid 4096 nexthop 100 static
  10. 添加l2vpn信息。方向为AC---->PW
    mpls l2vpn-pw add 100 vpls 4096 pwid 300 vpls-port-type encapsulation-mode raw

动态学习

1. /*使能当前vlanif下的mpls功能*/
	l3if ifid 1 mpls-property mpls-en value 1 
2. /*创建用于承载PW的隧道,即公网隧道,这里可以采用LSP构建的tunnel 隧道*/
	nexthop add mpls-tunnel 10 working-path mac e.e.e vlan-if vlan 1 port 45 label1 200 ttl1 10 exp1 2 exp1-type 0
3. /*用于VC的NHLFE,可以用在Ingress的FTN动作上,如果是两台PE直连,可以把	Nexthop表项中的label标签去掉,把vc标签放在tunnel中,其实这种实现方法有问题,只是盛科的2.6.0把隧道标签去掉之后会报错*/
	nexthop add mpls 102 push fwd vpls-port 300 payload-op op-l2vpn cvlan-edit-type 1 svlan-edit-type 1 output-cvid 1 output-svid 1 tunnel-id 10 label1 100 ttl1 100 exp1 1 exp1-type 0
4. /*把ac端口映射到逻辑端口400上,并且加入当前的转发域中,转发域fid为4096,这个范围规定的是4096 ~+1k*/
	vlan mapping add port 44 mapping-to fid 4096 vpls-fid logic-port 400 
5. /*配置端口44的sck-key-type方式*/
	port 44 scl-key-type scl-id 1 direction ingress type port
6. /*添加默认转发规则,在4096这个域内的默认转发规则为在groupid4096中泛洪*/
	l2 fdb add vlan-default-entry fid 4096 group 4096 use-logic-port
7. /*Egress设备弹出标签,这个为Tunnel标签*/
	mpls ilm add space 0 label 200 pop
8. /*配置L2VPN-PW的信息,VC标签100,VPLS-FID 4096,pwid为300也成为PW的逻辑端口,包封装模式tagged*/
	mpls l2vpn-pw add 100 vpls 4096 pwid 300 vpls-port-type encapsulation-mode tagged
9. /*映射逻辑端口的操作方式,PW交给NHLFE进行编辑,AC交给物理口44*/
	l2 fdb logic-nhid logic-port 300 nexthop 102 
	l2 fdb logic-nhid logic-port 400 gport 44
10. /*把ac端口加进去(AC需要和PW在同一个vlan下)盛科FAE的意思是要保证在同一广播域,华三的设备就不需要*/
	l2 fdb vlan-default-entry fid 4096 add port 44 
11. /*(此处需要吧PW的VC下一跳加进去)*/
	l2 fdb vlan-default-entry fid 4096 add nexthop 102

实验效果展示

组网框图
在这里插入图片描述
上面框图介绍了VPLS的一个应用场景,把三个PC连接起来,形成一个二层VPN网络。
各表项的信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
底层SHL表项信息
在这里插入图片描述

系统框架笔记

以下图片信息,来源于走读LDP协议源码,为了更好的开发VPLS所做的学习和总结。
LDPD进程中三个进程之间的关系,并讲解主进程和各子进程负者哪些东西
在这里插入图片描述
LDPD主进程维护的全局结构体
在这里插入图片描述
LDE进程上维护的FEC树以及邻居信息
在这里插入图片描述
在这里插入图片描述

总结

做这个协议之前先把相关技术理解透,比如MPLS和LDP协议,再然后去研究VPLS的实现。然后在SDK上去配置一下,参考下其它厂家设备作进一步的对比,然后胸有成竹后再动手开发。
开发的时候先想框架知识,怎么维护底层表项,表项怎么和FIB表关联等等。
本节内容记录到此,以后有问题需要定位时,只需要回头看看这个文档,看看自己画的笔记,就大概知道那块出问题了。

封装 FCPBGA 1143 工艺 28nm 低功耗工艺 典型功耗 30W(est.) 48x1G/48x2.5G/24x5G 下行,上行支持 10G/40G/25G/50G/100G 上联,并可 以使用 40G/50G/100G 等任意速率进行堆叠。 云时代和物联网高速发展,在接入交换节点,提出了更大表项,更低时延,更 灵活的流水线的需求。CTC7132 针对云时代的需求,深度优化流水线,打造了 TransWarp™第六代架构。 芯片特性  全面的二层特性  VLAN,MAC,LAG,广播风暴抑制等  VXLAN Bridge 大二层到边缘  802.1BR  DCB (PFC, ECN, ETS)优化 RDMA 流量  全面的三层特性  算法 ALPM 支持 IPv4 和 IPv6 双栈  线速的 NAT / NAPT / NAT-PT 转发  CAPWAP 隧道加解封装,分片重组,加解密  IPv4 和 IPv6 互转技术(6in4, 6to4,IVI 等)  全面的 MPLS 特性  LSP,L2VPN,L3VPN,L2VPN-L3VPN Gateway  Segment Routing  OAM/APS 特性  802.1ag/ Y.1731 以太网 OAM  G.8031/ G.8032 以太网业务保护  G.8113.1/ G.8113.2 MPLS-TP OAM  G.8131/ G.8132 MPLS-TP 业务保护  BFD/ OAM 检测自动保护切换  可视化特性  Buffer/Latency 监控  基于硬件的 NetFlow  ERSPAN (Ingress Timestamp and latency)  可编程特性  L2-L4 Programmable Edit  可编程隧道加解封装  安全和流量控制特性  支持 VLAN / MAC / Port / IP 进行 ACL 绑定  支持每个端口的 MACSec  支持基于 AES256 算法加密的 CloudSec  CPU 流量保护  时钟特性  IEEE 1588v2 和 Sync Ethernet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值