目录

1、交换芯片架构............................................................................................................. 2

2、L2转发流程............................................................................................................... 3

2.1 L2转发原理........................................................................................................ 3

2.2 L2转发相关的表项............................................................................................. 5

2.2.1 port表..................................................................................................... 5

2.2.2 egress port表.......................................................................................... 6

2.2.3 L2地址表................................................................................................. 6

2.2.4 VLAN表................................................................................................... 7

3、L3转发流程............................................................................................................... 8

4、L2组播转发流程...................................................................................................... 10

5、L3组播转发流程...................................................................................................... 10

6、流分类处理流程....................................................................................................... 13

本文以broadcom56504/56300交换芯片为重点,介绍一下交换芯片的工作原理。

1、交换芯片架构

交换芯片由GE/XE接口(MAC/PHY)模块、CPU接口模块、输入输出匹配/修改模块、MMU模块、L2转发模块、L3转发模块、安全模块、流分类模块等模块组成,其结构如图1所示:

图1 交换芯片的组成

 

56504包含24个GE端口,4个10G端口,10G端口既可以用于堆叠,也可以用于上联/级联。

56504交换芯片与CPU的接口称为CMIC接口。交换芯片与CPU通过PCI总线连接。其他类型交换芯片与CPU的接口可以是:SPI+MII、I2C+MII、系统总线+MII、SMI+MII等。交换芯片的包处理流程如图2所示:

图2 交换芯片的包处理流程简图

 

  包由端口进入交换芯片之后,首先进行包头字段匹配,为流分类做准备;然后经过一个安全引擎进行包过滤;符合安全的包进行L2交换或者L3路由,并经过流分类处理器对匹配的包做相关动作(比如丢弃、限速、修改VLAN等);对于可以转发的包根据802.1P或DSCP放到不同队列的buffer中,调度器根据优先级或者WRR等算法进行队列调度,在端口发出该包之前执行流分类修改动作,最终从相应端口发送出去。

2、L2转发流程

2.1 L2转发原理

对于交换芯片来说,L2转发是一个最基本的功能。L2功能主要包括ingress过滤、MAC学习和老化、根据MAC+VLAN转发、广播与洪泛、生成树控制等基本功能。

L2转发的具体流程如图3所示:

图3 L2转发流程

从端口进入交换芯片的包首先检查TAG,对于tagged包,判断是否是802.1p的包,(802.1p的包vid为0),对于untagged的包和802.1p的包,根据系统配置加上tag(这些配置包括:基于MAC的vlan、基于子网的vlan、基于协议的vlan和基于端口的vlan)。经过这一步以后,到交换芯片内部的包都变成802.1Q的tagged包了(vid为1-4094,4095保留),如果设置了ingress过滤,就会检查本端口是否在该vid对应的VLAN中,对于本端口不在该vid对应的VLAN中的包就丢弃。对于没有设置ingress过滤,或者设置ingress过滤但本端口在该vid对应的VLAN中的包进行STP端口状态检查,对于BPDU(网桥协议数据单元)以外的包,只有端口处于forwarding状态,才允许包进入。然后进行原MAC地址检查,以原MAC+VID的哈希为索引查找L2 TABLE,如果没有找到,就把这个表项(原MAC+VID)以及对应的端口写到L2 TABLE中,这个过程称为MAC地址学习。当然地址学习的方法有很多种,可以是硬件学习,也可以是软件学习,可以根据PORT表中的CMI字段的配置来进行。

下一步进行目的MAC地址检查:目的MAC地址为广播地址(0xffffffff)的包,在vlan内广播出去;目的MAC地址为组播地址的包,进行组播流程的处理;对于单播包,查找L2 TABLE,如果没有找到,就在vlan内进行洪泛;如果找到,检查表项中的L3 bit是否设置,如果设置了L3 bit,就进行L3流程的转发;否则就转发到L2 TABLE表项中的端口去,在egress方向,也有egress过滤设置(默认是使能的),如果egress端口不在vlan中也是不能转发的。至此,L2转发流程完成了。

与地址学习相反的过程是地址老化。地址老化的机制是:ASIC内部有个定时器,称为age timer,命令行可以对这个寄存器进行设置,每次查找L2 TABLE时(包括原地址查找和目的地址查找,可以配置),如果命中,就会设置hit标志。当老化时间到后,ASIC把hit标志清除,当下一个老化时间到后,ASIC把hit为0的地址设置为无效,这就是为什么实际地址老化的时间为1~2倍agingTime的原因。

2.2 L2转发相关的表项

2.2.1 port表

图4 port表

 

Port表是一个非常重要的表,有很多与端口相关的控制都在这里设置。每个端口对应一个表项,按端口号进行索引。下面介绍一下重要的设置:

