NTUL2VPNHWAPI芯片实现分析.docx
- 文档编号:4776857
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:31
- 大小:1.38MB
NTUL2VPNHWAPI芯片实现分析.docx
《NTUL2VPNHWAPI芯片实现分析.docx》由会员分享,可在线阅读,更多相关《NTUL2VPNHWAPI芯片实现分析.docx(31页珍藏版)》请在冰豆网上搜索。
NTUL2VPNHWAPI芯片实现分析
[NTU-L2VPN-HWAPI芯片_实现分析]
1.引言
1.1.概述
MPLS最初是用来提高路由器的转发速度,现在是扩大IP网络规模的重要标准。
与传统的IP路由方式相比,MPLS在数据转发时,只是在网络边缘分析IP报文头,而不是每一跳都分析IP报文头。
MPLS具有高速交换、有链接(有利于QoS、VPN、TE)、可融合多种协议等特点。
本文旨在硬件与软件两个方面分析BCM56334芯片如何实现MPLS,以下是该芯片的一些性能参数。
BCM56338支持24路GbEports,4路10GbE/HiGig2TMPorts,支持的二层特性包括动态学习、静态学习、软件和硬件老化、线速交换、MAC限制学习、二层广播、stationmovementcontrol)、三层路由、生成树协议、风暴抑制、vlan分配、iptunnelv4&v6线路聚集(trucking)、mirror、ContentAwareFilterProcessor、protocolcheckers、stackinglinks、tunnellingprotocols(MPLS、vpls、vpws、MAC-IN-MAC、doubletag、OAMA)、网络时间同步、QOS、DSCP、管理数据库等。
下图说明了BCM56338芯片所包括的逻辑模块。
图1BCM56334逻辑视图
1.2.约定
CoS:
Classofservice;
ToS:
TypeofService;
DSCP:
DifferentiatedServicesCodePoint;
SP:
StrictPriority;
WRR:
WeightedRoundRobin;
DRR:
DificitRoundRobin。
DVP:
Destinationvirtualport
SVP:
Sourcevirtualport
OVID:
Outervlanid
IVID:
Innervlanid
DIP:
DestinationIP
SIP:
SourceIP
GLP:
globollogicalport(T(truckedport),MoDID,PORT)
VFP:
VLANFP
SLFC:
Sourcelookupfailture
VRF:
VirtualRoutingForwarding
1.3.参考资料
《BCM56330Programmer’sRegisterReferenceGuide》
《BCM56330-PG102-RDSTheoryofOperations》
《EnduroMPLS_v1.1.pdf》
《SDK_MPLS_561_new.ppt》
《MPLS-HWAPI_BCM56338芯片_实现与组播SDK分析.doc》
2.L2VPN硬件实现原理
2.1.BCM56334L2VPN相关硬件表
2.1.1.VLAN_XLATE
Ø描述IngressVLANtranslationtable
Ø最小索引:
0
Ø最大索引:
8191
Ø地址:
0x04A60000
截图如下表所示。
硬件表1
2.1.2.SOURCE_VP
Ø描述:
SourceVirtualPortProperties,ThistableisindexedviatheSOURCE_VPfieldobtainedfromtheVFP,SOURCE_TRUNK_MAP,TRUNK32_PORT_TABLE,MPLS_ENTRY,orVLAN_XLATE
Ø最小索引:
0
Ø最大索引:
8191
Ø地址:
0x06A10000
截图如下表所示。
硬件表2
2.1.3.ING_DVP_TABLE
Ø描述:
Usedtogeneratethenexthopindexfromthedestinationvirtualport(DVP)value
Thistableisindexedvia{DST_MODID[6:
0],DST_PORT[5:
0]}orSOURCE_VP.DVPforMPLSapplications
Ø最小索引:
0
Ø最大索引:
8191
Ø地址:
0x0DA40000
截图如下表所示。
硬件表3
2.1.4.ING_L3_NEXT_HOP
Ø描述:
Thistablespecifiesthedestinationinformationforroutedpackets
Ø最小索引:
0
Ø最大索引:
8191
Ø地址:
0x10A10000
截图如下表所示。
硬件表4
2.1.5.EGR_L3_NEXT_HOP
Ø描述:
NextHopTable
Ø最小索引:
0
Ø最大索引:
8191
Ø地址:
0x03B10000
截图如下表所示。
硬件表5
2.1.6.EGR_L3_INTF
Ø描述:
L3InterfaceTable,ThistableprovidestheconfigurationfortheL3interfaceandisindexedusingeitherEGR_L3_NEXT_HOP.INTF_NUMor
ØIPMC_VLAN{MSB_VLAN[5:
0],LSB_VLAN_BM[5:
0]}
Ø最小索引:
0
Ø最大索引:
4095
Ø地址:
0x03B20000
截图如下表所示。
硬件表6
2.1.7.EGR_MPLS_VC_AND_SWAP_LABEL_TABLE
Ø描述:
MPLSVCandSWAPLabelTable,ThistableisindexedusingEGR_L3_NEXT_HOP.VC_AND_SWAP_INDEX.
Ø最小索引:
0
Ø最大索引:
4095
Ø地址:
0x03B30000
截图如下表所示。
硬件表7
2.1.8.EGR_IP_TUNNEL_MPLS
Ø描述:
MPLSviewoftheEgressIPTunnelTable.UsedtomakenewMPLSTunnelHeader.There
are4entriesperlocation.
Ø最小索引:
0
Ø最大索引:
511
Ø地址:
0x05B50000
截图如下表所示。
硬件表8
2.2.BCM56334VPWS硬件实现流程图
图1实现流程图
图2实现流程图
以上两图分别是BCM56334芯片MPLS硬件实现VPWS封装包以及解MPLS包的流程。
由图可以看出MPLS相关寄存器列表之间的索引关系。
VLAN_XLATE寄存器列表负责来包的vlan翻译工作,该列表中包含SOURCE_VP的索引、VLANID、OVID等信息。
SOURCE_VP寄存器列表包含SD_TAG_MODE,DVP索引等信息,在配置MPLS时,SVP与DVP绑定就是在这个寄存器中设定的。
ING_DVP_TABLE寄存器列表的数据单元主要用来指向EGR_L3_NEXT_HOP与ING_L3_NEXT_HOP。
ING_L3_NEXT_HOP寄存器列表包括了要转发数据包的封装格式以及转发端口等信息。
EGR_L3_NEXT_HOP寄存器列表主要用来指向EGR_MPLS_VC_AND_SWAP_LABEL_TABLE寄存器列表,该列表包含MPLS数据包的VCLABEL信息。
另外该寄存器还指向EGR_L3_INTF寄存器列表,该列表指向EGR_IP_TUNNEL_MPLS寄存器列表,EGR_IP_TUNNEL_MPLS包含MPLS封转包所需要要TUNNELLABEL信息。
2.3.BCM56334VPLS硬件实现流程图
图3实现流程图
图4实现流程图
以上两图分别是BCM56334芯片MPLS硬件实现VPLS封装包以及解VPLS包的流程。
由图可以看出MPLS相关寄存器列表之间的索引关系。
由图中可以看出VPLS与VPWS的硬件实现大致相同,区别是硬件实现VPLS时候需要进行L2的地址学习以及地址查找。
这一区别与VPLS、VPWS的原理有关系,VPLS实现的点到多点之间的VPN,而VPWS实现的是点到点的VPN。
点到多点之间肯定要存在MAC查找与MAC学习。
MAC地址查找与学习,VPWS硬件是通过VFI实现的。
3.L2VPN软件实现原理
3.1.软件实现层次结构图
以下是NTU的L2VPN软件流程结构
图5NTU的L2VPN软件流程结构
【注】mpls模块的一些重要SDK函数的实现分析见《MPLS-HWAPI_BCM56338芯片_实现与组播SDK分析.doc》
3.2.实现原理描述
(1)初始化模块
输入参数:
无
输出参数:
无
功能描述:
初始化子模块需要完成端口MPLS业务的使能、背板tgid以及tunnel的创建。
创建24个tunnel(tunnel的索引为1-24),24个tunnel对应8个slot(即一个slot与NTU的tunnel为三个,可以选择)。
创建tunnle的过程:
创建一个层三接口、创建一个层三出接口,出口的目的mac是NTU的mac加上slot的偏移量。
另外,创建4095vlan,然后将所有背板端口加入vlan4095中,然后禁止4095vlan内的bc/uc/mc,防止广播环的生成。
将NTU的mac以及vlan4095写入mpls_station中,用来子卡业务的识别。
(2)LSP子模块
包含接口:
ROS_HW_SS_MPLS_ING_XC
ROS_HW_SS_MPLS_EGR_XC
ROS_HW_SS_MPLS_TRANSIT_XC
功能描述:
实现INGRESS、TRANSIT、EGRESS三种类型LSP的创建与删除
(3)VPN子模块
包含接口:
ROS_HW_SS_VPN_L2VPN
ROS_HW_SS_VPN_L2VPN_UNI_PORT
ROS_HW_SS_MPLS_VPN_NNI_PORT
功能描述:
实现VPN的创建与删除,以及在VPN内pw的创建与删除
(4)属性设置
包含接口:
ROS_HW_SS_VPLS_ATTR
功能描述:
实现VPLSMAC地址学习条目限制、过滤未知单播包开启或关闭、过滤未知主播包开启或关闭、过滤广播包开启或关闭、VSI内MAC地址学习的开启与关闭
4.接口实现方案分析
4.1.接口ROS_HW_SS_MPLS_ING_XC实现方案分析
4.1.1.实现功能
(1)ingLSPset
(2)ingLSPdelete
4.1.2.实现原理
(1)set原理
2100该接口的实现与201不同,在2100中该接口实现的功能相当于201的LSP创建以及tunnelup(即ROS_HW_SS_MPLS_TUNNEL接口)。
创建LSP时,需要判断下一跳逻辑端口是否是子卡端口,如果是需要将该下一跳逻辑端口映射到交换芯片端口或Trunk组。
创建l3_intf(传入SMAC以及出vlan),创建层三出接口(传入出端口、下一跳mac),返回tunnel_if,虽然此处传入了下一跳MAC地址,该mac写入egr_l3_next_hop中,下一跳mac写入egr_mac_da_profile是在nni端set时才写入的。
将LSP的出标签、exp值写入egr_ip_tunnel_mpls中
(2)delete原理
将egr_l3_intfegr_l3_next_hoping_l3_next_hopegr_ip_tunnel_mpls硬件删除
4.1.3.硬件关系图
图6ING_XCset硬件关系图
4.1.4.配置说明
(1)Set
输入参数:
mplsIngressXC_t
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
ulOutL3Vid
L3接口VID
aucOutL3Mac[6]
出L3接口MAC
aucResv1[2]
用于字节对齐
aucNextHopMac[6]
下一跳MAC
aucResv2[2]
用于字节对齐
ulOutPort
下一跳物理端口
ulOutMplsLabel
INGRESSXC出隧道标签,格式为MPLS标签格式,包含标签值,TTL及EXP,S字段,S字段无意义*/
输出参数:
Tunnel_if
(2)delete
输入参数:
mplsXCDel_t;
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
输出参数:
表示设置成功与否。
4.1.5.SDK与SSP支持情况
(1)bcm_l3_intf_create
(2)bcm_l3_egress_create
(3)bcm_mpls_tunnel_initiator_set
(1)bcm_l3_egress_get
(2)bcm_l3_egress_destroy
(3)bcm_mpls_tunnel_initiator_clear
(4)bcm_l3_intf_delete
接口引用的SDK分析参见《MPLS-HWAPI_BCM56338芯片_实现与组播SDK分析.doc》
4.2.接口ROS_HW_SS_MPLS_EGR_XC实现方案分析
4.2.1.实现功能
(1)egressLSPset
(2)egressLSPdelete
4.2.2.实现原理
(1)egressLSPset
将egress的匹配label、匹配动作等数据写入mpls_entry中,此处的mpls_entry无source_vp指向,只是简单的对标签进行处理,区别于设置pw时的匹配label
(2)egressLSPdelete
略
4.2.3.硬件关系图
图7EGR_XCset硬件关系图
4.2.4.配置说明
(1)Set
输入参数:
mplsEgressXC_t
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
ulInL3Ifindex
没使用
ulInL3Vid
没使用
aucInL3Mac[6]
没使用
aucResv[2]
没使用
ulInMplsLabel
ERGRESSLSP入隧道标签
输出参数:
表示设置是否成功
(2)delete
输入参数:
mplsXCDel_t
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
输出参数:
表示设置是否成功
4.2.5.SDK与SSP支持情况
(1)bcm_tr_mpls_tunnel_switch_add
(2)bcm_tr_mpls_tunnel_switch_delete
4.3.接口ROS_HW_SS_MPLS_TRANSIT_XC实现方案分析
4.3.1.实现功能
(1)Transitlspset
(2)Transitlspdelete
4.3.2.实现原理
(1)Set
创建LSP时,需要判断出端口是否是子卡端口,如果是需要将该端口映射到与子卡端口相连的本机端口。
创建l3_intf(传入SMAC以及出vlan),创建层三出接口(传入出端口、下一跳mac),返回tunnel_if,下一跳mac写入egr_l3_next_hop中,bcm_tr_mpls_tunnel_switch_add函数中在创建transitlsp时会调用_bcm_tr_mpls_l3_nh_info_add实现MAC写入egr_mac_da_profile中。
Transitlsp的匹配标签写入mpls_entry中,swap标签写在egr_vc_and_swap_label_table中。
(2)Delte
略
4.3.3.硬件关系图
图8Transti_XCset硬件关系图
4.3.4.配置说明
(1)Set
输入参数:
mplsTransitXC_t
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
ulOutL3Vid
L3接口VID
aucOutL3Mac[6]
出L3接口MAC
aucResv1[2]
用于字节对齐
AucNextHopMac[6]
下一跳MAC
aucResv2[2]
用于字节对齐
ulOutPort
下一跳物理端口
ulInMplsLabel
TRANSITLSP入隧道标签
ulOutMplsLabel
TRANSITLSP出隧道标签
输出参数:
Tunnel_if
(2)delete
输入参数:
mplsXCDel_t
对应设置的硬件
ulMplsXcIndex
平台维护的XC索引
输出参数:
表示设置是否成功
4.3.5.SDK与SSP支持情况
(1)bcm_tr_mpls_tunnel_switch_add
(2)bcm_tr_mpls_tunnel_switch_delete
4.4.接口ROS_HW_SS_VPN_L2VPN实现方案分析
4.4.1.实现功能
(1)VPNset
(2)VPNdelete
4.4.2.实现原理
(1)Set
VPLS该接口主要实现了vpn_id的分配,并将未知单播、未知组播以及广播的ipmc写入VFI中。
另外设置VSI内MAC地址数目限制为8k。
VPWS该接口主要实现两个连续vp的分配,并且返回该vp。
(2)delete
略
4.4.3.硬件关系图
图9VPNset硬件关系图
4.4.4.配置说明
(1)Create
输入参数:
rosVpnHw_t
对应设置的硬件
ulVPNId
平台维护的XC索引
eVPNType
VPN类型
输出参数:
输出VPN_ID
(2)destroy
输入参数:
ulVpnId
平台维护的XC索引
输出参数:
表示设置是否成功
4.4.5.SDK与SSP支持情况
(1)bcm_multicast_create
(2)bcm_mpls_vpn_id_create
(3)bcm_multicast_destroy
(4)bcm_mpls_vpn_id_destroy
4.5.接口ROS_HW_SS_VPN_L2VPN_UNI_PORT实现方案分析
4.5.1.实现功能
(1)set
图10svp与dvp交叉绑带原理
本接口实现UNI侧相关硬件的写操作,ing_l3_next_hop以及egr_l3_next_hop的创建,且用dvp指向,并将业务的绑定端口以及vlan写入到ing_l3_next_hop以及vlan_xlate中;实现vlan_xlate(如果是基于端口+vlan提取业务)->source_vp->ing_dvp_table->egr_l3_next_hop的绑定。
如果NNI侧相关硬件以及写完,则实现S_SVP到N_DVP的绑定。
另外,本接口还做了设置ntu板卡上面的端口的cos映射表,即使设置的本地优先级在mpls流程中生效。
(3)delete
略
4.5.2.实现原理
如果非子卡提取业务,不需要tunnel_if,因为配置绑定业务提取端口的过程中无需操作egr_l3_next_hop相关寄存器。
但如果是子卡提取业务,就需要tunnel_if。
NTU的UNI侧需要将假标签写入mpls_entry以及egr_mpls_vc_and_swap_label_table(为了提取子卡进来的业务流以及向子卡输入业务流,这个加标签是网管统一下发的)。
Mpls_entry的label值是svp有效,因为也需要将假标签写入egr_mpls_vc_and_swap_label_table,所以需要tunnel_if,此时需要的tunnel_if正是在mpls初始化中按照槽位创建的。
另外,将端口将加入到相应的未知组播组、未知单播组、广播组中。
4.5.3.硬件关系图
图11UNIset硬件关系图
另外设计到了mpls_entry表match_label的写操作。
4.5.4.配置说明
(1)Set
输入参数:
rosVpnHwUNIPort_t
对应设置的硬件
ulVpnId
VPN标识
ulPort
加入或者删除的物理接口
ulClientVid
业务对应的VID
ulClientLabel
业务对应的PW的标签,0代表非子卡业务
ulClientVP
业务对应的VP标识
ulClientPriority
业务对应的优先级标识
输出参数:
硬件VP
(2)Delete
输入参数:
mplsVpnVpDel_t
对应设置的硬件
ulVpnId
VPN标识
ulVp
Vp号
输出参数:
配置是否成功
4.5.5.SDK与SSP支持情况
(1)bcm_esw_mpls_port_add
(2)bcm_tr_mpls_port_delete
4.6.接口ROS_HW_SS_MPLS_VPN_NNI_PORT实现方案分析
4.6.1.实现功能
(1)set
图12svp与dvp交叉绑带原理
本接口实现NNI侧相关硬件的写操作,(NNI侧的ing_l3_next_hop以及egr_l3_next_hop在XC中已经创建),例如,向egr_mac_da_profile中写入下一跳mac,向egr_mpls_vc_and_swap_label_table中写入pw的出标签,向mpls_entry中写入pw的匹配标签,且实现mpls_entry->source_vp->ing_dvp_table->egr_l3_next_hop的绑定。
如果UNI侧相关硬件以及写完,则实现N_SVP到S_DVP的绑定。
(2)delete
略
4.6.2.实现原理
(1)set
pw业务出端口如果超过了本机的范围,需要将该端口映射到与本机端口相连的那个端口上。
将匹配label以及交换label分别写入mpls_entry以及egr_mpls_vc_and_swap_label_table中。
另外,将NNI层端口将加入到相应的未知组播组、未知单播组、广播组中。
(2)delete
略
4.6.3.硬件关系图
图13UNIset硬件关系图
另外还有mpls_entry指向source_vp。
4.6.4.配置说明
(1)Set
输入参数:
mplsVpnNNIPort_s
对应设置的硬件
ulVpnId
VPN标识
ulFlags
eEncapMode
业务封装模式
ulSdVid
服务界定标识
ulOutPort
加入或者删除的物理接口
ulMplsXcIndex
平台使用的XC索引
ulPwInLabel
PW入标签
ulPwOutLabel
PW出标签
ulPwVp
SSPPW虚端口V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NTUL2VPNHWAPI 芯片 实现 分析