BCM帧流程精要.docx

上传人:b****6 文档编号:8000773 上传时间:2023-01-27 格式:DOCX 页数:27 大小:592.38KB
下载 相关 举报
BCM帧流程精要.docx_第1页
第1页 / 共27页
BCM帧流程精要.docx_第2页
第2页 / 共27页
BCM帧流程精要.docx_第3页
第3页 / 共27页
BCM帧流程精要.docx_第4页
第4页 / 共27页
BCM帧流程精要.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

BCM帧流程精要.docx

《BCM帧流程精要.docx》由会员分享,可在线阅读,更多相关《BCM帧流程精要.docx(27页珍藏版)》请在冰豆网上搜索。

BCM帧流程精要.docx

BCM帧流程精要

BCM交换芯片帧流程精要

前提2

1、帧流程概述2

2、Ingress处理模块3

2.1Ingress处理模块的功能3

2.2数据包检查、拆分(Parse)5

2.3VLAN处理(VLANDetermination/Lookup)5

2.3.1单Tag模式处理(普通的LAN内部使用这种Tag)5

2.3.2HTLS和DoubleTag处理(仅在特殊的端口如uplink时才使用到这种)6

2.4地址学习(Learning)9

2.5L2查表转发(Switching)10

2.5.1广播(Broadcast)10

2.5.2单播处理(Unicast)11

2.5.3L2多播(L2MC)13

2.6L3路由交换(Routing)14

2.6.1L3单播处理14

2.6.2L3多播处理15

2.6.3DEF_IP处理16

2.7快速包过滤处理(FFP)17

2.8相关其他18

3、MMU处理模块18

3.1MMU的调度机制18

3.1.1严格优先级方式(StrictPriority)18

3.1.2轮询方式(Round-Robin)19

3.1.3权重式轮询(WeightedRound-Robin)19

3.1.4权重公平排队策略(WeightedFairQueuing)19

3.1.5联合排队策略(CombinationQueuing)20

3.2影响MMU决策的几个关键设置20

4、Egress处理模块20

附录:

21

F1、基于IPV4的TCP/IP协议中的包封装21

前提

要说明帧流程,首先要知道以太网的帧格式,现在流行的以太网帧属于EthernetII帧,全文的说明将以这种帧结构为基础。

以太网帧的数据结构如下:

图1以太网帧

图2带有Qtag信息的帧

图3封装在以太网帧中的IP报文

在最通用的基本帧讲述过程中将引用图1的帧结构,具有VLAN和COS功能的帧处理将引用图2的结构,具有进行三层(L3)处理功能的部分将引用图3的结构,它们可以根据IP首部进行转发。

1、帧流程概述

二层以太网交换(L2Switch)的基本实现原理是基于MAC地址的交换,基于MAC地址的交换实现步骤简述如下:

1、交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道具有该源MAC地址的机器是连接在哪个端口上的,这样一组对应信息将被存放在地址表(L2Table)中;

2、随后将读取包头中的目的MAC地址,并在地址表中查找与该MAC地址对应的端口;

3、如果在地址表中查到有与这个目的MAC地址对应的端口号,则将数据包直接复制到这个端口上;

4、如果在地址表中找不到相应的MAC地址以及对应的端口号,则将数据包广播到所有端口上;当目的机器收到这个数据包以后,如果对源主机进行回应时,交换机又可以按照1中所描述的方式,又学习到这个MAC地址与端口的对应关系,在下次传送数据时就不再需要对所有端口进行广播了。

5、依此类推,对于与该交换机有直接或间接联系的所有MAC地址信息都可以实时的学习到,二层交换机就是这样建立和维护它自己的地址表的。

上面的这个过程是最简单清晰的理论型理想化诠释,为了实现这个过程,大部分的交换芯片采取下面这种结构方式来做,并且提供了更多的灵活性:

图4Ingress+MMU+EgressSwitchModel

