NTUL2VPNHWAPI芯片实现分析.docx

上传人:b****6 文档编号:4776857 上传时间:2022-12-08 格式:DOCX 页数:31 大小:1.38MB
下载 相关 举报
NTUL2VPNHWAPI芯片实现分析.docx_第1页
第1页 / 共31页
NTUL2VPNHWAPI芯片实现分析.docx_第2页
第2页 / 共31页
NTUL2VPNHWAPI芯片实现分析.docx_第3页
第3页 / 共31页
NTUL2VPNHWAPI芯片实现分析.docx_第4页
第4页 / 共31页
NTUL2VPNHWAPI芯片实现分析.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

NTUL2VPNHWAPI芯片实现分析.docx

《NTUL2VPNHWAPI芯片实现分析.docx》由会员分享,可在线阅读,更多相关《NTUL2VPNHWAPI芯片实现分析.docx(31页珍藏版)》请在冰豆网上搜索。

NTUL2VPNHWAPI芯片实现分析.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1