1) PVID:设置PORT_VID

2) 缺省优先级:设置PORT_PRI

3) 流分类使能:设置FILTER_ENABLE

4) VLAN转换使能:设置VT_ENABLE和VT_MISS_DROP

5) Ingress过滤使能:设置EN_IFILTER

6) 信任COS还是信任DSCP:对于IPV4:TRUST_DSCP_V4=0:信任COS;TRUST_DSCP_V4=1:信任DSCP,对于IPV6:同样设置TRUST_DSCP_V6。

7) Ingress方向mirror使能:设置MIRROR

8) MAC地址学习方式:设置CML

9) IP组播是否使用VLAN信息:设置IPMC_DO_VLAN

10) L3转发使能:设置V4L3_ENABLE和V6L3_ENABLE

11) 是否丢弃BPDU:设置DROP_BPDU

12) 控制是否转发带tag和不带tag的包:设置PORT_DIS_TAG和PORT_DIS_UNTAG

13) Pause帧控制:设置PASS_CONTROL_FRAMES

14) 基于子网的VLAN使能:设置SUBNET_BASED_VID_ENABLE

15) 基于MAC的VLAN使能:设置MAC_BASED_VID_ENABLE

16) 设置堆叠口:HIGIG_PACKET

17) 设置NNI口:NNI_PORT

18) 修改优先级使能:MAP_TAG_PACKET_PRIORITY

19) 堆叠口modid设置:MY_MODID

20) Out tpid设置:OUTER_TPID

21) 基于MAC和基于子网的VLAN优先级设置:VLAN_PRECEDENCE

22) 是否允许单臂桥功能:PORT_BRIDGE

23) IP组播位图设置:IGNORE_IPMC_L2_BITMAP和IGNORE_IPMC_L3_BITMAP

2.2.2 egress port表

图5 egress port表

 

EGR_PORT是一组寄存器,每个端口一个,用于EGRESS方向的控制,有几个重要设置介绍如下:

1) 设置egress端口类型:PORT_TYPE=0,UNI端口;PORT_TYPE=1,NNI端口 (用户侧接口和网络侧接口, UNI就是面向客户侧,NNI面向网络侧。对PTN来说,UNI就是客户过来的业务,没有打上PW/LSP等标签;NNI则打上PW和LSP标签内容)

2) 设置egress过滤:EN_EFILTER=1

2.2.3 L2地址表

图6 L2地址表

 

56504的L2地址表大小为16K,5630X的L2地址表大小为8K,地址表使用MAC+VID的hash值作为索引查表。实际上56504的L2地址表hash值为4K,每个hash值对应4条地址,这样最多可以保存4条hash冲突的地址。地址表中每个表项都保存了MAC_ADDR和VLAN_ID。MAC学习的时候使用原MAC+VID的hash查表,把表中的MAC+VID与包中的MAC+VID进行比较,如果完全相等,表示找到了。然后看端口(TGID_PORT)是否相等,如果不相等表示地址发生了迁移,对于动态学习的地址需要更新port;如果相等表示命中,更新hit标志。其他几个重要的功能介绍如下:

1) 设置静态地址:STATIC_BIT=1

2) 设置L3转发标志:L3=1

3) 设置本地址的包都转发到CPU去:CPU=1

4) 设置本地址匹配的包丢弃:SRC_DISCARD=1、DST_DISCARD=1

5) 设置本地址匹配的包对某些端口阻塞:MAC_BLOCK_INDEX

6) 设置本地址匹配的包镜像:MIRROR=1

7) 设置组播索引:L2MC_PTR

8) 地址有效标志:VALID=1

2.2.4 VLAN表

Vlan表分为ingress和egress两个部分,分别对应入口控制和出口控制。

图7 ingress vlan表

 

Ingress Vlan表中主要包含了端口列表,用于ingress filter功能。PFM是用于控制组播洪泛的开关。PFM=0,组播在vlan内洪泛;PFM=1,注册的组播按组播表转发,未注册的组播在vlan内洪泛;PFM=2,注册的组播按组播表转发,未注册的组播丢弃。STG用于标识本vlan所属的生成树组。

图8 egress vlan表

Egress vlan表中除了PFM和STG外,还包含了出口方向的端口位图,以及哪些端口以untag的方式发送本vlan的包。

3、L3转发流程

图9 L3转发流程