上图示意性的表示了以太网帧在进入交换芯片以后,一个基本的物理处理流程是从“Ingress”单元到“MMU”单元再到“Egress”单元,该过程描述了以太网交换芯片对帧从进入到送出的处理流程。

下文将从“Ingress”、“MMU”、“Egress”3个阶段对帧的详细处理流程做说明。

2、Ingress处理模块

2.1Ingress处理模块的功能

交换芯片的每个端口都有一个Ingress逻辑,它负责将端口接收的帧做如何交换或转发处理决策,并将经过其处理的已经包含有转发信息的帧送到MMU做缓存排队和调度安排。

Ingress逻辑能够线速处理帧转发,它是帧流程中的核心处理模块。

图5Ingress处理环节框图

抽象一些来讲,图5就是Ingress的处理过程了;细节一些来看,图6可以更清晰的表现这个流程:

图6Ingress的处理流程示意图

概括起来,Ingress包含下面一些主要处理功能:

1、数据包检查、拆分;

2、VLAN处理;

3、地址学习;

4、L2交换;

5、L3路由交换;

6、快速过滤处理(FFP);

7、其他附加功能,如CPU包处理、Mirror、Trunk功能等;

下面的描述针对图6的执行流程展开。

2.2数据包检查、拆分(Parse)

帧进入交换芯片后,会检查这个帧的格式、长度、字节对齐、并检查该帧是否存在CRC错误(通过整个帧的数据和FCS验证)、更新端口的统计寄存器、特殊控制帧(比如PAUSE帧)处理等。

我们读到的CRC,Dribble等就是在这里得到的。

Ingress逻辑对帧做这些检查将以核实该帧是否有必要继续处理,对认为可以接受的帧将被传送到下一步处理。

上面说的这些检查是通过对帧做拆分后才能识别的,拆分的目的是为了获取帧中的关键信息,这些信息就是图1/图2中所示的几个关键信息域的值,这些关键信息域包括:

目的MAC地址;

源MAC地址;

长度/类型域;

Qtag信息(COS和VLAN);

IP信息等;

这些信息在后面将会被作为交换、决策信息使用。

以StrataXGS系列交换器件为例,它还会提取出IP信息中的IP地址甚至UDP或TCP的端口号等信息,作为三层路由交换的决策依据。

根据长度/类型域(Type/Len)的值可以判断帧是哪种类型的帧,如ARP,UDP,TCP,ICMP,IGMP帧,控制帧等类型。

2.3VLAN处理(VLANDetermination/Lookup)

芯片内部(以BCM56XX为例)处理的所有的包都是带有Tag信息的,所以对于进入芯片的每一个数据包,都会赋予一个VLANID和相关的CoS优先级信息。

如果进入的包本身不带Tag信息或是仅仅带有CoS优先级信息,那么芯片将会根据这个帧的入口(portnumber)信息到端口协议信息表(PRTABLE_ENTRY寄存器)中去搜索与此端口对应的VLANID;如果没有发现匹配的VLANID,将赋予一个默认的VLANID给该帧,默认的VLANID是通过PRTABLE_DEFAULT寄存器。

而对于进入交换机并且已经拥有VLANTag和PriorityTag的报文,那么它自己携带的VLANID将会直接被使用。

优先级信息(CoS或者Priority)也是通过PRTABLE_ENTRY/PRTABLE_DEFAULT赋予的;已经拥有VLANTag和PriorityTag的报文,这些Tag将直接被使用。

2.3.1单Tag模式处理(普通的LAN内部使用这种Tag)

下面的示意图简明的描述了这个过程的执行步骤,该过程适用于单Tag包(非DoubleTagged包)模式,简称为Non-DTMode(Non-DoubleTaggedMode),大多数时候,Tag模式是Non-DTMode。

图7单Tag包的Tag处理流程图(相关说些参考附录名词解释)

