线速路由器软件系统设计

发布时间:2003-11-26 作者:张超峰 Zhang Chaofeng 阅读量:

文章编号:1009-6868(2001)04-0024-06 文献标识码:A 中图分类号:TN915.05

  由于Internet业务和用户数的快速发展,对网络带宽和网络速度的要求以每年超过2倍的速度提高。在这种情况下,以软件进行数据包转发的传统路由器已经满足不了日益增长的速度需求,交换式的、以专用芯片进行数据包转发的路由器应运而生,这种路由器可以以线速转发高达20Gbit/s以上的数据流量,每秒钟转发的报文数可达40兆个。在这种路由器中,路由和转发功能分别由不同的模块实现。由于路由功能需要实现很复杂的逻辑,因此适合于由软件实现。逻辑相对简单、对运算速度要求更高的转发功能则由专用芯片实现。这样做的好处在于:一方面,当网络的拓扑结构剧烈变化而导致运行路由协议的处理机满负荷工作时,专用芯片可以基本不受影响地进行转发;另一方面,当出现突发的网络数据流量而导致负责转发工作的专用芯片满负荷工作时,路由协议模块可以正常工作以便及时反映网络拓扑结构。新一代的线速路由器的设计正是采用了这一先进的思想,从而在路由和转发这两个方面都表现出卓越的性能。同时,为了能够容纳Internet上越来越多的子网,骨干路由器还必须具备很大的路由表容量,一般要求能够容纳10万以上的路由条目。

  1 软件系统概述

  运行在Internet骨干节点上的路由器必须支持当前网络上运行的大部分路由协议,如自治域内部路由协议OSPF、IS-IS,自治域间的路由协议BGP,以及组播路由协议DVMRP、PIM等。所有的这些路由协议都需要链路层协议、网络层协议、传输层协议的支持才能正常工作,因此,路由器的软件系统还必须实现基于多处理机的L2、L3、L4协议。

  典型的线速路由器是一个多处理机的分布式系统,其系统组成如图1所示。主控板是整个系统的主控模块,它一方面负责对整个系统进行控制,另一方面负责处理路由器支持的所有协议报文。线卡(LC)的主要工作是根据转发表进行数据包转发,同时还为本路由器的上层协议提供支持,即根据上层协议的需要收进以本路由器为目的站的数据包,将本路由器欲发出的数据包发送到网络上。交换网板是路由器的交换核心,负责在各个线卡之间交换数据。各个子处理机之间的通信则通过内部通信通道进行。


图1 线速路由器的系统组成

  2 软件总体结构设计

  2.1 总体结构设计描述

  线速路由器软件系统如图2所示,线速路由器的软件系统由以下5部分组成:分布式操作系统平台、动态路由协议模块、网络管理和操作维护模块、数据库、安全模块。下面简述各个模块的功能。


图2 线速路由器软件系统组成

  (1)分布式操作系统平台

  分布式操作系统平台是一个多处理机多任务实时操作系统,是路由器软件体系结构的基础。它向下负责管理整个路由器的分布式的硬件体系结构,向上为各处理机上的应用程序提供一个统一的运行平台。

  分布式操作系统平台分为3个层次:设备管理层、操作系统内核/协议层、分组层。其中设备管理层的主要功能是驱动硬件设备,操作系统内核包含系统控制、缓冲区管理、定时器管理、通信,协议层包含L2、L3、L4协议,分组层向应用程序提供BSD分组接口。

  (2)动态路由协议系统

  动态路由协议系统是路由器软件体系结构的核心。该系统主要负责路由数据包的接收、存储、处理和发送,不同路由协议之间的交互,路由表的形成及维护。除单播路由协议外,该系统还包含组播路由协议,负责处理组播路由数据包,形成和维护组播路由表。

  (3)网络管理和操作维护

  网络管理和操作维护系统处于整个路由器的最高层,是管理员操作、控制、维护路由器的主要途径。该系统内部实现SNMPv2 、SNMPv3 Agent功能,并提供命令行的操作方式。用户可以通过串口、Telnet、SNMP Manager进行网络管理,主要包括:网络配置管理、故障管理、性能管理和安全管理等功能。

  (4)安全系统

  实现路由器对网络和协议的安全控制,负责对数据的加密、密钥分析、协议认证等工作。

  2.2 各层结构设计

  2.2.1 分布式操作系统平台

  分布式操作系统平台(如图3所示)提供两个方面的功能:


图3 分布式操作系统平台

  (1)基于单处理机的进程调度、进程同步、内存管理、设备管理、定时器管理,以及基于多处理机的进程间通信,为上层提供稳定、高效、可靠的系统服务。

  (2)为上层各协议进程提供L2、L3、L4层协议的功能。就目前的IP路由器来讲,就是提供以太网协议、PPP、IP、ICMP、ARP、IGMP、TCP、UDP协议的功能,保证正确可靠地收发和处理L2、L3、L4层的各种类型的数据报文,通过分组层与用户进程进行数据包交换。

  分布式操作系统中的模块功能描述如下:

  (1)进程管理
  系统所有的用户进程由路由操作系统(ROS)在系统初始化时根据进程登记表(PRT)创建。PRT中记录了创建用户进程所需的所有信息,如进程号、进程名、优先级、私有栈大小、私有数据区大小、消息队列长度等。另外,ROS用进程状态表(PST)记录进程当前状态和统计数据。

  (2)进程间通信
  ROS提供异步消息、同步消息两种方式来实现处理机间和处理机内的进程通信。ROS使用进程标志(PID)的数据结构对位于各处理机上的不同进程进行寻址。ROS向用户进程提供点播和组播两种发送消息的方式。点播方式可以发送同步、异步两类消息,组播方式只能发送异步消息。

  (3)进程间的同步机制
  ROS提供临界区和信号量的挂起机制实现基于单处理机的进程间同步。临界区只提供一种挂起机制——永久挂起。如果某进程在临界区中超长时间挂起,则必然有进程在超长时间占有临界资源,ROS可以检测出这样的异常。信号量提供两种挂起机制——带超时的挂起和不挂起。

  (4)定时器和时钟管理
  每个进程都可以设置多个定时器用于触发定时服务和超时处理。定时器分为相对定时器和绝对定时器,相对定时器根据激活的次数可分为单次和循环定时器。根据定时器的时长是否可配置又可分为有名定时器和无名定时器。

  (5)缓冲区管理
  缓冲区是系统重要的资源。出于时间和空间的折衷考虑,ROS根据实际情况将缓冲区分为几种不同大小的缓冲区队列,并提供申请和归还的函数接口。缓冲区队列是一个简单的循环队列,申请时从队列头取一空闲块,归还时归还队列尾。缓冲区队列是系统的每个任务都会申请和归还的,每个缓冲区都有一个缓冲区控制块(MCB),MCB中记录有该缓冲区所属于的队列和该缓冲区是否被占用的标志。申请指针与归还指针时,MCB能防止将非法的内存归还到队列中。

  (6)设备管理
  ROS管理的设备有中断控制器、实时钟、多处理机通信设备、串行口、非易失存储等。

  (7)异常检测和处理
  ROS在不严重牺牲实时性的前提下,尽可能检测下面的异常:内存保护错、栈溢出、进程超时未响应、进程超时占有临界资源、错误释放或多次释放缓冲区、CPU过载、空闲缓冲区资源不足、硬件错误(如:中断过频、设备读写错、设备不响应)。
  在检测出系统异常时能进行记录和及时进行设备的倒换和复位。

  (8)第2层协议
  ROS子系统包含一个协议栈模块,由L2、L3、L4协议组成。
  L2协议包括以太网协议、PPP系列协议。
  以太网协议实现RFC894规定的功能,能发送和接收采用RFC894封装格式的帧,同时也能够兼容与RFC894混合的RFC1042(IEEE802)封装格式的帧。
  PPP包括:LCP、PAP、CHAP、IPCP以及在串行链路上封装/解封装IP数据包。

  (9)第3层协议
  L3协议模块包括第4版TCP/IP协议栈中的IP、ICMP、ARP、IGMP等。
  IP是TCP/IP协议栈的核心,所有的TCP、UDP、ICMP、IGMP数据都以IP数据包格式传输。它的主要功能就是在互相连接的子网络之间传递数据包。同时IP模块还提供流量错误控制、服务类型描述、安全服务等功能。
  L3层协议还包括ICMP、ARP、IGMP等辅助协议。
  ICMP提供错误报告、网络诊断和网络重定向功能。通常认为ICMP是IP层的一个组成部分,ICMP报文通常被IP或高层协议使用。
  ARP提供从IP地址到MAC地址的转换。它根据需要发送ARP请求报文,分析(其它主机发出的)ARP请求报文和应答报文,并据此动态地维护一张地址转换表。
  IGMP用于支持主机和路由器的组播服务,它让一个物理网络上的所有系统知道主机当前所在的组播组。组播路由器需要知道这些信息以便决定组播数据包应该向哪些接口转发。

  (10)第4层协议
  L4协议包括TCP、UDP。
  TCP主要功能为屏蔽通信子网细节,提供面向进程的通信能力;提供面向连接的流传输;提供QOS的协商功能;提供确认与超时重传机制;提供3次握手机制以排除建立和拆除连接中重复报文的干扰;提供强迫数据传输等操作,以满足实时需要。
  由于TCP建立在不可靠的IP数据报的传输基础上,IP不能提供任何可靠性机制,所以TCP可靠的面向连接的流传输完全要由协议本身实现。TCP保证数据流可靠传输的手段有连接、滑动窗口与流量控制、拥塞控制。
  对TCP的性能要求为数据包格式遵从RFC793并按照其进行校验与处理。同时根据协议规定的滑动窗口机制,3次握手机制进行流控等处理。所有状态的变迁符合协议要求。
  用户数据报协议(UDP)主要功能为提供无连接的数据报传输,屏蔽通信子网细节,提供面向进程的通信能力。
  UDP建立在IP协议之上,同IP协议一样提供无连接数据报的传输。相对于IP协议,UDP唯一增加的能力是提供协议端口,以保证进程间的通信。UDP在许多高可靠性、低延迟的局域网上运行很好,其主要优势就在于它的高效率。
  UDP协议提供一种机制,发送者使用这种机制区分一台机器上的多个接收者。每个UDP报文除了包含某个用户进程发送的数据之外,还包含报宿端口编号与报源端口编号,从而使得UDP软件可以把该报文传递给正确的接收者。
  对UDP的性能要求为数据包格式遵从RFC768(User Datagram Protocol)并按照其进行校验与处理。所有状态的变迁符合协议要求。

  (11)分组层
  分组层作为传输层以下协议向上层用户进程提供服务的接口,是ROS必不可少的一部分。
  分组层位于L3、L4协议以上,对用户进程屏蔽了协议的细节,用户进程将L3、L4协议看作类似于文件系统的东西,通过分组层利用L3、L4协议的服务就类似于利用文件系统。分组层是网络编程的入口,它提供了一系列的系统调用,构成了网络操作系统的主体。

  2.2.2 动态路由协议系统

  如果把路由器支持的协议展开来看,可以画出如图4所示的堆栈式的层次结构,即所谓的TCP/IP协议栈。协议系统可细分为支撑协议和路由协议,支撑协议已经被包含在操作系统平台ROS中。


