L3 hwapi BCM56338芯片实现分析Word文件下载.docx

上传人:b****0 文档编号:13875362 上传时间:2022-10-14 格式:DOCX 页数:16 大小:1.31MB
下载 相关 举报
L3 hwapi BCM56338芯片实现分析Word文件下载.docx_第1页
第1页 / 共16页
L3 hwapi BCM56338芯片实现分析Word文件下载.docx_第2页
第2页 / 共16页
L3 hwapi BCM56338芯片实现分析Word文件下载.docx_第3页
第3页 / 共16页
L3 hwapi BCM56338芯片实现分析Word文件下载.docx_第4页
第4页 / 共16页
L3 hwapi BCM56338芯片实现分析Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

L3 hwapi BCM56338芯片实现分析Word文件下载.docx

《L3 hwapi BCM56338芯片实现分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《L3 hwapi BCM56338芯片实现分析Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

L3 hwapi BCM56338芯片实现分析Word文件下载.docx

1.3.参考资料

《BCM56500Programmer’sRegisterReferenceGuide》

《BCM56330TheoryofOperations》

《Layer3LookupsandEnhancements》

2.硬件实现原理

2.1.硬件表

2.1.1.L3_ENTRY

描述:

L3_ENTRY是以下四个表的统称:

L3_ENTRY_IPV4_UNICAST,L3_ENTRY_IPV4_MULTICAST,L3_ENTRY_IPV6_UNICAST,L3_ENTRY_IPV6_MULTICAST,通过KEY_TYPE的设置,来分别作为上面四个表

Ø

最小索引:

最大索引:

8191

地址:

根据不同表的类型,地址不同

L3_ENTRY_IPV4_UNICAST如下图:

L3_ENTRY_IPV4_MULTICAST如下图

L3_ENTRY_IPV6_UNICAST如下图

L3_ENTRY_IPV6_MULTICAST如下图

2.1.2.ING_L3_NEXT_HOP

描述:

该表定义了路由报文的下一跳相关信息(出端口)。

0x10A10000

2.1.3.EGR_L3_NEXT_HOP

该表定义了路由报文的下一跳相关信息(下一跳目的MAC,intf)。

0x03B10000

2.1.4.EGR_L3_INTF

该表定义了路由报文的下一跳相关信息(下一跳源MAC,出端口vlan)。

4095

0x03B20000

2.1.5.L3_ECMP_COUNT

该表定义了等价路由的个数。

2047

0x10AA0000

2.1.6.L3_ECMP

该表定义了等价路由的NEXT_HOP_INDEX信息。

0x10A00000

2.2.BCM56338L3功能的硬件实现流程图

BCM56338L3功能的硬件实现流程如图2所示。

图2BCM56338L3功能的硬件实现流程图

如图2所示,BCM56338L3功能的硬件实现流程主要由以下几步组成:

●在L3_ENTRY表中查找DIP,如果找到,根据NEXT_HOP_INDEX信息,找ING_L3_NEXT_HOP表和EGR_L3_NEXT_HOP表,获取L3转发路径相关信息;

●如果L3_ENTRY中未找到,则在lpm表中寻找;

●如果是等价路由,那么在lpm表中,获取ECMP_PTR信息,指向L3_ECMP表和L3_ECMP_COUNT表,获取等价路径的NEXT_HOP_INDEX信息;

3.软件实现原理

3.1.bcm56338L3部分功能软件结构

目前在ITN201上实现了bcm56338的L3转发功能,软件接口函数代码集中在cesw_a\ssp\ipn201_ssp\src\bcmIpHw.c中,功能函数代码集中在cesw_a\ssp\ipn201_ssp\src\bcmRoute.c中。

3.2.bcm56338L3部分软件功能实现方案分析

3.2.1.接口ROS_HW_SV_IP_ROUTING实现方案分析

接口功能:

接口ROS_HW_SV_IP_ROUTING实现L3转发功能的使能与关闭

3.2.1.1.实现原理:

bcm_tms_l3_enable_set。

3.2.1.2.硬件关系图

3.2.1.3.特殊要求与实现

3.2.1.4.SDK与SSP支持情况

SDK提供

(1)bcm_l3_enable_set()

(2)bcm_arp_to_cpu_enable()

(3)bcm_l3_info()

(4)bcm_l2_addr_get()

(5)bcm_l2_addr_add()

其中,bcm_l3_enable_set设置port表的V4L3_ENABLE和V6L3_ENABLE;

bcm_arp_to_cpu_enable设置arp报文上交cpu;

bcm_l3_info获取芯片支持的最大intf数量;

bcm_l2_addr_get根据intf获取的mac和vlanid,查找L2_ENTRY,bcm_l2_addr_add将这些查找到的entry的L3标志位置1。