图7中蓝色方框内是后续处理,它表现了根据VLAN转发的一种决策示意:

对于VID可以从VLANTable中查找到的包会按找到的结果转发到合适的端口并学习相关信息;对于无法从VLANTable中找到的,按照默认处理转发,比如丢弃、送CPU或是发往其他默认的端口去。

2.3.2HTLS和DoubleTag处理(仅在特殊的端口如uplink时才使用到这种)

这个部分涉及到MPLS等东西和比较麻烦的广域网络拓扑结构,这里仅作了解,供有兴趣者参考共学。

HTLS(HierarchicalTransparentLANServices)是分级透明局域网服务的简称,还有一个叫法是HierarchicalVPLS(VirtualPrivateLANServices),就是分级虚拟专用局域网服务。

而DoubleTaggedMode是指双重标识模式,该模式下的帧在交换机处理时具有两个Tag标志,看起来如下图所示,它是一种耗费更小资源的划分SPVLAN的方法,DoubleTagMode可以通过设置VLAN_CONTROL寄存器打开或关闭。

图8DoubleTag的帧

交换机端口支持并使能DoubleTag模式时,会用到DoubleTag。

与HTLS模式相关的一个时尚名词是MPLS(Multi-ProtocolLabelSwitching)。

经过HTLS模式封装后送往端口的帧(MartiniPacket)格式如下:

图9HTLS模式下将Ethernet帧做内部封装

DoubleTag的需求来源于ISP(InternetServiceProvider,因特网服务提供商),它们是基于分级透明局域网服务(HTLS)的一种应用模式。

采用DoubleTag时,使用SPVLAN(ServiceProviderVLAN)和CVLAN(CustomersVLAN)两个名字分别标识这两种类型的VLANTag。

SPVLAN在边缘交换机(通常以太网交换机位于桌面接入附近,属于广域网络的边缘设备,所以成为边缘交换机)与ServiceProvider的核心链路中使用,本地交换设备之间通常仅使用CVLANTag就可以了。

与一般DoubleTagMode不同之处是HTLS模式采用了增加独立头部的方式,如图9所示。

HTLS模式下输入的帧分为下面3类(这里是按Tag有无和是否VLANAWARE分类的):

(1)无标签帧(Untagged)。

对这种帧,Ingress会从PORT_VPLS_BITMAP_TABLE读取默认的VLANID赋给该帧,TPID从VLAN_CONTROL的TPID字段获取。

(2)有Tag但不关心本地VLAN的帧(TaggedVLAN_UNAWARE)。

Ingress从PORT_VPLS_BITMAP_TABLE获取VLANID和VPLS,从VLAN_CONTROL的TPID字段获取TPID,从PRTABLE_DEFAULT寄存器获取优先级(priority)信息。

这种模式下,连接到同一个VPLS线路的网络端口处于同一个VLAN中。

(3)有Tag也关心本地VLAN的帧(TaggedVLAN_AWARE)。

处理方式为按照CVLAN的信息进行本地转发,相当于区分了两级VLAN。

DoubleTag模式下进入交换机的帧可以是下面三种当中的任意一种(注意这里是按照Tag有无分类的):

A、无标签帧(Untagged);

B、带有一个标签的帧(OneTag――SPVLAN或者CVLAN);

C、带有两个标签的帧(SPVLAN和CVLAN);

在DoubleTag模式,对于A类帧:

SPVLAN域的相关信息将被添加,添加的优先级赋值(priorityvalue)来自PRTABLE_DEFAULT寄存器,类型域(TPID)的值来自VLAN_CONTROL寄存器。

B类帧:

如果进来的帧没有携带SPVLANTag信息,Ingress将插入一个默认的SPVLANTag。

为了构成一个完整的SPVLANTag,VLANID来自查找PRTABLE_ENTRY所得到的匹配项;如果没有匹配的,同样以按照PRTABLE_DEFAULT进行处理。

C类帧不用做额外处理。