如果查目的MAC地址表的时候发现L3bit置位了,就进入到L3转发流程。与L2交换相比,L3交换可以实现跨VLAN转发,而且它的转发依据不是根据目的MAC地址,而是根据目的IP。L3转发的流程是:首先对L3头部进行校验,校验和错的包直接丢弃;然后进行原IP地址查找,如果主机路由表中没有找到,会上报给CPU,CPU会进行相应的处理,并更新接口表;下一步进行目的IP地址查找,如果主机路由表中没有找到,就会在子网路由表中进行查找,在子网路由表中进行最长子网匹配的查找算法,如果在子网路由表中还没有找到,也送给CPU进行处理,如果在主机路由表或子网路由表中找到了,就会得到下一跳的指针。如果ECMP使能的话,会得到ECMP的指针和ECMP的个数,从而根据hash算法得到一个下一跳指针。下一条表项中包含了下一跳的MAC地址和接口表的索引。在包转发出去的时候,用下一跳的MAC地址替换掉包的目的MAC地址。用接口表中的MAC地址和VLAN替换掉包的原MAC地址和VLAN。

与L3有关的几个重要的表:

图10 L3单播主机路由表

 

图11 L3子网路由表

图12 ECMP表

 

图13 EGRESS 下一跳表 

图14 接口表

图15 INGRESS 下一跳表

4、L2组播转发流程

在L2转发流程中,查找目的MAC+VID的时候,如果表项的目的MAC是一个组播地址,该表项有一个组播指针指向组播表,组播表中有一个端口位图,表示哪些端口属于该组播组。组播组中的端口位图与VLAN中的端口位图相与的结果是实际转发的端口位图。静态配置的或协议动态添加的组播地址通过SSP写到MAC地址表中,组播成员通过SSP写到组播表中。L2组播表的结构如下:

图16 L2组播表

5、L3组播转发流程

L3组播支持有源树和共享树。所谓有源树是指根据源IP地址和组地址来确定一个组播组,而共享树是指仅根据组地址来确定一个组播组。芯片也支持反向路径检查(Reverse Path Forwarding check),所谓反向路径检查是指通过检查源IP地址确定源端口,从而不要向源端口转发的技术。

L3组播的转发流程是,先查L2表,对于组播地址而且是L3 bit置位的,查L3表。L3表给出IPMC_INDEX。根据这个索引查L3_IPMC表,L3_IPMC表给出L2_BITMAP和L3_BITMAP。对于L2_BITMAP,按照L2组播流程转发;对于L3_BITMAP,根据IPMC_INDEX和BITMAP得到IPMC_GROUP的VLAN_INDEX,最后根据VLAN_INDEX查找IPMC_VLAN表,IPMC_VLAN表包含了VLAN的位图,芯片在进行L3组播的时候,对VLAN的位图中的每个成员进行组播复制。

图17 L3组播表

图18 L3组播复制

L3单播和组播的转发流程综合起来,如下图所示:

图19 L3单播和组播的转发流程

IPMC转发相关的表的结构如下:   

图20 L3 TABLE

L3 TABLE表项大小8K(5650X)/2K(5630X)。

图21 IPMC TABLE

IPMC TABLE表项大小1K。

图22 IPMC _GROUP TABLE

IPMC _GROUP TABLE表项大小1K。

图23 IPMC _VLAN TABLE

IPMC _VLAN TABLE表项大小2K。

6、流分类处理流程

在5650X/5630X中,流分类是通过CFP实现的,CFP是ContentAware Filter Processor的缩写。所谓ContentAware就是对packet的内容进行智能匹配的技术。5650X/5630X中的流分类分为5个阶段,流程如图:

图24 CFP流程

这5个部分分别是智能协议识别选择器、CAM查找引擎、策略引擎、meter和统计引擎、动作裁决引擎。在ingress端口,智能协议识别选择器对进来的包的前128bit按照协议字段进行选择和标记,CAM查找引擎按照用户给的key匹配协议选择器的内容,如果找到了,就执行策略引擎的动作,并可以实验meter和统计引擎进行限速、标记颜色和统计。5650X有16个CAM查找引擎,5630X有8个CAM查找引擎,它们可以并行执行,执行的动作如果有冲突的话,由动作裁决引擎进行裁决。 

与协议内容识别选择器有关的表是:

图25 协议内容识别选择器

图26 FP_TCAM表

下面这个是策略引擎表项:

图27 FP_TCAM_PLUS_POLICY表 

下面这个是meter表和counter表:

图28 FP_METER表

图29 FP_COUNTER表 

动作裁决的优先级如下:

1. DROP

2. Else REPLACE

3. Else REDIRECT

4. Then EGRESSMASK

5. Then COPY_TO_CPU

转载于:https://www.cnblogs.com/s08243/p/6221472.html

