>
首页 » 技术文章 » 基于pci总线的板级高端口密度三层交换机设计

基于pci总线的板级高端口密度三层交换机设计

作者: 陈向荣 肖军  时间:2007-04-11 18:08  来源:上海贝尔阿尔卡特股份有限公司

应用mpc8245cpu和bcm56500交换芯片实现基于pci总线的板级高端口密度三层交换机,给出了路由协议和其他协议栈,并给出了交换性能指标

随着用户需求和网络技术的发展,高速率高端口密度的多层ip路由交换功能的应用已经越来越广泛了。由于实现三层以上路由功能的判据较为复杂,传统的路由器采用软件实现路由功能,由高性能的cpu同时实现控制平台和数据通道。


自从三层交换的概念提出以来,主要的技术可以分为两类:路由型交换机和交换型路由器。路由型交换机通过各种技术来发现、建立和缓存路由捷径来实现路由加速功能。一般情况下路由型交换机不实现大型动态路由协议,主要应用在基于atm的多协议交换技术中。交换型路由器可以用来实现类似ospf、eigrp等的动态路由协议,采用risc cpu加asic专用交换芯片分离控制平台和数据通道。由于数据通道单独由asic实现,可以达到端口线速。本文介绍了一个使用freescale公司的mpc8245高性能risc cpu和broadcom公司的bcm56500高速交换芯片,来实现应用在网络接入系统中的24个千兆端口的三层交换的解决方案。由于本数据交换板是用于宽带接入系统,测试结果表明该设计方案的高性能、高端口密度和硬件实现的稳定性能够充分满足系统的需求。

mpc8245和bcm56500简介


mpc8245是基于mpc603e核的高性能低功耗的32位嵌入式risc处理器,带有duart接口、双通道dma控制器和标准i2c控制器等通用模块。mpc8245支持pci总线2.2标准,可以同时工作在pci主设备和从设备状态。


bcm56500是多层交换芯片,集成了24个千兆位以太网端口,同时支持ipv4和ipv6协议,支持硬件处理的二层交换,三层路由以及二到七层数据包的分类和过滤功能,芯片内部集成2mb数据包缓冲内存。bcm56500支持pci总线2.2标准,系统设计中通常使用risc cpu通过pci总线对bcm56500进行初始化、配置管理和实现三层交换功能。bcm56500的结构框图如图1所示。

图1 bcm56500结构框图


由图1可以看出,bcm56500芯片由以下一些主要功能模块组成。


(1)千兆接口控制器(gpic):用于提供千兆接口与交换逻辑之间的接口。


(2)cpu管理接口(cmic):主要提供cpu与bcm56500设备不同功能块之间的接口,同时也用于诸如miim、i2c和指示灯的处理等功能。该模块通过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发送特定数据包到端口以实现三层功能。

板级高端口密度lan switch硬件设计

图2 交换板硬件结构图


图2是lan switch交换板的硬件结构,其硬件电路由cpu控制单元(子卡)、交换单元、物理层芯片单元、rj45/光接口单元、cpu连接器单元、时钟单元、电源单元组成。


在设计中采用了一片bcm56500实现24个千兆数据端口,采用一片bcm5464物理层芯片和一片bcm5461 物理层芯片来提供不同类型的数据端口。使用bcm5464接出4个千兆电接口(sgmii接口)接入前面板,使用bcm5461接出1路千兆电接口(sgmii接口)作为板内使用。使用bcm56500的serdes接口接出2路千兆光接口接入前面板,另外使用1路serdes接口也作为板内使用,其余16路千兆端口使用serdes接口接入系统背板,供系统其他板卡上联作为星型数据总线。bcm5464是broadcom公司的4端口千兆物理层芯片,bcm5461是broadcom公司的单端口千兆物理层芯片。


在硬件设计中,交换单元选用了bcm56500,通过pci接口与cpu控制单元相连,以实现对交换芯片的配置管理和快速通信。设计中的实际连接如图3所示。其中由于系统中只有1个pci从设备,设备号采用pci_ad[31]线上的信号来选中,因此实际连线中cpu的idsel直接连接pci_ad[31]即可。在pci驱动软件中,要保证使用硬件相应的设备号进行选中和配置。

图3 系统pci连接图

lan switch的软件启动和硬件初始化过程


lan switch采用windriver公司vxworks操作系统。在cpu最小系统(cpu+sdram+flash+串口)完成启动后,需要通过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公司5.2.3版的sdk。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(),应用程序和协议栈入口。

交换性能测试结果和三层功能实现


设计定型后的lan switch经过smartbits测试,每个端口都可以达到线速转发,稳定性测试表明可以达到48小时千兆线速无丢帧性能。所得的结果如图4所示。

图4 千兆光接口48小时性能测试结果


由于这个设计方案使用cpu+asic方案,三层的ip路由转发功能由交换芯片的三层转发表(l3_table)实现线速转发。其他的三层协议栈功能应用交换芯片中过滤器实现。在本设计中,根据需求完成了ospf、rip-2、dhcp、dhcp relay、igmp、igmp relay等常用ip协议栈,实现了基于pci总线的板级高端口密度三层交换机的设计要求。

相关推荐

博通发布高性能交换芯片

博通  交换芯片  2011-04-22

PLX最新Gen 2 PCIe交换芯片上市

PLX;交换芯片;Gen2  2007-09-24

基于pci总线的板级高端口密度三层交换机设计

在线研讨会
焦点