BCM56XX对HTLS/DoubleTag帧在Ingress的处理流程如下:

图10HTLS/DoubleTag帧处理

上图中的蓝色框和图7一致,表现的是根据VLAN转发的一种决策方式;绿色的框表示携带一个或两个Tag的处理示意图,他的基本处理方法是对没有SPVLAN的帧添加一个SPVLANTag;红色框内表示帧本身不携带Tag信息,它会被增加一个SPVLANTag。

一个关于QoS的想法:

没有携带CoS信息的报文,CoS信息的来历如何,交换机怎么判断两个包具有不同的CoS并给他们赋予不同的优先级值呢?

一种可能的方式是:

以传输IP报文为例,交换芯片会通过读取IP报文中的“8位服务类型”域的值(参看后面的附录图之“IPV4报文头部”)来决定本报文的优先级,该值是IP层描述QoS的关键字域。

这也正是前面拆包的时候读取的IP信息之一(当然还有目的IP/源IP等信息),那么L2物理传输上的这个CoS信息应该就是来源于上层通信协议栈的QoS字段。

2.4地址学习(Learning)

在VLAN和优先级的Tag插入以后,交换芯片(以BCM56XX为例)将检查源MAC地址并进行一些必要的学习处理,这就是地址学习了。

交换机接下来会以{VLAN_ID,MAC_SA(源MAC地址)}为关键字去搜索L2_ENTRY表。

BCM56XX芯片对地址的学习基于MAC_SA+VLAN_ID。

当DoubleTagged模式使能的时候,则地址学习是基于MAC_SA+SPVLAN_ID(请注意SPVLANID在DoubleTagged模式是“主流”查表依据)。

首先会判断该帧是否是一个合法帧,然后做处理:

如果以此为关键字的地址没有找到,那么这个数据包的MAC_SA+(SP)VLAN_ID信息就会被学习,这种学习是基于硬件的学习;如果找到了此地址,还会检查其信息是否与本搜索关键字一致,如果不一致信息也将被更新(分两种情况:

如果是非静态地址入口,那么就做直接更新,或叫做Relearning;另一种是此入口地址是静态地址配置,那么这个帧将被标记为Drop并且会Copy一份送给CPU处理)。

硬件学习(HardwareLearning)可以通过PORTTable的CML(CPUManagedLearning)bit进行配置。

地址学习的过程示意图如下:

图11地址学习处理流程

地址学习和查表转发存在一种提高执行效率的流行方式,就是所谓的Hash方式,有兴趣的可以学习《5690-AN400-RDS.pdf》。

2.5L2查表转发(Switching)

硬件学习完成后,将会检查目的地址是否属于桥协议数据单元(即BPDU控制帧=Bridge Protocol Data Unit:

BPDU帧的生成树协议定义的一种帧,它被用于根据一定的算法决定选择冗余链路中的某一条作为通道)或是否在特殊地址范围(即01:

80:

C2:

00:

00:

10~01:

80:

C2:

00:

00:

2x)内,对于这样的特殊帧,将会被送到CPU处理或是被广播(flood)到本VLAN的所有端口上去。

需要注意的是,目的地址是01:

80:

C2:

00:

00:

0x的包会被丢弃,只有处于转发状态(ForwardingState)的端口(这些端口是通过生成树协议SPT选定承认后的活动端口)接收到的帧才会被进一步处理。

然后他们会被进一步的处理以便决定包类型:

广播(Broadcast)、2层多播(L2Multicast)、3层多播(L3Multicast=IPMC)、单播(Unicast)或者三层单播(L3Unicast),针对这些不同类型的数据包,交换机将决定下一步分别进行不同的处理。

上面描述的过程使用下面的图表示起来更加清晰:

图12L2转发处理流程

下面按照几个支路的不同处理方式进行描述:

2.5.1广播(Broadcast)