Broadcom以太网交换芯片培训相关推荐

  1. 以太网交换芯片行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)

    以太网交换芯片市场的企业竞争态势 该报告涉及的主要国际市场参与者有Broadcom.Cisco.Marvell.Intel (Fulcrum).Microchip Technology.Infineo ...

  2. 以太网交换芯片行业研究及十四五规划分析报告

    2021年全球以太网交换芯片市场规模大约为205亿元(人民币),预计2028年将达到246亿元,2022-2028期间年复合增长率(CAGR)为2.6%.未来几年,本行业具有很大不确定性,本文的202 ...

  3. 以太网交换芯片及PHY处理相关

    以太网交换芯片及PHY处理相关 以太网交换芯片 下图为Microchip公司的一款产品,即就是Ethernet Switch. 请参考:https://www.microchip.com/wwwpro ...

  4. Marvell以太网交换芯片-88E6390x-简介

      Marvell 88E6390是一款11端口全千兆以太网二层交换芯片.   Marvell Link Street SOHO 88E6390X主要特性: 11端口以太网交换器,具8个集成的Gb I ...

  5. Marvell宣战博通网络交换芯片,一大波饿狼扑食而来

    origin: http://www.esmchina.com/news/article/201704051517 一大批饿狼扑食而来,基础芯片领域--网络交换芯片江湖将掀起血雨腥风. 此前,网络交换 ...

  6. iOS的那个漏洞并不只是影响苹果设备CVE-2017-6975 Google称影响了所有使用Broadcom Wi-Fi SoC的设备...

    数百万智能手机和智能设备,包括各个生产商制造的配备了Broadcom全系列Wi-Fi芯片的苹果iOS和安卓手机都可能遭受到OTA劫持攻击,且无需用户交互.绿盟科技发布了<Apple iOS WI ...

  7. 中兴的芯片,到底什么水平?

    作者 | 小枣君 来源 | 鲜枣课堂 这几天,中兴结结实实火了一把. 6月17日,中兴通讯在深交所互动平台上表示:"公司具备芯片设计和开发能力,7nm芯片规模量产,已在全球5G规模部署中实现 ...

  8. 微电子专业是做芯片的吗?芯片和什么专业有关?

    微电子学专业是以集成电路设计.制造和应用为代表的一门学科,是现代社会中发展最快的高科技应用学科之一.本专业培养掌握集成电路和微电子系统设计.制造工艺和软件系统设计的高级专门人才,从事微电子学和相关领域 ...

  9. 2022年全球与中国光通信芯片市场现状及未来发展趋势

    2022-2028全球与中国光通信芯片市场现状及未来发展趋势 根据QYR(恒州博智)的统计及预测,2021年全球光通信芯片市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR ...

最新文章

  1. 又一例“监视员工?”百度回应:和 996 无关,目前没有任何应用
  2. python_45_目录编程
  3. 阿里云Centos系统使用密钥对登陆
  4. Win7电脑,无法把文件保存到桌面上?
  5. ~~试除法判定质数 (附模板题)
  6. c语言程序无法正常运行怎么办,win7系统运行软件提示应用程序无法正常启动0xc000005怎么办...
  7. python全栈马哥_马哥2018python全栈+爬虫+高端自动化,资源教程下载
  8. SQL Server实现列转行
  9. asio Tcp服务退出时崩溃bug
  10. 《C++程序设计》课程设计报告
  11. 群发邮件平台你知道那个好吗,一款邮件群发100万封群发邮件平台
  12. 使用公众号快速申请小程序的流程
  13. 楼道扶手智能清洁装置的制作分享
  14. web服务器利用线程响应http请求,多线程实现的HTTP应用服务器(HTTPWebServer)Mutu 0.2 alpha连载I...
  15. 《计量地理学》实习指南
  16. 继牛津大学后,加大伯克利分校等多家美国高校终止与华为合作
  17. 黑白美女照上色系列,人工智能一键给黑白照片上色
  18. Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具
  19. javaScript中的instanceOf的用法
  20. MyEclipse10.7能否使用jdk1.8?

热门文章

  1. 职场沟通视频讲座下载
  2. 到现在还搞不懂,索引为什么能提供查询性能?
  3. 手把手教你修改定制WM5的ROM(带图和相关工具)
  4. ai讲师人工智能讲师计算机视觉讲师叶梓:计算机视觉领域的自监督学习模型——MAE-15
  5. Python游戏开发,pygame模块,Python实现滑雪小游戏
  6. HTML+CSS+JS 美化 单机网站收藏夹
  7. 利用node2vec和k-means对图数据进行节点聚类分析
  8. 计算机毕业设计ssm诗词文化网站
  9. 如何用计算机制作公式,电脑公式怎么用
  10. 【云原生】设备入云之FlexManager实际项目操作流程