3.2.2.接口ROS_HW_SS_ROUTE_INFO实现方案分析

添加intf信息,并保存

3.2.2.1.实现原理:

bcm_tms_route_info_set。

3.2.2.2.硬件关系图

3.2.2.3.特殊要求与实现

3.2.2.4.SDK与SSP支持情况

(1)bcm_l3_intf_create()

3.2.3.接口ROS_HW_SS_ROUTE_DEST实现方案分析

配置目的路由

3.2.3.1.实现原理:

bcm_tms_route_dest_set。

3.2.3.2.硬件关系图

3.2.3.3.特殊要求与实现

3.2.3.4.SDK与SSP支持情况

(1)bcm_l3_egress_create()

(2)bcm_l3_ip_add()

(3)bcm_l3_defip_add()

(4)bcm_l3_egress_multipath_add()

(5)bcm_l3_egress_multipath_create()

bcm_l3_egress_create()负责创建三层出接口,包括写ING_L3_NEXT_HOP表和HOP表;

bcm_l3_ip_add(),创建主机直连路由的时候,使用该函数。

最终调用到函数bcm_xgs3_l3_add(),该函数中调用三个函数,分别是:

_bcm_xgs3_nh_init_add(),用来获取nexthopindex;

_bcm_xgs3_l3_add(),该函数写L3_ENTRY表;

bcm_xgs3_host_as_route(),如果L3_ENTRY写满,不能再写了,执行刚才的函数,写到最长前缀匹配表中。

如果是主机路由,并且非直连,或者是网络路由,就要写到最长前缀匹配表中。

此时分三种情况:

一种是新创建的路由,即原路由不存在,则调用bcm_l3_defip_add函数,此时除了添加必要的信息,比如目的ip地址,下一跳ip地址,还需要传递BCM_L3_D_HIT,BCM_L3_ADD_TO_ARL这两个宏下去,还需要传递bcm_l3_egress_create创建的egr_intf下去;

一种是原来就存在的路由,而且是等价路由,那么就只需要将新的路由信息添加到等价组当中就可以,bcm_l3_egress_multipath_add()函数来实现这个功能。

该函数实现流程如下:

调用bcm_xgs3_l3_egress_multipath_get()函数,来获取原来等价路径的结构;

将传递下来的intf添加到获取的等价组的最后;

调用bcm_xgs3_l3_egress_multipath_creat()函数来替换原来的等价组,替换的功能,是通过传递的BCM_L3_REPLACE宏和BCM_L3_WITH_ID来实现的;

一种是原来存在的路由,但是不是等价路由,也就是只有一条路径,此时流程是:

先用bcm_l3_defip_get()函数,各get出原来的路由信息,目的是得到原来的intf;

利用bcm_l3_egress_multipath_create()函数,以bcm_l3_egress_create创建的egr_intf为参数,创建等价组,bcm_l3_egress_multipath_create()函数在bcm_l3_egress_multipath_add()函数中也会被调用,区别就是传递的宏不一样,实现的功能就不一样;

调用bcm_l3_egress_multipath_add()函数,将get出来的原来路由信息中的intf,加入到刚刚创建的等价组当中;

调用bcm_l3_defip_add()函数,更新原来的路由信息为等价路由,功能实现靠的也是两个宏,即BCM_L3_MULTIPATH和BCM_L3_REPLACE。

3.2.4.接口ROS_HW_SS_ROUTE_DEST_UPDATE实现方案分析

更新目的路由

3.2.4.1.实现原理:

bcm_tms_route_dest_update。

3.2.4.2.硬件关系图

3.2.4.3.特殊要求与实现

3.2.4.4.SDK与SSP支持情况

(2)bcm_l3_egress_get()

先调用bcm_l3_egress_get()获取原来的egress相关信息,包括出端口,vlan,intf信息,再利用bcm_l3_egress_create()更新原来的egress信息。

同样,也是靠宏BCM_L3_REPLACE宏BCM_L3_WITH_ID来实现的

3.2.5.接口ROS_HW_SV_ROUTE_DEST_DEL_ALL实现方案分析

删除所有目的路由

3.2.5.1.实现原理:

bcm_tms_route_dest_all_delete。

3.2.5.2.硬件关系图

3.2.5.3.特殊要求与实现

3.2.5.4.SDK与SSP支持情况

SSP提供

(1)bcm_l3table_del_all()

(2)bcm_defip_del_all()

(1)_bcm_xgs3_l3_del_match()

(2)_bcm_fbx_lpm_update_match()

(3)bcm_l3_egress_multipath_destroy()

(4)bcm_

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

当前位置:首页 > IT计算机

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

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