图4 动态路由协议系统

  路由协议系统一方面要接受并处理网络上其它路由器或主机发送到本机的路由信息包,并据此生成、管理和维护本机内的路由表,使本机内的路由表能够实时地映射目前最新的网络拓扑结构;另一方面它还要负责向其它路由器扩散本机收集到的网络拓扑信息。同时,路由协议系统还要实现各个路由协议交互的功能。

  路由协议系统实现RIP v2、OSPF v2、IS-IS、BGP4单播(Unicasting)动态路由协议、DVMRP、PIM-DM、PIM-SM组播(Multicasting)动态路由协议。

  RIP被用来在路由器之间传递本身的路由信息,使得所有和该路由器直接相连的路由器可以知道它相连的路由器的状态,据此生成自己的路由表。要求能够满足RFC1058、RFC1723、RFC1724的规定,实现对子网的支持。

  OSPF协议被用来与邻接路由器交换彼此有关路由域的信息,并根据这些信息计算生成路由表,根据配置对IP全局路由表(GRT)进行同步。OSPF协议是一种内部网关协议,与RIP相比,它更加适合作为大型内部路由域的协议。它是一种基于链路状态,或者说是最短路径优先的协议,支持子网寻址、服务类型路由等功能。除了维护本路由器的路由表外,OSPF还把新的链路状态信息通过洪泛传播到整个路由域,使路由域内的所有路由器都能迅速及时地跟踪网络拓扑的改变。

  IS-IS与OSPF有许多共同的特性,如:都维护一个链路状态数据库,利用基于Dijkstra的SPF算法从中计算出一个最短路径树;都利用Hello报文来建立和维护邻接关系;都利用域的概念来形成一个两层的拓扑。

  BGP-4利用TCP层提供的面向连接的服务,按照协议RFC1771所规定的状态变迁发送和接收OPEN、KEEPALIVE、UPDATE和NOTIFICATION4种报文,实现与相邻BGP-4网关的连接建立和路由信息交换的功能,并根据这些信息维护本机的路由表。它要实现与内部、外部两种类型的BGP-4网关的交互。内部网关位于本自治系统内,只从此类网关接收外部的路由信息,更新本地的路由表;外部网关位于本自治系统外,除了从此类网关接收外部的路由信息更新本地的路由表外,还要定期扫描本地路由表,根据其变化生成路由更新报文,广播给此类网关。

  2.2.3 网络管理和操作维护

  在路由器的运行中,用户需要能实时监控路由器及整个网络的运行状况。用户还需要对路由器及整个网络进行配置管理,因此需要一套对路由器进行配置的命令,这套命令必须功能齐备而且易于操作。在命令行中实现用户模式、特权模式、接口模式、配置模式、环回模式、路由模式和ROM监视模式,完成路由器的配置和故障管理。

  网络管理和操作维护分为两个子系统:操作维护子系统、网络管理子系统。

  操作维护子系统的主要功能为人机命令的语法分析和解释、命令分发和执行、命令执行结果回显、实现路由器系统性的命令、配置数据库管理和维护。

  网络管理子系统支持SNMPv1、SNMPv2和SNMPv3中规定的管理代理(SNMP Agent)必须支持的所有的协议操作。网络管理代理支持的安全认证机制必须防止以下几种安全威胁:对报文信息的非法篡改、伪装,对报文流的篡改、泄密。

  2.2.4 安全系统

  安全系统实现下面的功能:分组过滤,在网络层和传输层提供分组过滤功能;身份认证,集成所有协议与对等协议之间的身份认证;加密算法,实现消息摘要算法MD5,为协议提供加密和解密的原语调用。

  2.3各处理机(单板)上软件结构设计

  大型的线速路由器是一个分布式的系统,至少由3种处理机(单板)组成,它们分别是:主控板、线卡、交换网板。

  (1)主控板

  主控板是整个系统的主控单元,负责对整个系统的控制,还要处理路由协议包、管理协议包,路由器3个基本功能中的两个功能:路由和管理,就由主控板来实现。

  主控板上运行的软件由ROS平台和以下用户进程组成:

  • RIP进程,包括单播动态路由协议RIP;
  • SPF进程,包括单播动态路由协议OSPF;
  • IS-IS进程,包括单播动态路由协议IS-IS;
  • GP进程,包括单播动态路由协议BGP;
  • VMRP进程,包括组播动态路由协议DVMRP;
  • IM进程,包括组播动态路由协议PIM-DM和PIM-SM;
  • 路由表管理进程,实现主控板上的全局路由表GRT与各线卡上的局部路由表(LRT)之间的同步,及时把每个线卡的接口配置信息通报给整个系统;
  • AM进程,对路由器进行系统性的管理,负责与各协议进程交换数据;
  • Telnet进程,实现Telnet服务器和客户端的功能;
  • NMP进程,实现SNMPv1、SNMPv2、SNMPv3代理的功能;
  • FTP进程,实现FTP/TFTP服务器和客户端的功能,实现NTP功能;
  • WEB管理进程,实现HTTP以及WEB服务器的功能;
  • 数据库管理进程,管理存放在内存和FLASH中的数据库,同步处于主用状态的主控板和处于备用状态的主控板上的数据库。

  不同的单板由于其功能不同,对在ROS平台中实现的IP的功能要求也相应地有区别。主控板上的IP功能为:处理从线卡软IP送上来的输入IP包,根据上层协议的类型交相应的上层协议处理(TCP、UDP或用户协议进程);从上层协议接收发出的报文,进行IP包头封装,根据目的IP地址查找全局路由表找出输出接口号,将封装好的IP包连同输出接口号送到相应的线卡上的软IP;IP包片重组(对线卡不能完成包片重组的IP包,全部由主控板来重组,重组后的包要对其IP、UDP、TCP头分析,交给相关协议进程处理)。

  (2)线卡

  线卡即线路接口卡,是路由器与网络的物理接口。线卡的主要组成部分为CPU和网络处理器(NP)。

  运行在CPU上的软件由ROS平台和路由表管理用户进程组成。路由表管理进程实现线卡上的局部路由表(LRT)与主控板上的全局路由表(GRT)之间的同步,主控板和各线卡之间接口配置信息的同步,根据LRT及时更新网络处理器中的转发表。

  线卡上的IP功能为接收包处理器送上来的输入IP包,根据上层协议类型将其转交给主控板上的IP(对于发送到本机的ICMP协议报文,由线卡上的ICMP模块直接处理,不送到主控板);接收主控板上的IP发送来的IP包及其输出接口,将其送给线卡的输出端;IP包分片重组。

  对于IP包片重组,如果IP包片目的地址绑定在某个线卡上,由这个线卡完成重组,其它线卡收到包片后统统交给这个线卡;如果IP包片目的地址没有绑定在某个线卡上,则把包片交给主控板,由主控板完成重组。

  (3)交换网板

  运行在交换网板上的软件是ROS的一部分,其功能是对交换网板进行初始化和控制。

  4 技术发展的现状

  目前国内外线速路由器的代表产品有Juniper的M系列、Cisco的12000系列、中兴通讯的ZXR10系列。所有的线速路由器都是由多个处理机组成的分布式系统,这样的硬件体系结构决定了软件也必须是分布式的。这一系统的基本特点是:动态路由协议、网管协议全部集中在主控板上处理,网络层协议则分布在多个处理机上实现。路由表可分为集中式和分布式两种:

  (1) 集中式路由表只驻留在一个集中式的转发引擎上,适用于具备性能卓越的转发引擎的设备,系统不必进行各处理机之间路由表的同步工作。
  (2) 分布式路由表分别驻留在主控板和各线卡的转发引擎上,系统必须保证各处理机上的路由表同步。

  分布式路由表的管理机制又可分为3种:

  (1)主动广播式路由表管理机制,主控板上的GRT由于路由协议的运行或定时器的触发而发生变动时以广播方式通知所有线卡,命令它们修改各自LRT上的相关表项;主控板上的GRT和线卡上的LRT始终保持一致,线卡上的LRT相互之间也保持一致。
  (2)被动请求式路由表管理机制,局部路由表不是GRT的一个映像,而是根据需要从GRT中获取相关路由表项而形成GRT的一个子集。初始化时LRT为空,当线卡需要转发数据报文时就查询本地LRT,如查找成功就根据结果直接转发,否则线卡向主控板申请相关表项。这样保证了LRT中保存的是GRT中与本线卡数据报文转发“最直接相关”的路由表项,此时LRT规模相对较小,查询效率较高,但查找失败时需要不断向GRT申请本地LRT中缺乏的表项,在LRT命中率较低的场合会严重影响路由表的查询性能。
  (3)选择性发送管理机制,这是一种结合上面两种机制优点的“选择性发送”分布式路由表管理机制。初始化时LRT为空,当线卡LC1为收到的报文由A向B查询本地LRT失败后,就向主控板上的GRT申请相关表项;GRT受理请求后先将该LC1上的LRT所缺的表项送到LC1,同时根据网络数据报文传输的“双向性”假设和“活跃性”假设将GRT中目的子网为该数据报文源地址A和目的地址B的路由表项发送到输入线卡LC1和输出线卡LC2(即报文需要从线卡LC2上的某个物理接口输出),并命令这两个线卡更新各自的LRT,以后当带有这些地址的IP数据报文到达这两个从线卡就可直接通过查询各自的LRT而不必耗费大量的系统资源跨板查询主控板的GRT。由于主控板只是将GRT中与最近系统数据报文转发最相关的表项发送给相关的线卡,而不是如同“主动广播式”那样将所有GRT表项广播出去,故线卡在保证本地LRT查找命中率不降低的情况下可以维护尽量少的路由表项,这即是所谓 “选择性广播”的涵义所在。所有LRT中均保存了网络转发中最常用的相关路由表项,LRT和GRT的关系为:LRTGRT。

[摘要] 作为大型的网络骨干节点设备,线速路由器的软件系统采用了分布式的体系结构。文章介绍了大型交换式路由系统的软件设计技术,包括TCP/IP协议栈的设计、各子处理机上软件子系统的分工等。

[关键词] 线速路由器 TCP/IP协议栈 路由 转发

[Abstract] The distributed software system is implemented in large wire-speed routers that work on Internet backbone. This paper discusses the designing of software system for large switched routers, including the designing of TCP/IP protocol stack and functions of sub-machines in the system.

[Keywords] Wire-speed router TCP/IP protocol stack Route Forwarding