近年来,互联网的发展异常迅猛,应用日益商业化,网上用户数的发展难以预测。此外,越来越多的用户需要高速接入。有关资料表明,在我国,上网速度慢是众多网民抱怨的首要问题。因此,提高网络带宽、网络服务质量、路由器上的网络管理系统变得日益重要。在保证质量的前提下,最大限度地利用带宽,及早发现并诊断设备故障,迅速方便地根据需要改变配置等网络管理功能,成为直接影响网络用户和网络运营商利益的重要因素。总地来说,路由器的结构正朝着速度更快、服务质量更好和更易于综合化管理三个方向发展。
路由器的两大功能
数据通路功能:对于每个到达路由器的数据包,在不丢失的情况下,负责寻路。此功能主要包括:转发决定,经由背板输出链路队列调度。转发功能是通过专门硬件来实现的,每一个通过路由器的分组包都要执行这个操作。数据通路功能对改进路由器的性能是很重要的。
控制功能:主要包括路由表的管理和系统的配置与管理,以及与相邻路由器交换路由表信息,通过软件实现等。这些功能不是针对每个数据包的,因此使用频度相对低一些。
路由器的关键技术问题
就目前路由器设计中的一些关键技术,有的问题已经取得了阶段性的成果,有的才刚刚开始研究。需要说明的是,这个领域的发展非常快。为了便于系统地理解这些关键技术问题,我们根据路由器发展的三大趋势,大致将这些问题分为三类。一是与高速有关的问题,如路由表快速查找、总线背板和交换结构等。二是QoS问题,如数据流和数据包的分类,流量工程和阻塞控制等。三是与软件有关的问题,如软件的稳定性、配置和管理等。需要说明的是,这种分类法并不严格,有些问题可以同时属于两类。
1.与速度有关的技术
路由表的快速查找技术
为了解决地址资源紧缺,减少路由表的规模,降低管理难度,互联网采用了CIDR(Classless Inter-Doma in Routing)。这样,路由表中存放的不是一个个具体的IP地址,而是可变长度的网络前缀。路由器在对IP包寻址时,采用最长的网络前缀匹配(LPM-Longest Prefix Matching)。例如,假设路由表中有两个表项“202.168.X.X,输出端口1”和“202.168.16.X,输出端口2”(X表示任意),如果有一个IP包的目的地址为202.168.16.5,那么这个包应该从端口2输出。传统的路由器执行最长网络前缀匹配的时间很长,使得路由表查找成为路由器速度的瓶颈。最近两年出现了一些快速查表算法,能够支持吉比特链路。这些算法包括改进的精确匹配法、基于trie法、并行硬件法、协议改变简化路由表的查询和缓冲法等。这些算法,有些易于硬件实现,有些适合软件实现。对于组播地址寻址,要根据IP包的源地址和组播地址查表,对源地址采用最长前缀匹配法,对目的地址采用精确匹配法。
交换结构和调度算法
交换结构有Crossbar、共享存储器和总线三种方式。Crossbar结构的速度由调度器决定,共享存储器结构的速度由存储器的读写速度决定,共享总线结构的速度由总线的容量和仲裁的开销决定。调度器是Crossbar交换结构的核心,它在每个调度时隙内收集各输入端口有关数据包队列的信息,经过一定的调度算法得到输入端口和输出端口之间的一个匹配,提供输入端口到输出端口的通路。采用输入缓冲无阻塞方式的Crossbar,用ESLIP算法实现调度已被一些厂家所采用。调度器设计的难点在于,既要满足系统吞吐率达到100%的要求,又要支持CoS(Classes of Service)。调度算法中,加权公平排队算法(WFQ-Weighted Fair Queuing)和经过改进后的加权公平流排队算法(WF2Q-Weighted Fair Flow Queuing)比较容易实现,而且性能也不错。总之,要让互联网真正能够综合多种业务,作为网络连接核心设备的路由器,必须提高端口速率和交换容量,提供QoS保证和流量工程(TE-Traffic Engineering)功能。
背板总线
由于端口速率高,交换结构需要加速,而且接口板与交换板之间、控制板与接口板之间、控制板与交换板之间的连线很多,目前的高速路由器以及交换机都采用高速背板总线以提高系统的吞吐率。为了提高效率,数据线采用串行差分线路,速率可达每秒钟1~2吉比特。要保证如此高的传输速率和那么多的连线,对背板总线的设计要求非常高。如何降低数据的传输误码率以及保证时钟同步是总线设计中的关键技术。斯坦福大学的Tiny Tera路由器项目中,大量采用串行总线的实现方法值得研究和借鉴。
2.与服务质量有关的技术
数据包分类技术
路由器要对到达的分组包进行识别、分类以决定其所应接受的服务类型。当初IETF所考虑的方案是在网络的核心,根据IP报头的TOS(Type of Service)域来识别分组,但是在互联网的发展过程中,由于一直采用“尽力”传输,同时由于终端在发送IP包时不考虑TOS,因此,TOS一直没有发挥作用。目前在边缘设备,根据IP分组的源IP地址、目的IP地址、源端口号、目的端口号、传输层协议类型来对分组进行识别。此外,为了实现防火墙的功能也需要对IP分组进行识别。
在识别时,每条识别规则采用的是源IP地址、目的IP地址、源端口号、目的端口号、传输层协议类型。在上述识别规则中,每个域都可能是一个区间。例如有这样一条识别规则“202.66.83.X,202.66.72.X,X,23,TCP”(X表示任意),这条规则识别从网络202.66.83.X到网络202.66.72.X的telnet数据。从几何的角度来看,假如判别时利用了IP报头的K个域,这个问题实际上是在一个K维空间中有许多互相交叠的实体(每条判别规则对应于一个实体),每当有一个分组到达时,该分组相当于K维空间上的一个点,进行判别实际上是要找出包含该点的优先级最高的实体。
数据流的分类
一系列通过给定的源和目的地的数据包被作为数据流,流可以是长时间维持的TCP连接的一系列数据包,也可以是声音或图像的一系列UDP数据包。通常,流有长短之分,划分有两个标准:端口对和主机对。按端口对划分是指同一流的数据包必须具有相同的源、目的地址和TCP/UDP端口号等;按主机对划分只要求各数据包具有相同的源和目的地址。目前常用的流分类器有三种,一种是X/Y分类器,Y为规定的时间间隔,X为数据包数。若在时间Y内某一数据流到达的数据包数大于X,则该流就被认定为长数据流,否则是短数据流;另一种是协议分类器(Protocol Classifier),它规定了所有的TCP包均被定义为数据流;还有一种是端口分类器(Port Classifier),它规定了几个特殊的TCP端口作为长数据流。因为分类要对每个进入路由器的包进行包头检查,我们需要快速的分类算法。
QoS问题
如果能实现真正的QoS,对于互联网变为一个商业应用的网络来说,当然是最理想的。在目前网络阻塞无法避免的情况下,IETF提出了一些模型和机制来支持QoS,主要有两种实现框架,即IS(Integrated Service)和DS(Differentiated Service)。其中,IS应用资源预留协议(RSVP),在实时业务发送前建立发送通道并预留资源;而DS通过给数据包做标记将数据包分类,使不同的数据包享受不同的服务。实现真正的QoS有一定的难度,无论是采用输出缓冲,还是共享缓冲的交换结构,内部都需要N倍的加速。
MPLS和流量工程
在互联网上,可以通过MPLS支持显式路由。显式路由可以弥补传统IP网络中OSPF(Open Shortest Path First)协议在源和目的之间只建立一条最短路径的不足。它的好处是,ISP可以在两点之间的不同路径上分配业务量,从而减少业务繁忙的路径的阻塞率,提高线路的利用率,提供一定程度的QoS保证。还可以通过显式路由建立冗余线路,在某些路由器发生故障的情况下,保证通信线路的畅通。IETF的相关工作组和许多网络设备厂商正在进行这方面的工作,并且已经提出了一些实现方案。
阻塞控制
TCP协议采用滑动窗口机制进行流量和阻塞控制,实际上是发送端根据网络的阻塞情况调整自己的发送速率。
TCP协议有两个特点,一是不公平性,RTT(Round Trip Time)短的进程发送窗口增加得快,会占用更大的带宽。路由器应该抑制这种不公平性。另一个是同步现象,以前的路由器采用的尾丢弃策略在网络阻塞时,有可能导致许多TCP连接的发送窗口同时急剧下降,然后又同时上升而导致阻塞;如此循环往复,线路的利用率很低。这种现象称为同步,路由器应该采取措施以避免这种现象的发生。
路由器处理阻塞的一个主要措施就是利用TCP协议的丢包性质。当分组丢失时,TCP会降低发送速率,从而减轻路由器的负担。由于TCP协议对丢包很敏感,丢包会造成发送速率急剧下降,路由器应该针对TCP的性能对缓冲管理进行优化,以避免网络性能的急剧下降。
目前,许多路由器采用随机早期检测(RED Random Early Detection)的方法来进行阻塞控制。这种方法通过在阻塞发生前提早丢包,使得终端降低发送速率,以减轻网络负载,避免阻塞,抑制同步现象。RED算法的最大缺点是:只对类似TCP协议自动进行流控的传输层协议起作用;对于UDP协议路由器丢包并不会促使发送端降低发送速率。由于TCP数据流量在网络中所占的比重很大,RED算法的性能还是比较好的。互联网上许多路由器都采用了这种方法进行阻塞控制,事实证明这种方法效果良好。
3.与软件有关的问题
软件的重要性
过去,路由器被看作是最佳转发数据包的硬件设备,软件仅提供监视器的功能。但随着路由器的发展,软件在路由器中起的作用越来越大。实际上,实时操作系统(如,通信领域常用PSOS和VxWorks)的选择对一个通信产品来说是至关重要的。如果要开发效率很高的软件,需要操作系统厂商的支持。像Cisco公司,就是自己开发专用的路由器操作系统以及应用软件。如果这种趋势继续发展,终端用户将来可以很方便地在路由器上装载各种应用软件模块,使路由器能够提供防火墙、流量管理策略、特殊应用信令、路由策略等功能。
网管系统
目前的网管协议是简单网管协议版本2.0(SNMPv2,Simple Network management Protocol v2.0),在TCP/IP协议中用UDP协议实现。由于路由器在体系结构上的变化,使得一些网管信息需要由底层的硬件来提供,这一点和以前的实现方法是不同的。这里的工作主要是通过网管功能和管理信息数据库(MIB-Management Information Base)的实现来给网络管理者提供充足的管理信息和强大、灵活的管理功能。
计费
对用户的数据流量进行计费需要提取IP包的地址、端口、CoS等信息,由于端口速率很高,这部分信息的数据量也是比较大的,如果在接口板上进行处理很不现实。而且,不同的ISP收费的标准很可能是不一样的。因此,应该将计费功能分离出去,路由器接口板只负责提供一个计费信息的接口,把计费信息送出来。之后,可以将这些数据写到外部存储设备,由专门的机器进行计费处理。这样将减轻路由器的负担,计费功能的实现也更加灵活。
配置
路由器的配置是一项非常重要而又较困难的工作,一旦出现错误配置,不但难以发现,而且会出现一些难于琢磨的性能问题。随着路由器技术的发展,其配置会越来越简单和有效,这个问题的完善解决将是一个长期的工作。
软件的稳定性
大家知道,路由器的硬件可以用热备份、双电源供电、数据通路备份等方法来提高稳定性,但对于软件的稳定性则是一个较难解决的问题。一个大网络系统的稳定性的前提条件是软件的稳定性。软件稳定性的难点在于软件的状态均受不同软件相互作用的影响。