ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:592.38KB ,
资源ID:8000773      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8000773.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(BCM帧流程精要.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

BCM帧流程精要.docx

1、BCM帧流程精要BCM交换芯片帧流程精要前提 21、帧流程概述 22、Ingress处理模块 32.1 Ingress处理模块的功能 32.2数据包检查、拆分(Parse) 52.3 VLAN处理(VLAN Determination/Lookup) 52.3.1 单Tag模式处理(普通的LAN内部使用这种Tag) 52.3.2 HTLS和Double Tag处理(仅在特殊的端口如uplink时才使用到这种) 62.4 地址学习(Learning) 92.5 L2查表转发(Switching) 102.5.1 广播(Broadcast) 102.5.2 单播处理(Unicast) 112.5.

2、3 L2多播(L2MC) 132.6 L3路由交换(Routing) 142.6.1 L3单播处理 142.6.2 L3多播处理 152.6.3 DEF_IP处理 162.7 快速包过滤处理(FFP) 172.8 相关其他 183、MMU处理模块 183.1 MMU的调度机制 183.1.1严格优先级方式(Strict Priority) 183.1.2轮询方式(Round-Robin) 193.1.3权重式轮询(Weighted Round-Robin) 193.1.4权重公平排队策略(Weighted Fair Queuing) 193.1.5联合排队策略(Combination Queu

3、ing) 203.2 影响MMU决策的几个关键设置 204、Egress处理模块 20附录: 21F1、基于IPV4的TCP/IP协议中的包封装 21前提要说明帧流程,首先要知道以太网的帧格式,现在流行的以太网帧属于Ethernet II帧,全文的说明将以这种帧结构为基础。以太网帧的数据结构如下:图1 以太网帧图2 带有Qtag信息的帧图3 封装在以太网帧中的IP报文 在最通用的基本帧讲述过程中将引用图1的帧结构,具有VLAN和COS功能的帧处理将引用图2的结构,具有进行三层(L3)处理功能的部分将引用图3的结构,它们可以根据IP首部进行转发。 1、帧流程概述二层以太网交换(L2 Switch

4、)的基本实现原理是基于MAC地址的交换,基于MAC地址的交换实现步骤简述如下:1、交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道具有该源MAC地址的机器是连接在哪个端口上的,这样一组对应信息将被存放在地址表(L2 Table)中;2、随后将读取包头中的目的MAC地址,并在地址表中查找与该MAC地址对应的端口;3、如果在地址表中查到有与这个目的MAC地址对应的端口号,则将数据包直接复制到这个端口上;4、如果在地址表中找不到相应的MAC地址以及对应的端口号,则将数据包广播到所有端口上;当目的机器收到这个数据包以后,如果对源主机进行回应时,交换机又可以按照1中所描述的方式

5、,又学习到这个MAC地址与端口的对应关系,在下次传送数据时就不再需要对所有端口进行广播了。5、依此类推,对于与该交换机有直接或间接联系的所有MAC地址信息都可以实时的学习到,二层交换机就是这样建立和维护它自己的地址表的。上面的这个过程是最简单清晰的理论型理想化诠释,为了实现这个过程,大部分的交换芯片采取下面这种结构方式来做,并且提供了更多的灵活性:图4 IngressMMUEgress Switch Model上图示意性的表示了以太网帧在进入交换芯片以后,一个基本的物理处理流程是从“Ingress”单元到“MMU”单元再到“Egress”单元,该过程描述了以太网交换芯片对帧从进入到送出的处理流

6、程。 下文将从“Ingress”、“MMU”、“Egress”3个阶段对帧的详细处理流程做说明。2、Ingress处理模块2.1 Ingress处理模块的功能交换芯片的每个端口都有一个Ingress逻辑,它负责将端口接收的帧做如何交换或转发处理决策,并将经过其处理的已经包含有转发信息的帧送到MMU做缓存排队和调度安排。Ingress逻辑能够线速处理帧转发,它是帧流程中的核心处理模块。图5 Ingress处理环节框图 抽象一些来讲,图5就是Ingress的处理过程了;细节一些来看,图6可以更清晰的表现这个流程:图6 Ingress的处理流程示意图概括起来,Ingress包含下面一些主要处理功能:

7、1、数据包检查、拆分;2、VLAN处理;3、地址学习;4、L2交换;5、L3路由交换;6、快速过滤处理(FFP);7、其他附加功能,如CPU包处理、Mirror、Trunk功能等;下面的描述针对图6的执行流程展开。2.2数据包检查、拆分(Parse) 帧进入交换芯片后,会检查这个帧的格式、长度、字节对齐、并检查该帧是否存在CRC错误(通过整个帧的数据和FCS验证)、更新端口的统计寄存器、特殊控制帧(比如PAUSE帧)处理等。我们读到的CRC,Dribble等就是在这里得到的。 Ingress逻辑对帧做这些检查将以核实该帧是否有必要继续处理,对认为可以接受的帧将被传送到下一步处理。上面说的这些检

8、查是通过对帧做拆分后才能识别的,拆分的目的是为了获取帧中的关键信息,这些信息就是图1/图2中所示的几个关键信息域的值,这些关键信息域包括:目的MAC地址;源MAC地址;长度/类型域;Qtag信息(COS和VLAN);IP信息等;这些信息在后面将会被作为交换、决策信息使用。以StrataXGS系列交换器件为例,它还会提取出IP信息中的IP地址甚至UDP或TCP的端口号等信息,作为三层路由交换的决策依据。根据长度/类型域(Type/Len)的值可以判断帧是哪种类型的帧,如ARP,UDP,TCP,ICMP,IGMP帧,控制帧等类型。2.3 VLAN处理(VLAN Determination/Look

9、up) 芯片内部(以BCM56XX为例)处理的所有的包都是带有Tag信息的,所以对于进入芯片的每一个数据包,都会赋予一个VLAN ID和相关的CoS优先级信息。如果进入的包本身不带Tag信息或是仅仅带有CoS优先级信息,那么芯片将会根据这个帧的入口(port number)信息到端口协议信息表(PRTABLE_ENTRY寄存器)中去搜索与此端口对应的VLAN ID;如果没有发现匹配的VLAN ID,将赋予一个默认的VLAN ID给该帧,默认的VLAN ID是通过PRTABLE_DEFAULT寄存器。 而对于进入交换机并且已经拥有VLAN Tag和Priority Tag的报文,那么它自己携带的

10、VLAN ID将会直接被使用。优先级信息(CoS或者Priority)也是通过PRTABLE_ENTRY/PRTABLE_DEFAULT赋予的;已经拥有VLAN Tag和Priority Tag的报文,这些Tag将直接被使用。2.3.1 单Tag模式处理(普通的LAN内部使用这种Tag)下面的示意图简明的描述了这个过程的执行步骤,该过程适用于单Tag包(非Double Tagged包)模式,简称为Non-DT Mode(Non-Double Tagged Mode),大多数时候,Tag模式是Non-DT Mode。图7 单Tag包的Tag处理流程图(相关说些参考附录名词解释)图7中蓝色方框内是

11、后续处理,它表现了根据VLAN转发的一种决策示意:对于VID可以从VLAN Table中查找到的包会按找到的结果转发到合适的端口并学习相关信息;对于无法从VLAN Table中找到的,按照默认处理转发,比如丢弃、送CPU或是发往其他默认的端口去。2.3.2 HTLS和Double Tag处理(仅在特殊的端口如uplink时才使用到这种)这个部分涉及到MPLS等东西和比较麻烦的广域网络拓扑结构,这里仅作了解,供有兴趣者参考共学。HTLS(Hierarchical Transparent LAN Services)是分级透明局域网服务的简称,还有一个叫法是Hierarchical VPLS (Vi

12、rtual Private LAN Services),就是分级虚拟专用局域网服务。而Double Tagged Mode是指双重标识模式,该模式下的帧在交换机处理时具有两个Tag标志,看起来如下图所示,它是一种耗费更小资源的划分SPVLAN的方法,Double Tag Mode可以通过设置VLAN_CONTROL寄存器打开或关闭。图8 Double Tag的帧 交换机端口支持并使能Double Tag模式时,会用到Double Tag。与HTLS模式相关的一个时尚名词是MPLS(Multi-Protocol Label Switching)。经过HTLS模式封装后送往端口的帧(Martini

13、 Packet)格式如下:图9 HTLS模式下将Ethernet帧做内部封装Double Tag的需求来源于ISP(Internet Service Provider,因特网服务提供商),它们是基于分级透明局域网服务(HTLS)的一种应用模式。采用Double Tag时,使用SPVLAN(Service Provider VLAN)和CVLAN(Customers VLAN)两个名字分别标识这两种类型的VLAN Tag。SPVLAN在边缘交换机(通常以太网交换机位于桌面接入附近,属于广域网络的边缘设备,所以成为边缘交换机)与Service Provider的核心链路中使用,本地交换设备之间通常

14、仅使用CVLAN Tag就可以了。与一般Double Tag Mode不同之处是HTLS模式采用了增加独立头部的方式,如图9所示。HTLS模式下输入的帧分为下面3类(这里是按Tag有无和是否VLAN AWARE分类的):(1)无标签帧(Untagged)。对这种帧,Ingress会从PORT_VPLS_BITMAP_TABLE读取默认的VLANID赋给该帧,TPID从VLAN_CONTROL的TPID字段获取。(2)有Tag但不关心本地VLAN的帧(Tagged VLAN_UNAWARE)。Ingress从PORT_VPLS_BITMAP_TABLE获取VLANID和VPLS,从VLAN_CO

15、NTROL的TPID字段获取TPID,从PRTABLE_DEFAULT寄存器获取优先级(priority)信息。这种模式下,连接到同一个VPLS线路的网络端口处于同一个VLAN中。(3)有Tag也关心本地VLAN的帧(Tagged VLAN_AWARE)。处理方式为按照CVLAN的信息进行本地转发,相当于区分了两级VLAN。Double Tag模式下进入交换机的帧可以是下面三种当中的任意一种(注意这里是按照Tag有无分类的):A、无标签帧(Untagged);B、带有一个标签的帧(One TagSPVLAN或者CVLAN);C、带有两个标签的帧(SPVLAN和CVLAN);在Double Ta

16、g模式,对于A类帧:SPVLAN域的相关信息将被添加,添加的优先级赋值(priority value)来自PRTABLE_DEFAULT寄存器,类型域(TPID)的值来自VLAN_CONTROL寄存器。B类帧:如果进来的帧没有携带SPVLAN Tag信息,Ingress将插入一个默认的SPVLAN Tag。为了构成一个完整的SPVLAN Tag,VLAN ID来自查找PRTABLE_ENTRY所得到的匹配项;如果没有匹配的,同样以按照PRTABLE_DEFAULT进行处理。C类帧不用做额外处理。BCM56XX对HTLS/Double Tag帧在Ingress的处理流程如下:图10 HTLS/D

17、ouble Tag帧处理上图中的蓝色框和图7一致,表现的是根据VLAN转发的一种决策方式;绿色的框表示携带一个或两个Tag的处理示意图,他的基本处理方法是对没有SPVLAN的帧添加一个SPVLAN Tag;红色框内表示帧本身不携带Tag信息,它会被增加一个SPVLAN Tag。一个关于QoS的想法:没有携带CoS信息的报文,CoS信息的来历如何,交换机怎么判断两个包具有不同的CoS并给他们赋予不同的优先级值呢?一种可能的方式是:以传输IP报文为例,交换芯片会通过读取IP报文中的“8位服务类型”域的值(参看后面的附录图之“IPV4报文头部”)来决定本报文的优先级,该值是IP层描述QoS的关键字域

18、。这也正是前面拆包的时候读取的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。当Double Tagged模式使能的时候,则地址学习是基于MAC_SA+SPVLAN_ID(请注意SPVLAN ID

19、在Double Tagged模式是“主流”查表依据)。首先会判断该帧是否是一个合法帧,然后做处理:如果以此为关键字的地址没有找到,那么这个数据包的MAC_SA+(SP)VLAN_ID信息就会被学习,这种学习是基于硬件的学习;如果找到了此地址,还会检查其信息是否与本搜索关键字一致,如果不一致信息也将被更新(分两种情况:如果是非静态地址入口,那么就做直接更新,或叫做Relearning;另一种是此入口地址是静态地址配置,那么这个帧将被标记为Drop并且会Copy一份送给CPU处理)。硬件学习(Hardware Learning)可以通过PORT Table的CML(CPU Managed Lear

20、ning)bit进行配置。 地址学习的过程示意图如下:图11 地址学习处理流程 地址学习和查表转发存在一种提高执行效率的流行方式,就是所谓的Hash方式,有兴趣的可以学习5690-AN400-RDS.pdf。2.5 L2查表转发(Switching)硬件学习完成后,将会检查目的地址是否属于桥协议数据单元(即BPDU控制帧=BridgeProtocolDataUnit:BPDU帧的生成树协议定义的一种帧,它被用于根据一定的算法决定选择冗余链路中的某一条作为通道)或是否在特殊地址范围(即01:80:C2:00:00:1001:80:C2:00:00:2x)内,对于这样的特殊帧,将会被送到CPU处理

21、或是被广播(flood)到本VLAN的所有端口上去。需要注意的是,目的地址是01:80:C2:00:00:0x的包会被丢弃,只有处于转发状态(Forwarding State)的端口(这些端口是通过生成树协议SPT选定承认后的活动端口)接收到的帧才会被进一步处理。然后他们会被进一步的处理以便决定包类型:广播(Broadcast)、2层多播(L2 Multicast)、3层多播(L3 Multicast=IPMC)、单播(Unicast)或者三层单播(L3 Unicast),针对这些不同类型的数据包,交换机将决定下一步分别进行不同的处理。上面描述的过程使用下面的图表示起来更加清晰:图12 L2转

22、发处理流程下面按照几个支路的不同处理方式进行描述:2.5.1 广播(Broadcast) 对于广播报文(目的地址DA=0xff:ff:ff:ff:ff:ff),将基于本VLAN所包含的端口进行转发,这就是VLAN对广播域的划分作用所在。对于Broadcom的很多芯片,都具有广播风暴控制功能,用以限制广播速率(Broadcast Rate)。对于BCM56XX芯片,广播风暴控制功能可以通过BCAST_RATE_CONTRO寄存器的ENABLE位进行控制。图13 L2层对广播的处理2.5.2 单播处理(Unicast) 对于单播帧,首先会以VLAN_ID,MAC_DA为关键字搜索L2_ENTRY表

23、。如果查找到匹配的端口,会返回该端口所在的模块号(module id)和该端口的端口号(port),以便正确转发。如果没有查找到(没有找到的包被称为DLF=Destination Lookup Failures),这种包将会被送到该VLAN所包含的所有端口进行广播(Flood),注意这个广播和目的地址为0xff:ff:ff:ff:ff:ff的广播(Broadcast)不是同一类,这里只是表示对这个帧进行洪泛(flood)转发。但与Broadcast相同的是,并不是所有的Flood情况都可以被允许的,同样可以进行速率控制(Rate limiting),只是所使用的寄存器不同,BCM56XX使用D

24、LFBC_RATE_CONTROL寄存器进行控制。图14 单播帧的分类处理其中L2层的处理(Do L2)如下:图15 DLF帧处理 对L2层的“正宗”单播包处理如下(注意Trunk的处理分支):图16 L2层单播帧处理2.5.3 L2多播(L2MC) 对于L2多播帧,这种帧的特征是DA40=1就是第40bit=1,同样会进行以VLAN_ID,DA为关键字的L2_ENTRY表搜索。L2_ENTRY表中的匹配字将返回一个指针作为L2MC表的索引。L2MC表包含多播组的成员端口信息,然后数据包会基于端口过滤模式(Port Filtering Mode=PFM)进行发送,实际上端口过滤模式就是通过L2

25、_ENTRY表和L2MC表的搜索结果共同决定的。Multicast速率也可以通过寄存器限制,在BCM56XX芯片中该寄存器为MCAST_RATE_CONTROL,这个寄存器同时对L2和L3层的多播速率控制有效。 图17 L2层多播帧处理2.6 L3路由交换(Routing)2.6.1 L3单播处理 如果在图13的L2层处理的时候发现是L3层单播帧(通过L3 bit设置),那么它不会根据L2层对L2_ENTRY的查表结果进行转发,而会处理L3的相关信息,如果在查到的L2_ENTRY匹配结果中发现L3 bit被设置,接下来该包会做下面这些检查(IP报文请参考附图之IPV4报文结构图):1、是IP包

26、2、没有IP选项3、IPV4报文4、IP校验和OK(Checksum OK)5、生存时间OK(TTL OK)6、目的IP地址是D类IP地址(DIP is Class D)如果这些条件满足,那么源IP地址将作为关键字去搜索3层表项(L3 Table)。一旦发现匹配项,将更新查表命中位(Hit Bit),不过更新的前提条件是满足此设置:ARL_CONTROL.L3SH_EN=1。同样地L3表也通过目的IP地址进行搜索,如果返回匹配项,那么下一跳(Next Hop)的MAC地址和Egress端口以及L3接口号(L3 Intreface number=L3INTF)等信息就可以由此获取,这些出口信息将

27、被用于包的输出转发。如果目的使用IP查表没有找到匹配项,则该IP按照“DEF_IP”处理(见下文)。总结起来,L3单播的转发处理流程如下:图18 L3层单播帧处理2.6.2 L3多播处理 L3多播报文的特点是:CONFIG.IPMC_ENABLE=1&!Martini_pkt & (Pkt.DA47:24= first 24 bits is 0x01005e and Pkt.DA23= Most Significant bit of 4th Byte is 0),下面这些检查将进行:1、是IP包2、没有IP选项3、IPV4报文4、IP校验和OK(Checksum OK)5、目的IP地址是D类I

28、P地址(DIP is Class D) L3与L2的多播有点类似,不同的是它通过SIP+DIP和0DIP进行转发搜索,搜索表项为L3_IPMC,这里不多说。详情请看BCM56XX之PG文档。图19 L3层多播帧处理2.6.3 DEF_IP处理 当遇到DEF_IP(本地L3 IP路由表无法查找到全匹配的情况)这种情况时,L3层交换机的所谓路由特性就显得更有意义了,这就是所谓的最长前缀匹配(Longest Prefix Match=LPM)方式转发了,这正是L3路由交换之特性所在了。因为DEF_IP涉及一些算法,我这里不详解,将DEF_IP的处理贴个图出来吧,有兴趣的同志可以研究(更多详细信息请参

29、考BCM56XX之相关文档)。图20 DEF_IP处理2.7 快速包过滤处理(FFP) FFP是Fast Filter Processor的简称。在每一个FE和GE端口都有一个FFP(注意10Gbps的Higig端口没有FFP),过滤处理是在Ingress逻辑中完成的。FFP可以对数据包分类并按照设置的规则进行处理,并可以决定包的输出转发行为。FFP可以线速处理进入的通信流量,并可以把数据帧根据设置进行分类成不同的CoS,这有助于提供完好的服务质量以及方便MMU的策略处理。FFP的四种关键操作是Masking、Rule Matching、Metering、Packet Accounting。它

30、可以根据特殊的设定对不同的帧进行不同的处理,FFP根据两个关键设置IMASK和IRULE对包进行规则处理,这样FFP的过滤处理就可以根据我们的意愿来选择和分类报文。根据不同的IMASK和IRULE设置,FFP对报文的处理具有极大的灵活性。本文阐释帧流程,不细致讨论主要依靠软件设置提供灵活性的FFP的具体处理行为。2.8 相关其他 因为FFP的灵活性,可以设置一些规则做到额外的功能特性。比如选择性的接收或不接收某些帧,选择将帧送往CPU或直接处理,对特殊的帧做防护:比如所谓的ARP攻击防护,所谓的DOS攻击防护等,这就是交换机的一种额外功能了。前面的文档中可以看到有一些帧是被送往CPU处理的,而

31、有些采取策略性丢弃。 Trunk功能也是一项重要的额外功能。它是指将一组端口“绑定”或“聚合”到一起,表面上看起来是作为一个端口在使用。它可以增加带宽,提供冗余性能等。可以看到“L2层单播帧处理”中对Trunk的考虑。 Mirror功能是一个额外的功能,它可以作为对端口监视用,通常情况下不使用这个功能(某些出于要监视另一个端口帧时的调试可以使用此功能),但是在帧的处理流程中会有这么一个规则的考虑,图6中的最后一步就是针对Mirror的,它相当于提供一个捷径,会将某Ingress收到的东西不经过任何处理而Copy一份到某一个Egress上去。3、MMU处理模块MMU负责对帧进行缓存排队(buffering)处理和调度处理(scheduling),它从Ingress逻辑中接收帧,并调度、暂存这些帧,随后传送到Egress逻辑。所有的帧存储和对帧缓存的维护管理都是通过MMU完成的,MMU表现为调度的核心所在。图21 MMU3.1 MMU的调度机制一旦数据包被映射到CoS队列,他们的转发就是依靠MMU调度进行的,MMU调度机制有5种(以BCM56XX为例)可能的配置方式:1)严格优先级方式(SP=Strict Priority)2)轮询方式(RR=Round-Robin)3)权重轮询式(WRR=Weighted Round-Robin)4)权重公平队列式(WFQ

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

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