使用Broadcom公司的最新交换芯片实现板级高性能交换型路由器的软硬件设计.doc_第1页
使用Broadcom公司的最新交换芯片实现板级高性能交换型路由器的软硬件设计.doc_第2页
使用Broadcom公司的最新交换芯片实现板级高性能交换型路由器的软硬件设计.doc_第3页
使用Broadcom公司的最新交换芯片实现板级高性能交换型路由器的软硬件设计.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用Broadcom公司的最新交换芯片实现板级高性能交换型路由器的软硬件设计 发于今日电子2006年十一月刊6 c6 P, VH2 y; P published at Electronics Products China on November, 20062 |2 V5 + h B, v K: n 摘要:本文阐述了应用Freescale公司MPC8245CPU和Broadcom公司BCM56500交换芯片实现的基于PCI总线的板级高端口密度三层交换机的设计和实现。最后给出了业已实现的路由协议和其他协议栈并给出了交换性能指标。关键词:三层交换、BCM56500、PCI、TCP/IP、协议栈) ( S2 S; p( g) W) c B随着用户需求和网络技术的发展,高速率高端口密度的多层IP路由交换功能的应用已经越来越广泛了。由于实现三层以上路由功能的判据较为复杂,传统的路由器采用软件实现路由功能,由高性能的CPU同时实现控制平台和数据通道。自从三层交换的概念提出以来,主要的技术可以分为两类:路由型交换机和交换型路由器。路由型交换机通过各种技术来发现、建立和缓存路由捷径来实现路由加速功能。一般情况下路由型交换机不实现大型动态路由协议,主要应用在基于ATM的多协议交换技术中。交换型路由器可以用来实现类似OSPF、EIGRP等的动态路由协议,采用RISC CPU加ASIC专用交换芯片分离控制平台和数据通道。由于数据通道单独由ASIC实现,可以达到端口线速。本文阐述了一个使用Freescale公司的MPC8245高性能RISC CPU和Broadcom公司的BCM56500高速交换芯片来实现应用在网络接入系统中的24个千兆端口的三层交换的解决方案。由于本数据交换板是使用于宽带接入系统,测试结果表明该设计方案的高性能、高端口密度和硬件实现的稳定性能够充分满足系统的需求。Wf, N4 S t3 T1. MPC8245简介及其PCI总线支持MPC8245是一款2003年Freescale公司推出的基于MPC603e核的高性能低功耗的32位嵌入式RISC处理器,带有DUART接口、双通道DMA控制器和标准 控制器等通用模块。MPC8245对PCI总线的支持是一大亮点,支持PCI总线2.2标准,可以同时工作在PCI主设备和从设备状态。由于它对PCI总线出色稳定的支持,被工业上广泛地运用于网络路由器、交换机、大容量存储设备、打印机和图象显示处理等应用。2. BCM56500简介和主要架构分析BCM56500是BroadCOM公司最新推出的第五代高性能高集成度的多层交换芯片,单片集成了24个千兆以太网端口。BCM56500芯片同时支持IPv4和IPv6协议;支持硬件处理的二层交换,三层路由以及二到七层数据包的分类和过滤功能;芯片内部集成2MB数据包缓冲内存。BCM56500芯片支持PCI总线2.2标准,系统设计中通常使用RISC CPU通过PCI总线对BCM56500进行初始化、配置管理和实现三层交换功能。由于BCM56500拥有高集成度、高端口密度和卓越的配置管理功能,是一款理想的实现边缘汇聚的三层交换企业级芯片。BCM56500的结构框图如图1所示。图1. BCM56500芯片结构框图由图可以看出:BCM56500芯片由以下一些主要功能模块组成:1) 千兆接口控制器(GPIC):用于提供千兆接口与交换逻辑之间的接口。2) : f) , Nt- aCPU管理接口(CMIC):主要提供CPU与BCM56500设备不同功能块之间的接口,同时也用于诸如MIIM、 和指示灯的处理等功能。该模块通过PCI总线接口与CPU相联,可使CPU访问和控制BCM56500。3) 地址解析逻辑(ARL):该逻辑功能模块可在数据包的基础上确定该数据包的转发策略。它利用二层表(L2_TABLE)、二层组播表(L2_MCTABLE)、三层表(L3_TABLE)、三层最长前缀匹配表(DEF_IP_HI和DEF_IP_LO)、三层接口表(L3_INTF)、IP组播表(L3_IPMC)、VLAN表(VLAN)以及生成树表(VLAN_STAG)来决定如何转发数据包。4) 公共缓冲池(CBP):公共缓冲池实际上是2MB共享的包缓冲区,由8192个单元组成,每个单元256字节。设备里的每个数据包消耗一至多个单元。) 5) 内存管理单元(MMU):BCM56500有一个单独的内存管理单元。每个内存管理单元与设备的功能块(GPIC)等相关联。内存管理单元负责数据包的缓冲和调度,它首先接收数据包,然后再将数据包缓冲,并在发送时加以调度,同时它还管理交换单元的流控特性,概括来说,就是缓冲逻辑、调度逻辑、流控逻辑。缓冲逻辑从CP-BUS接收包并存放在公共缓冲池,同样也从公共缓冲池获取包并将它们发送到CP-BUS。包的发送顺序由调度逻辑根据包的优先级别确定。流控逻辑包括Head-of-Line(HOL)阻塞预防和Backpressure两种方式。这些功能模块之间可通过两条内部总线联系起来:CP-Bus(图粗黑线所示)、S-Channel(图细黑线所示)。其中CP-Bus用于芯片内数据包的高速传输,它支持所有端口的同时线速转发。而S-Channel Bus则有两个作用:第一是用于内存管理单元到其它功能块的流控;第二是通过CPU管理接口由CPU控制访问内部寄存器和表,以及通过过滤器选送特殊数据包到CPU并由CPU发送特定数据包到端口以实现三层功能。3. 板级高端口密度LAN Switch硬件设计与实现图2是该交换板的硬件结构,其硬件电路由CPU控制单元(子卡)、交换单元、物理层芯片单元、RJ45/光接口单元、CPU连接器单元、时钟单元、电源单元组成。图2. 交换板硬件结构图笔者在设计中采用了一片BCM56500实现24个千兆数据端口,采用一片BCM5464 物理层芯片和一片BCM5461 物理层芯片来提供不同类型的数据端口。使用BCM5464 物理层芯片接出4个千兆电接口(SGMII接口)接入前面板,使用BCM5461 物理层芯片接出1路千兆电接口(SGMII接口)作为板内使用。使用BCM56500的SERDES接口接出2路千兆光接口接入前面板,另外使用1路SERDES接口也作为板内使用,其余16路千兆端口使用SERDES接口接入系统背板,供系统其他板卡上联作为星型数据总线。(注:BCM5464是BroadCom公司的四端口千兆物理层芯片,BCM5461是BroadCom公司的单端口千兆物理层芯片。)在硬件设计中,交换单元选用了BCM56500,通过PCI接口与CPU控制单元相连,以实现对交换芯片的配置管理和快速通讯。设计中的实际连接如图3所示。其中由于系统中只1个PCI从设备,设备号采用PCI_AD31线上的信号来选中,因此实际连线中CPU的IDSEL直接连接PCI_AD31即可。在PCI驱动软件中,要保证使用硬件相应的设备号进行选中和配置。图3. 系统PCI连接图. V! ; U- D, y% + _; A0 r7 % H# E0 I* a( b: 4. LAN Switch的软件启动和硬件初始化过程LAN Switch采用Windriver公司的VxWorks*作系统。在CPU最小系统(CPUSDRAMFlash串口)完成启动后,需要通过PCI总线对LAN Switch交换部分进行初始化。主要步骤如下:(1) 由于BCM56500工作在little endian模式,而MPC8245工作在big endian模式,因此需要对头模式进行设置(可以使用字节位移指令或者对CONFIG_ADDR和CONFIG_DATA在访问前进行字节交换);(2) 根据硬件连接选择PCI设备的设备号,配置交换芯片BCM56500的PCI基地址和窗口大小;(3) 通过PCI总线使用交换芯片BCM56500的CPU管理接口确定交换芯片的型号,然后根据不同的芯片类型进行初始化和DMA通道的配置;(4) 挂接交换芯片的驱动程序和各种API,完成LAN switch的初始化过程。其中第三、第四步骤需要BroadCom公司的软件开发支持包(SDK)支持,直接从程序中调用BoradCom的初始化程序可以保证正常完成初始化和加载驱动程序。以下对PCI驱动的设计配置和SDK做进一步的说明。本文前面已经说明了对于BCM56500的IDSEL信号已经确定,本设计中使用VxWorks的标准PCI驱动程序,对于BCM56500的PCI挂接例程如下:1) 在bootROM中sysHwInit()调用sysPciAutoConfig()对PCI_SYSTEM结构进行实例化;2) 同样在sysHwInit()中使用pciConfigOutLong()对BCM56500的基地址和窗口大小进行配置,然后使用pciConfigOutByte()挂接BCM56500的中断至CPU的外部中断向量表;3) 至此,PCI配置完成。通过BCM56500的S_Channel可以配置BCM56500中的各个寄存器和表项。S_Channel的消息传递有特殊的格式和规范,一般通过BroadCom公司提供的软件开发支持包(SDK)中自带的标准函数来进行配置。本设计使用BroadCom公司SDK较新版本5.2.3,SDK的设计严格分层,自下而上分成操作系统(RTOS)、操作系统适配层(SAL)、芯片系统层(SOC)、分发层(Dispatch)和BCM的应用接口层(API层)。由于SDK支持BroadCom公司的几乎所有交换芯片,因此在使用SDK的时候,在使用API之前需要进行芯片查询和按照搜索到的芯片挂接相对应的API。整个的芯片查询和挂接API的过程,使用SDK实现相当方便。初始化SDK的API的过程如下:1) SDK软件初始化:diag_shell(), sysconf_int();2) 在本地的PCI总线上查询BroadCom设备:sysconf_prob();3) 根据查询到的设备进行相对应的驱动程序挂接:sysconf_attached();4) 应用正确的驱动程序对交换芯片进行初始化:system_init();5) 芯片基本的初始化后,进入正常的工作状态,此时可以进行应用程序的初始化了:bcm_init(), 应用程序和协议栈入口。5. 实现后的LAN Switch交换性能测试结果和三层功能实现设计定型后的LAN Switch经过SmartBits测试,每个端口都可以达到线速转发,稳定性测试表明可以达到48小时千兆线速无丢帧性能。笔者使用SmartBits 600的一块千兆卡对LAN Switch进行性能测试,SmartBits的两个千兆光模块分别连接LAN Switch的两个千兆光接口。设置SmartBits全双工地从一个端口发送千兆速率的128Byte的数据包,数据流通过LAN Switch,被SmartBits从另一个端口收到。性能测试实验中,满负荷数据流持续时间为48小时,所得的结果如图4所示,发送数据帧和接收数据帧数量相等,没有丢帧现象出现。图4. 千兆光接口48小时性能测试结果由于这个设计方案使用CPUASIC方案,三层的IP路由转发功能由ASIC交换芯片的三层转发表(L3_Table)实现线速转发。其他的三层协议栈功能应用ASIC交换芯片中过滤器实现。BCM56500系BoradCom公司最新的第三代交换芯片内嵌内容检测处理器(ContentAware Processor),强大的过滤功能可以用来实现各种应用协议栈。在本项目中,根据需求完成了OSPF、RIP-2、DHCP、DHCP relay、IGMP、IGMP relay等常用IP协议栈,实现了基于PCI总线的板级高端口密度三层交换机的设计要求。# Y4 u: d+ F. j# R参考文献:: o O: G/ Y3 a, U1. Motolora Literature Distribution, MPC8245 Integrated Processor Users Manual, Rev.2, 10/20032. K. Clark, K. Hamilt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论