BCM几个交换芯片的寄存器和相关的路由

EGR_L3_NEXT_HOP、EGR_L3_INTF、ING_L3_NEXT_HOP

BCM XGS系列SDK中和路由相关的几个命令

l3 l3table、 l3 defip 、 l3 intf

当中l3 intf命令配置了EGR_L3_INTF寄存器, 本质上是配置了3层转发接口 也就是我们常说的vlanif接口。

l3 l3table命令和l3 defip命令都配置了EGR_L3_NEXT_HOP寄存器也就是下一跳出口寄存器。l3 l3table 也会生成主机路由ARP表项。

BCM XGSIII系列交换芯片FP 策略路由功能配置顺序:

1. 创建fp group时增加bcmfieldqualifyl3routable匹配

fp qset add bcmfieldqualifydstip

fp qset add bcmfieldqualifyl3routable

fp group create -0x7fffffff 1

2. 创建fp group entry

fp entry create 1 1

3. 配置fp匹配域TCAM data 和mask

fp qual 1 bcmfieldqualifydstip 192.168.0.12 255.255.255.255

fp qual 1 bcmfieldqualifyinport ge26 0x00000000003fffffffffffff

4.配置fp policy action

fp action add 1 bcmfieldactionl3switch 2

5.安装fp entry

fp entry reinstall 1

6.配置egr_l3_next_hop寄存器

l3 defip add vrf=0 ip=目的IP mask=掩码 MAC=目的MAC intf=intfnum port=目的端口

eg:

l3 defip add VRF=0 IP=192.168.2.54 MaSk=255.255.255.0 Mac=38:83:45:f2:3a:00 INtf=1 port=ge28



#l3 l3table add VRF=0 IP=192.168.2.54 Mac=38:83:45:f2:3a:00 INtf=1 Hit=1 MOdule=0 Port=ge28

7.配置egr_l3_intf寄存器

l3 intf add vlan=vid MAC=交换机MAC地址 intf=intfnum

eg:

l3 intf add Vlan=1 Mac=02:10:18:F1:23:3F INtf=1

这样配置后, 通过fp过滤的流在运行策略时会依据l3 switch提供的索引‘2’去索引EGR_L3_NEXT_HOP表获取下一跳

目的MAC地址和Intf_num, 之后用取得的intf_num索引EGR_L3_INTF表,得到出口源MAC地址和出口VID。

然后。交换芯片将报文的源MAC地址替换成从EGR_L3_INTF表中取得的源MAC地址, 并将报文从VLAN - vid转发出去。

本质上来说,EGR_L3_NEXT_HOP表里存储的是主机路由的MAC信息和intf_num信息。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

BCM策略路由交换芯片的更多相关文章

  1. 交换芯片收发包的 DMA 实现原理

    交换芯片支持:报文.计数.表项3种DMA类型,其中报文DMA包括系统从芯片到接收报文或发送报文到交换芯片,计数DMA用来从片上获取统计计数,表项DMA功能分为SLAM DMA(系统内存DMA到片上交换 ...

  2. 基于335X平台的UBOOT中交换芯片驱动移植

    基于335X平台的UBOOT中交换芯片驱动移植 一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3 ...

  3. 基于335X平台Linux交换芯片驱动开发

    基于335X平台Linux交换芯片驱动开发   一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.Kernel版本:4.4.12,采用FDT 3.交换芯片MARVEL ...

  4. BCM芯片FP原理及相关SDK数据结构介绍

    BCM芯片有几个大的模块: VLAN.L2.L3和FP等几个,其中FP的使用也最为灵活,能解析匹配数据包文的前128字节比特级的内容,动作包括转发.丢弃.结合qos修改相应字段.分配vid.流镜像.流 ...

  5. Broadcom以太网交换芯片培训

      目录 1.交换芯片架构....................................................................................... ...

  6. 以太网PHY 芯片之 MII/MDIO接口详解

    本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法. ...

  7. BCM 交换机开发

    转:http://blog.chinaunix.net/uid-23782786-id-3839602.html 前言:        最近搞这玩样,真是折腾,网上的资料都是片段,而且很少.折腾了4. ...

  8. OTN 交换& P-OTN有效减少100G 网络成本 (三)

    OTN 交换& P-OTN有效减少100G 网络成本 (三) 城域网面临的挑战在于不仅须要支持和管理旧有的传送业务,还要支持新兴的分组业务.在城域网中,以太网业务是规模最大.增长最迅速的业务种 ...

  9. WAV16T VPX国产化千兆交换板

      WAV16T是基于盛科CTC5160设计的国产化3U三层千兆VPX交换板,提供16路千兆电口,采用龙芯 2K1000处理器.支持常规的L2/L3协议,支持Telnet.SNMP.WEB,CLI等多 ...

随机推荐

  1. Ubuntu在构建Robotframework+Selenium周围环境

    最近经历了从Windows进入系统Ubuntukylin下列.因此,测试工具也需要被重新安装,今天和共享安装过程. 我用的是环境:Ubuntu Kylin 14.04 64Bit系统. 启动权,首先, ...

  2. 【C语言探索之旅】 第一部分第四课第二章:变量的世界之变量声明

    内容简介 1.课程大纲 2.第一部分第四课第二章:变量的世界之变量声明 3.第一部分第四课第三章预告:变量的世界之显示变量内容 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布 ...

  3. PowerDesigner有几个需要设置

    安装后PDM后.一些易于使用的设计人才需求. 一. 建立name与code做自己的主动关联,我们输入name当你不希望个别及连带code已经改变. 打开Tools->General Option ...

  4. Android-Service组件

    转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/40381109 原文:http://developer.android.com ...

  5. linux shell 不同进制数据转换(二进制,八进制,十六进制,base64) (转)

    shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 ...

  6. Kohana 数据库

    只要不使用官方网站的教程,自己摸索出来的,有一个错误,当我们指了出来,哦,,好吧共同进步~ 首先配置:modules\database\config\database.php <?php 'de ...

  7. plsql dev中Dynamic Performance Tables not accessible分析解决(转)

    使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disabled ...

  8. Windows Phone获取WiFi BSSID

    原文:Windows Phone获取WiFi BSSID BSSID,一种特殊的Ad-hoc LAN的应用,也称为Basic Service Set (BSS),一群计算机设定相同的BSS名称,即可自 ...

  9. 5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle该项目的开发——使用datagrid做报表

    来点需要:我使用的数据库访问EF框架,但是,因为使用一个动态表来的统计报告中.单独是每天产生基于数据表,它是很难使用EF加盟前.所以我包装在两组数据库存取层的框内,一个是EF,一种是传统的ADO.NE ...

  10. Python于*args 和**kwargs使用

    1,*args  当量list名单 def fun_args(farg, *args): print "arg:", farg for value in args: print & ...