对于广播报文(目的地址DA=0xff:

ff:

ff:

ff:

ff:

ff),将基于本VLAN所包含的端口进行转发,这就是VLAN对广播域的划分作用所在。

对于Broadcom的很多芯片,都具有广播风暴控制功能,用以限制广播速率(BroadcastRate)。

对于BCM56XX芯片,广播风暴控制功能可以通过BCAST_RATE_CONTRO寄存器的ENABLE位进行控制。

图13L2层对广播的处理

2.5.2单播处理(Unicast)

对于单播帧,首先会以{VLAN_ID,MAC_DA}为关键字搜索L2_ENTRY表。

如果查找到匹配的端口,会返回该端口所在的模块号(moduleid)和该端口的端口号(port#),以便正确转发。

如果没有查找到(没有找到的包被称为DLF=DestinationLookupFailures),这种包将会被送到该VLAN所包含的所有端口进行广播(Flood),注意这个广播和目的地址为0xff:

ff:

ff:

ff:

ff:

ff的广播(Broadcast)不是同一类,这里只是表示对这个帧进行洪泛(flood)转发。

但与Broadcast相同的是,并不是所有的Flood情况都可以被允许的,同样可以进行速率控制(Ratelimiting),只是所使用的寄存器不同,BCM56XX使用DLFBC_RATE_CONTROL寄存器进行控制。

图14单播帧的分类处理

其中L2层的处理(DoL2)如下:

图15DLF帧处理

对L2层的“正宗”单播包处理如下(注意Trunk的处理分支):

图16L2层单播帧处理

2.5.3L2多播(L2MC)

对于L2多播帧,这种帧的特征是DA[40]=1就是第40bit=1,同样会进行以{VLAN_ID,DA}为关键字的L2_ENTRY表搜索。

L2_ENTRY表中的匹配字将返回一个指针作为L2MC表的索引。

L2MC表包含多播组的成员端口信息,然后数据包会基于端口过滤模式(PortFilteringMode=PFM)进行发送,实际上端口过滤模式就是通过L2_ENTRY表和L2MC表的搜索结果共同决定的。

Multicast速率也可以通过寄存器限制,在BCM56XX芯片中该寄存器为MCAST_RATE_CONTROL,这个寄存器同时对L2和L3层的多播速率控制有效。

图17L2层多播帧处理

2.6L3路由交换(Routing)

2.6.1L3单播处理

如果在图13的L2层处理的时候发现是L3层单播帧(通过L3bit设置),那么它不会根据L2层对L2_ENTRY的查表结果进行转发,而会处理L3的相关信息,如果在查到的L2_ENTRY匹配结果中发现L3bit被设置,接下来该包会做下面这些检查(IP报文请参考附图之IPV4报文结构图):

1、是IP包

2、没有IP选项

3、IPV4报文

4、IP校验和OK(ChecksumOK)

5、生存时间OK(TTLOK)

6、目的IP地址是D类IP地址(DIPisClassD)

如果这些条件满足,那么源IP地址将作为关键字去搜索3层表项(L3Table)。

一旦发现匹配项,将更新查表命中位(HitBit),不过更新的前提条件是满足此设置:

ARL_CONTROL.L3SH_EN=1。

同样地L3表也通过目的IP地址进行搜索,如果返回匹配项,那么下一跳(NextHop)的MAC地址和Egress端口以及L3接口号(L3Intrefacenumber=L3INTF)等信息就可以由此获取,这些出口信息将被用于包的输出转发。

如果目的使用IP查表没有找到匹配项,则该IP按照“DEF_IP”处理(见下文)。

总结起来,L3单播的转发处理流程如下:

图18L3层单播帧处理

2.6.2L3多播处理

L3多播报文的特点是:

CONFIG.IPMC_ENABLE=1&!

Martini_pkt&(Pkt.DA[47:

24]=first24bitsis0x01005eandPkt.DA[23]=MostSignificantbitof4thByteis0),下面这些检查将进行:

1、是IP包

2、没有IP选项

3、IPV4报文

4、IP校验和OK(ChecksumOK)

5、目的IP地址是D类IP地址(DIPisClassD)

L3与L2的多播有点类似,不同的是它通过SIP+DIP和0+DIP进行转发搜索,搜索表项为L3_IPMC,这里不多说。

详情请看BCM56XX之PG文档。

图19L3层多播帧处理

2.6.3DEF_IP处理

当遇到DEF_IP(本地L3IP路由表无法查找到全匹配的情况)这种情况时,L3层交换机的所谓路由特性就显得更有意义了,这就是所谓的最长前缀匹配(LongestPrefixMatch=LPM)方式转发了,这正是L3路由交换之特性所在了。

因为DEF_IP涉及一些算法,我这里不详解,将DEF_IP的处理贴个图出来吧,有兴趣的同志可以研究(更多详细信息请参考BCM56XX之相关文档)。

图20DEF_IP处理

2.7快速包过滤处理(FFP)

FFP是FastFilterProcessor的简称。

在每一个FE和GE端口都有一个FFP(注意10Gbps的Higig端口没有FFP),过滤处理是在Ingress逻辑中完成的。

FFP可以对数据包分类并按照设置的规则进行处理,并可以决定包的输出转发行为。

FFP可以线速处理进入的通信流量,并可以把数据帧根据设置进行分类成不同的CoS,这有助于提供完好的服务质量以及方便MMU的策略处理。

FFP的四种关键操作是Masking、RuleMatching、Metering、PacketAccounting。

它可以根据特殊的设定对不同的帧进行不同的处理,FFP根据两个关键设置IMASK和IRULE对包进行规则处理,这样FFP的过滤处理就可以根据我们的意愿来选择和分类报文。

根据不同的IMASK和IRULE设置,FFP对报文的处理具有极大的灵活性。

本文阐释帧流程,不细致讨论主要依靠软件设置提供灵活性的FFP的具体处理行为。

2.8相关其他

因为FFP的灵活性,可以设置一些规则做到额外的功能特性。

比如选择性的接收或不接收某些帧,选择将帧送往CPU或直接处理,对特殊的帧做防护:

比如所谓的ARP攻击防护,所谓的DOS攻击防护等,这就是交换机的一种额外功能了。

前面的文档中可以看到有一些帧是被送往CPU处理的,而有些采取策略性丢弃。

Trunk功能也是一项重要的额外功能。

它是指将一组端口“绑定”或“聚合”到一起,表面上看起来是作为一个端口在使用。

它可以增加带宽,提供冗余性能等。

可以看到“L2层单播帧处理”中对Trunk的考虑。

Mirror功能是一个额外的功能,它可以作为对端口监视用,通常情况下不使用这个功能(某些出于要监视另一个端口帧时的调试可以使用此功能),但是在帧的处理流程中会有这么一个规则的考虑,图6中的最后一步就是针对Mirror的,它相当于提供一个捷径,会将某Ingress收到的东西不经过任何处理而Copy一份到某一个Egress上去。

3、MMU处理模块

MMU负责对帧进行缓存排队(buffering)处理和调度处理(scheduling),它从Ingress逻辑中接收帧,并调度、暂存这些帧,随后传送到Egress逻辑。

所有的帧存储和对帧缓存的维护管理都是通过MMU完成的,MMU表现为调度的核心所在。

图21MMU

3.1MMU的调度机制

一旦数据包被映射到CoS队列,他们的转发就是依靠MMU调度进行的,MMU调度机制有5种(以BCM56XX为例)可能的配置方式:

1)严格优先级方式(SP=StrictPriority)

2)轮询方式(RR=Round-Robin)

3)权重轮询式(WRR=WeightedRound-Robin)

4)权重公平队列式(WFQ

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

当前位置:首页 > 解决方案 > 学习计划

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

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