新闻中心

EEPW首页>手机与无线通信>设计应用> 路由器背板的IPv6之变

路由器背板的IPv6之变

——
作者: 时间:2006-07-04 来源: 收藏

已经从实验室走出并开始规模商用,目前Internet上运行有数以万计的交换机、等IPv4设备,但这些现有设备由于要么采用低性能的纯软件设计、要么采用不可升级的纯硬件技术,难以满足对的支持,而采用处理器技术的新一代则可以通过对处理器重新编程从而实现对的支持。当多个线路接口卡组成一个大容量系统时,就必须通过交换背板来互连多个线卡。常用的背板交换系统无论是Crossbar无阻塞交换阵列还是基于以太网的交换背板,在IPv4时代都很好地满足了设备性能要求。然而当应对IPv6时,看似和IPv4或IPv6并无多大关系的背板交换系统是否可以一成不变的拿来为IPv6系统服务呢?

  IPv4的背板交换

  以武汉烽火网络公司自主研发设计的高端路由器Fengine R8000系列架构为例。R8001采用多线卡设计,数据包的转发流程在逻辑上分为入方向和出方向。入方向首先从线路接口芯片中接收数据包并进行数据包缓存,判断校验逻辑对数据包进行数据链路层和网络层的协议分析,根据不同的协议类型将数据包递交给不同的上层协议处理模块。入方向的主要任务是路由查找,根据目的IP地址在转发表项中查找该数据包对应的出接口以及下一跳地址。理论上对一个数据包的路由查找、链路层封装以及附加处理都可以在入方向完成,但在分布式路由系统中,为了系统的稳定性、维护的方便性,通常将相对独立的模块单独设计,并分布在不同的处理单元中,如路由协议的计算由主控单元完成,而链路层封装需要的ARP(地址转换协议)只需要在本地线卡执行,并且由于其仅仅和数据包的出方向线卡相关,因此在出方向线卡上维护的ARP地址缓存只需要与本线卡有关,而其他线卡不需要。出方向主要完成对IP数据包的链路层再封装,之后一个被系统处理完毕的数据包即可根据入方向查找转发表得到的出端口从相应的物理端口发送出去。在此我们注意到,从入方向到出方向,需要携带的信息为出端口和下一跳两个必备的基本信息,以及优先级等其他一些辅助信息,而这些信息在多数系统中是通过附加在原始数据包的头部作为有效数据的一部分经过交换背板到达出方向线卡。

  交换背板的单端口速率应不低于线卡的最大处理能力,这样才能保证交换通道不会成为系统的瓶颈。在采用以太网作为交换的系统中,交换背板的单端口速率通常和线卡的最大处理能力一致,如采用的10Gbps网络处理器的线卡对应的交换系统应采用单端口速率为10Gbps的交换芯片。假定网络处理器从线路中以10Gbps的速率接收数据包,如果这些数据包全部需要通过交换背板而进入其他线卡,此时要保证不丢包,就必须使发往交换端口的速率不超过10Gbps。为满足这一条件,必须使发往交换端口的数据包的长度不得大于原始的数据包长度。例如从线路接口以线速(速率为V:bps)收到N个长度为L(单位byte)的数据包,在不考虑空闲字节的情况下,有如下关系:

  当包的长度不变或者变小的情况下,具有与线卡最大处理速率相同的交换端口便可以线速接收来自线卡的数据包;反之,如果包长度增加,线卡发送给交换端口的数据速率就超过了交换端口的处理能力,必然造成丢包。

  从上面的分析知道数据包在从入方向到出方向必须要增加下一跳和出接口等基本信息,下一跳在IPv4中为一个IP地址,即4字节,出接口则至少一个字节,因此如果将这些至少5个字节的信息添加到原始数据包头部,则通过背板的数据包长度必然要增加,线速处理必然受到影响。幸运的是根据分布式路由设计原则,数据包的链路层信息只在入方向解析,而出方向不需要原始数据包的链路层信息,因此在入方向将数据包发往交换端口前完全可以将数据包的链路层信息剥掉。以太网的链路层为14个字节,如果剥掉链路层而添加上下一跳地址等信息,则完全可以做到新数据包的长度不超过原始数据包长度。在采用以太网交换技术作为背板时,还需要添加6个字节的以太网MAC地址作为交换芯片的寻址关键字,但长度仍不会超过原始数据包长度。因此交换系统的线速性能得以保证。

  IPv6路由器的背板交换

  正是由于IPv4的下一跳地址只有4个字节,再加上出接口等信息,所添加的头部小于以太网的链路层头部14个字节,因此通过交换背板的包长度小于原始数据包的长度,因而交换系统的线速性能得以保证;但当系统处理IPv6的数据包时,由于IPv6路由的下一跳地址为一个IPv6地址即16个字节,再加上出接口信息必定超过以太网的链路层头部,这样原始数据包在按照目前IPv4的处理方法发往交换背板时,新的数据包长度必然要大于原始数据包长,因此交换端口的接收能力必然会成为系统性能的一个瓶颈。

  常用的背板交换系统有Cross-bar交换和基于以太网的交换两种,每种方式在针对IPv6的处理时采用的方法不同。

  1.Crossbar交换系统

  在Crossbar交换体系中,目的线卡的寻址是通过将实际线卡所在的物理槽位号写进crossbar接口的寄存器中,或者将槽位号以有效数据的形式发送出去,再由交换单元来识别。由于实际系统的槽位数一般是有限的若干个线卡数,用一个字节即可表示256个槽位,对于一个单系统来说足够了。这样再加上16个字节的IPv6下一跳地址和出接口,因而添加在数据包头部的信息有18个字节;而原始数据包的以太网首部为14个字节,因此既便把链路层首部全部去掉,新的数据包比原始数据包仍会多出4个字节。例如对于以太网的最小包长64字节来说,发送给交换系统的数据包实际上为68字节。

   线速转发时,以太网帧还包括12个字节的IFG(帧间隔)以及8个字节的前导码,因此包长为L字节的以太网帧的满线速吞吐量为:

  其中V为接口的速率,单位为bps。

  因此当系统线速接收64字节以太网帧后以68字节发送时系统效率为:

  随着数据包长的增加,因交换开销多出的4个字节可以忽略,而在实际系统中对于长包的处理能力都有一定的裕量,因此在实测系统中对于较长的包如500字节以上,都可以达到线速。

  在上述分析中所有以太网的帧长中包含有4字节的CRC(循环冗余校验)开销,在长距离传输中该开销用来在接收端对收到的数据包进行是否有误码的判断。但在Crossbar交换系统中由于是系统内部的板卡之间互连,并不需要类似CRC的误码判别,因此在以太网接收端检验CRC后即可将该字段剥掉,这样对于一个L长度的原始数据包经过IPv6路由处理后发往交换端口时长度刚好等于L,进而交换背板的线速能力得以保证。

  2.基于以太网的交换系统

  以太网交换的基本原理是根据以太网帧的目的MAC地址进行寻址。在分析IPv4系统时我们注意到,在将数据包发往交换端口时除了基本信息下一跳地址和出接口外,必须再增加6个字节的MAC地址用于寻址,而且对于IPv4来说这种处理方法仍能保证交换系统的线速。但在IPv6系统中,从Crossbar交换系统的分析中可以看出,数据包长无法继续进行压缩,因此采用IPv4系统的方法在IPv6的以太网交换系统中无法保证线速。

  以太网交换芯片著名厂商Broadcom提出了一种用于背板交换的10Gbps接口协议,即Higig协议。该协议的核心思想是将用于寻址目的线卡的MAC地址用较少的字段代替,并与转发需要的其他控制信息如组播广播方式、VLAN控制、优先级等组合成一个12字节的首部,即Higig首部;同时为保证10Gbps链路交换时的线速性能,Higig首部放置在以太网帧MAC地址的前面,替代标准以太网帧前的8个前导码,并将IFG缩减4个字节。因此对于一个长度L字节的以太网帧,加上12字节IFG和8字节前导码,其总长度为L+20,而在转换成Higig帧时其长度为L+8字节IFG+12字节Higig头部,总长度保持不变,因而保证了在完成交换功能时仍能线速。

  从上述分析可以看出使用Higig协议实现IPv6的路由交换可以进一步提高性能,其方法是将目的卡号用Higig头部承载,不占用有效数据开销,而IPv6下一跳和出接口等基本信息18字节替代以太网的14个链路层首部信息,这样新构造的有效数据包长仅比原始数据包长多4个字节,对于64字节数据包其性能可以达到95%。为进一步提高性能,可以在系统内部交换时将CRC的功能省掉,进而可以得到100%的线速性能。系统内部的高速交换链路虽然有很高的可靠性,但不能100%保证无误码,因此在实际系统设计时需要在性能和传输质量之间权衡,选择最合理的策略




评论


相关推荐

技术专区

关闭