BCM5314x PACKET FLOW

来源:互联网 发布:淘宝女生船袜 编辑:程序博客网 时间:2024/04/28 12:21

                                                                      BCM5314x PACKET FLOW

 

支持标准以太网报文 64~1522 超长包可达9K byte;

 

L2上行处理:

上行处理模块进行报文解析,可以通过上行模块和fp模块解析报文所有字段;对于不带vlan标签的报文可以通过vcap、vlan转换表、子网、协议和端口进行分配vlan及优先级;

带vlan标签的报文,使用报文的vlan进行查找vlan表,并按照命中的vlan表进行处理,如果vlan配置了生成树,则按照vlan端口bitmap和端口过滤规则进行处理。如果vlan表不存在则丢弃或把该报文送到cpu处理;

源mac学习,基于mac+vlan进行学习,可以通过cpu managed learning控制是否由cpu进行学习mac,cml可以基于端口配置,cpu学习时,硬件复制学报文送到cpu。

目的mac查找,先查找L2_USER_ENTRY,如果命中则按照表项结果进行处理,不命中继续查 L2_ENTRY表,命中按表项内容转发处理,不命中则vlan内广播;

多播报文处理,也同样查L2_USER_ENTRY并和单播报文同样处理,不命中时查L2_ENTRY表,命中L2_ENTRY表则从表中获取L2MC表的索引查找L2MC表(内容为bitmap),根据vlan表中的PFM标志进行处理,PFM为0则vlan内广播,为1则按L2MC表的bitmp复制转发,为2且L2MC不命中则丢弃;

广播报文也同样像单播报文一样解析,在学习mac后vlan内广播;

 

L3上行转发:

芯片支持三层交换和路由转发,三层交换功能允许从一个vlan转发到另外一个vlan中,和二层交换不同,三层交换基于目的ip,使用三层交换功能时必须是能L3_ENABLE标志;

三层报文经过目的mac查找,如果命中L2_USER_ENTRY或L2_ENTRY表,并且L3_ENABLE标志是能则进入L3模块,否则按照二层转发处理;

报文进入三层处理模块,先查找源ip表,如果没有命中,则设置sip no hit标志,继续查找目的ip表;源ip查找失败时随机复制报文送到cpu,上送原因为source miss;源ip查找命中,芯片更新L3 hit bit标志,当源ip表内容和报文的mac、入端口号不一致时,报文转发给cpu,由软件更新L3接口表项;

用目的ip查找IP表,命中后表项中获取ING_L3_NEXT_HOP和EGR_L3_NEXT_HOP表的索引,在ING_L3_NEXT_HOP表中包含目的端口,EGR_L3_NEXT_HOP表中包含下一跳的mac;

如果L3表项项查找失败,硬件继续查找L3 LPM表,按最长匹配搜索;如果命中,表项包NEXT_HOP_INDEX,用来查找ING_L3_NEXT_HOP和EGR_L3_NEXT_HOP表;

上面的描述是一个非静态默认路由,所以用户可以通过程序下发适当的默认路由到LPM表中,可以下发一条包含所有条目的掩码的表项,用来匹配所有报文;

一个正常路由转发的报文,硬件自动的进行源目的mac和vlan的修改,并且对TTL字段进行递减,重新计算checksum和以太FCS。非正常路由转发的报文可选送到cpu进行处理。三层表项包含的hit bit可以用来支持基于软件老化表项功能,hit bit有dip查找时进行刷新,也可选择sip查找时刷新;LPM表的hit bit在查找LPM表项时进行刷新;

 

Cpu端口的上下行报文:

5314x cpu端口是CMIC模块的一部分,通过PCIe接口可以连接外部cpu。芯片允许应用程序通过cpu端口和外部ge接口发送或接收报文。Cmic模块的dma 引擎收发接口和cpu的报文数据,pci总线操作对于dma引擎来说也像操作一个pci总线master一样;cmic可以发送两种报文格式到cpu: 以太报文和higig头报文;

发送以太报文时,像一个普通报文通过ge口进入交换芯片一样转发处理,通过转发逻辑对报文进行处理。

当发送higig格式报文时,cpu通过higig头对报文的转发进行完全控制。这种方式一般使用在前面芯片是一个strataXGS器件。报文的转发基于cpu精确指定的信息进行转发。这种模式一般可用于发送控制报文,如bpdu、rip、ospf等报文;

0 0