基于低轨移动星座的高速星载路由器设计
2019-02-21
中国空间技术研究院,北京 100094
随着宽带IP业务的发展,容量提升已经成为卫星通信的重要目标。多年来卫星通信多数采用高轨卫星弯管[1]转发的方式,难以实现对地球的全面覆盖,且延时较高,系统容量难以满足当前的带宽需求。低轨移动卫星(Low Earth Orbit,LEO)星座[2]能够有效解决覆盖率问题,而如何实现星座内网络的互联互通成为星座建设的主要问题[3]。铱星一代系统使用“电路交换”的方式进行组网[4],但ATM等2层交换控制机制复杂[5],且难以与地面IP网络进行融合,因此不是星座组网的最优选择。美国IRIS(Internet Protocol Routing in Space)于2009年将Cisco18400空间路由器搭载在Intelsat-14卫星上,并对其功能进行了在轨测试验证。Cisco18400是针对高轨卫星设计的星间IP路由器,其链路时延和误码率较高,带宽相对较低,且由于星上直接对IP包进行路由处理转发的复杂度较高,其吞吐量仅为250Mbit/s[6]。而低轨网络能够实现更高的带宽和较低的时延,但由于星上计算及存储资源有限,星间网络与地面网络条件相差较大,如何在支持IP数据包的同时实现对其高速路由成为低轨卫星路由器设计的关键问题[7-10]。
低轨移动星座拓扑具有高度可预测性[11],其星间网络常用基于快照的路由协议[12],对应的星载路由器主要执行2层交换功能,只存储星座周期内所有快照对应的转发表,执行查表及交换转发的功能。这种基于快照的路由协议对应的路由器设计实际上不具备3层路由的功能,难以适应突发的链路故障,容易造成丢包。而地面网络常用的路由器架构是针对每个到达的数据包进行路由计算与查找,其处理能力较弱,吞吐量低,且频繁调用星上计算资源,不适用于低轨移动星座网络的星载路由器设计。
针对低轨移动星座网络进行星载路由器设计时,应充分考虑星间网络的特点,即网络拓扑变化的周期性和可预测性,以及星间链路较高的吞吐率、较长的时延和较大的误码率,且要求路由器能够支持低轨星间链路较大的带宽需求[13]。本文提出一种高速星载路由器设计方案,面向非连接的星间网络,尽可能减少路由次数,利用转发表进行直接转发,从而最大化利用转发资源,提高转发速率,降低路由计算速率对转发平面速率的限制,节省星上计算资源,降低数据在星上的传输时延。同时借鉴地面路由器架构,允许控制平面进行动态路由计算,避免星间链路突发故障引起的丢包。支持2层源路由,针对重要数据帧采用控制机制简单地快速交换。此外,路由器数据平面采用基于共享内存的交换单元设计,与高速输入/输出接口连接,进一步提高数据交换速率。
1 高速星载路由器功能需求
星地一体化网路分为空间段、用户端和地面段,如图1所示。其中空间段的星间网络由各卫星上的核心路由器组成,是一个自治子网,网络内节点距离近,其能够支持的带宽远高于高轨星间链路。低轨星座应能覆盖整个地球表面,但其网络节点数却远小于地面网络,意味着其数据带宽应远高于地面网络链路。因此要求星载路由器具有5~10 Gbit/s的数据吞吐量[14],包括高速星间链路、馈电链路及与星内其他设备进行通信的所有带宽。其中星间链路带宽要求应高于100 Mbit/s,馈电链路应高于500 Mbit/s,从而满足大数据量的传输需求,有效承载地面网络数据。在传输上支持QoS(Quality of Service)[15]。星载路由器具有有限的计算资源和存储资源,但星间网络的拓扑结构具有周期性及高度可预测性,因此能够允许“一次路由,多次交换”的实现,即在一段时间拓扑保持不变时,路由器无需重复计算路由,只需根据转发表进行2层转发,从而实现路由和交换资源的最大化利用。此外,考虑到卫星网与地面网络的融合,要求星载路由器能够支持无连接的IP路由。
图1 星地组网结构示意Fig.1 Satellite-terrestrial integrated network
与地面路由器类似地,星载路由器根据功能分为两个平面(见图2):控制平面、数据平面。控制平面功能主要包括:1)与其他路由器交换拓扑信息,进行网络拓扑信息的维护;2)运行路由协议,根据当前网络拓扑及本星连接状态进行路由表的更新和维护;3)对交换单元进行配置和管理;4)对控制平面与数据平面间的接口进行管理。
图2 星载路由器功能需求Fig.2 Function requirements for onboard satellite router
数据平面功能包括:1)数据包转发和调度管理,对数据包的操作需要在每个数据包的到来和发送时执行;2)对高速输入/输出接口进行管理,设置相应的缓存区域;3)读取输入接口接收的数据包帧头,并对数据包进行分类。基于分类结果,数据包被丢弃或依据不同优先级进行处理转发,实现数据平面的QoS保障;4)满足重要报文ARQ[16](Automatic Repeat-reQuest)服务需求;5)支持2层路径路由(源路由);6)支持2层自定义帧格式。
2 高速星载路由器体系结构设计
2.1 路由器设计架构
基于共享内存的高速星载路由器结构设计如图3所示。其中控制单元功能主要由CPU实现,由于控制单元功能不需要在每个数据包到来时执行一次,因此对控制平面的速率要求比较宽松,且通常由软件实现其功能。查找转发功能主要在数据平面实现,为了实现数据的高速转发,选用抗辐照的FPGA作为交换单元。
由于低轨移动星座的规律性运行,其所组成的星间网络虽然是高度动态变化的,但是其拓扑变化是可预测的。因此可以由地面对单周期内全网路径选择进行预测,将拓扑快照与对应的路由表共同预置在控制平面中。当前网络拓扑与快照相符时,数据平面只需根据当前路由表进行数据包的转发。由于CPU路由计算速率相对较低,这样能够最大化利用FPGA的交换速率。
星载路由器工作过程为:
1)CPU接收网络内其他节点广播的链路信息,组成完整的网络拓扑信息,与预置的网络拓扑信息对比。相同时,直接使用预置的路由表进行转发表配置;不同时,采用动态路由方法进行路由表计算。路由表每次更新时,CPU需对FPGA中的转发表进行配置。
2)数据包进入自治网络后,在自治网络边缘路由器进行封装。在各星载路由器上,FPGA对数据包进行流分类和分组处理。目的地址为本星的捕获帧经捕获模块传输给CPU;中继转发帧如果有标签堆叠,则依照标签中的地址进行转发,同时弹出下一跳标签;如果没有标签堆叠,则查询转发表确定其控制信息,将数据包生存时间(TTL, Time to Live)减1,并计算其新的头部校验和。
3)如图3所示,要转发的报文入队调度后保存在共享存储单元中的虚拟输出队列[17](VoQ, Virtual output Queue),经出队调度和总线仲裁模块取出到发送轮询模块,由天线接口单元转发,或由星内设备接口发送至其他星内设备。
图3 星载路由器设计架构Fig.3 Architecture for onboard satellite router
2.2 路由器交换功能设计
星载路由器仅在网络拓扑因链路故障发生变化时进行路由计算,消除了其对交换速率的限制,同时支持2层路径路由(源路由)。路由器具有链路故障时进行路由重计算的功能,CPU主要执行3层路由功能。将单个周期所有网络拓扑快照及其所对应的路由表预置在CPU中。路由器自身连接的链路信息,及其他节点广播的网络拓扑信息通过FPGA发送到CPU,CPU维护网络链路连接状态数据库,当数据库与快照中的链路状态不同时采用动态路由方法,计算动态路由表,并对FPGA中的转发表进行重新配置。相邻路由器之间定时进行HELLO信令交互,确认自身链路通断情况,并将CPU所维护的链路状态数据库以链路状态通告信令的形式向全网广播。
路由器支持两种转发方式:其一是端到端的通信,需在路由器内进行查表转发;其二是针对时延敏感型报文,采用路径路由(源路由)的方法,令数据包按照规划路径进行转发。源路由方法借鉴MPLS“转发标记报文”[18]的思想,在进入自治网络前为该数据包帧头添加堆叠首部,即数据包将在自治网络内经过的节点地址,堆叠首部由地面站计算配置星间网络内的路由器交换单元直接读取标签栈顶地址进行转发,不需查询转发表。每经过一跳,路由器需剥离一层标签。经过路由器的数据包格式如图4所示,其中栈层数表示是否存在标签堆叠及其个数。
图4 2层自定义帧格式Fig.4 Self-defining frame format in switch layer
路由器在星间网络中的2层交换采用自定义帧格式,如图4所示。将地面以太网数据帧封装在净荷数据单元,对星间网络内的卫星节点及下传数据所用的地面站进行独立编址,并对星上不同端口进行端口号命名。数据帧在星间网络内传输时,只需查询自定义帧中的帧头控制字。同时针对不同业务类型进行优先级划分,利用队列调度算法、源路由及ARQ机制提供面向DiffServ[16](Differentiated Services)的QoS保证。
此外,通过将地面网络数据帧完整封装进净荷数据单元的方式,路由器能够兼容地面的IP网络。地面网络数据帧最大长度为1500字节,图4所示2层帧格式设计能够使净荷数据单元完整包含一个地面以太网络数据帧。因此可以将星间网络视为骨干网络,不同区域的地面网络视为不同的子网。地面网关作为网络边界节点,对数据包进行“封装”或“拆包”。在数据帧进入星间骨干网前对其依照图4所示格式添加帧头;对经由星间网络路由进入地面子网的数据帧进行帧头的删除,不影响数据包在地面IP网络的继续传输。
FPGA转发表单元需保存3张面向不同报文类型的转发表(见表1):单播转发表、组播转发表及逻辑-物理端口映射表。FPGA中的流分类处理模块根据数据包帧头中的目的地址决定需要查询的转发表,并将指令码发送到分组处理模块执行。
表1 FPGA转发表分类
2.3 队列及调度功能设计
路由器交换单元常见的有总线型、共享内存型[19]、Cross-bar空分结构型。其中总线型无法实现同时读写,导致交换速率较慢;Cross-bar型能够实现同时读写,可以完全避免数据阻塞,但构造的复杂度较高,需要专门的端口交换单元;在基于共享存储的路由器中,所有输入/输出端口均访问同一个存储单元,是一种输出缓存机制,能够在吞吐量和延迟方面达到最优的性能,但当数据量过大超出其所能承受的吞吐量时,可能会发生数据阻塞的现象。
基于路由器数据交换的速率需求,选择共享内存型交换单元,使用片外SDRAM作为存储单元。同一时间片内,允许所有输入端口写入,同时允许输出端口进行读取。
队列及调度模块结构如图5所示。
图5 队列及调度模块结构Fig.5 Structure of queue scheduling model
路由器发送数据采用基于优先级的DWRR[20]调度方式,在保证优先级的同时支持带宽预留,满足不同业务的QoS需求。队列管理模块根据优先级信息在片外SDRAM中为每个端口分别构造相应的虚输出队列(VoQ)。队列管理模块在设计时应保持公平与高效,不应出现某一队列占用所有存储资源,使其他队列无法及时存储的情况。因此,需要为每个输出队列设置最小存储容量和最大存储容量的限制。出队时,队列管理通过与调度模块交互信息保证高优先级的分组先出队,同时要求确保各个输出端口数据输出的公平性。
入队调度流程为:调度模块检测到控制信息FIFO非空,读取控制信息FIFO,并分析读取到的控制信息。向队列管理模块发送入队请求,调度模块反馈队列管理模块发送的入队信息,数据信息FIFO将数据帧搬移到总线仲裁模块。
出队调度流程为:出队调度从发送调度FIFO中读取到要出队数据的队列号,并发送该队列数据的出队请求到队列管理模块,队列管理模块返回出队信息。出队调度与缓存管理和查询模块配合,得到出队数据帧在SDRAM中的具体地址,将出队结果存入结果信息FIFO,传递给总线仲裁模块,由总线仲裁模块将待出队的数据帧从SDRAM中取出。
入队及出队调度流程如图6所示。
图6 入队/出队调度流程Fig.6 Input/Output queue scheduling process
此外,共享存储单元的SDRAM同时也执行重要数据帧的ARQ(Automatic Repeat Request)功能。由于星间网络是一个无连接的网络,且传播时延较大。利用ARQ功能的“确认-重发”机制,仅针对优先级较高的重要信令数据帧执行功能,从而保证重要的信令报文能够准确到达,同时防止大量优先级较低的数据包占用存储资源。其具体工作流程为:卫星A路由器收到高优先级信令消息,查询其帧头目标地址为B路由器,此时A路由器将复制一份该信令存储到SDRAM中,同时将该数据包发到B路由器。B路由器收到A发送的信令后,对其发送响应。A收到响应后将删除SDRAM中的备份数据包,如果超时未收到响应,则重发该数据包。
2.4 接口单元设计
路由器与星内其他设备直接通信的接口速率通常在100 Mbit/s之内。在用于星载处理设备间高速数据传输的总线协议中,Spacewire[21]能够达到单向200 Mbit/s的全双工传输速率,速率可调,允许链路层流量控制。与地面网络的以太网接口相比,其速率仍然较低,但其具有针对星上数据传输的标准成熟的协议及接口芯片,故其在星上的可用性及可扩张性远优于以太网接口。因此,为了支持与星载设备系统的集成与测试[4],路由器选用Spacewire接口作为和星内其他设备通信的高速接口。此外,L波段链路作为用户链路,其带宽要求相对较低,通常在100 Mbit/s以内。路由器设计8路100 Mbit/s的Spacewire接口,其中1路作为用户链路天线接口,7路连接到星内其他设备。根据星间网络场景需求,星间链路带宽要求通常为200~400 Mbit/s,馈电链路与地面站通信时,其带宽要求比星间链路更高,通常在1 Gbit/s以内。Serdes接口支持高速传输,最高能达到2.5 Gbit/s的速率。为了向后兼容星间激光链路的数据传输需求,路由器采用标准Serdes芯片经串并转换后与交换单元连接,作为星间链路及馈电链路的高速输入输出接口。其中4条星间链路的业务速率设计为500 Mbit/s,两条馈电链路业务速率设计为1 Gbit/s。
图7 星载路由器接口单元Fig.7 Interface unit of onboard satellite router
路由器共享内存单元的SDRAM应支持同一时间片内,一次分组的同时读写。接口最大速率为4.8 Gbit/s,故要求SDRAM总线速率大于9.6 Gbit/s。考虑到SDRAM工作频率为100 MHz,采用160位SDRAM总线(有效位宽128位)能够实现12.8 GHz的总线带宽,满足输入/输出接口的交换要求。
3 性能测试
路由器测试设备由PXIE工控机与控制计算机组成,其中PXIE工控机用于实现基于FPGA的数据包收发与统计功能,控制计算机运行测试设备控制软件,负责对PXIE工控机进行配置管理,并显示测试结果。测试系统组成原理框图如图8所示。
图8 路器测试系统原理框图Fig.8 Test system of onboard satellite router
针对路由器接口单元进行测试时,需先配置静态转发表。目的地址1~13输出端口1~14;目的地址221对应的输出端口为所有端口(1~14);目的端口号0对应的输出端口为1。
3.1 路由器交换功能测试
对其单播、组播、任播功能进行测试。
(1)单播测试
测试设备向14个端口各发送1条单播流量,帧长为100字节,帧间隔1 000 ns,对应接口速率98 Mbit/s。其中,端口1发送流量目的地址为1,端口2发送流量目的地址为2,端口14发送流量目的地址为0,其测试拓扑如图9(a)所示。
(2)组播测试
测试设备端口1向路由器各端口发送1条组播流量,帧长100字节,帧间隔1 000 ns,对应接口速率98 Mbit/s,其测试拓扑如图9(b)所示。
(3)任播测试
测试设备端口1发送1条帧长100字节,帧间隔1 000 ns的流量,其测试拓扑如图9(c)所示,通过测试路由器FPGA内部捕获标志是否置1判断功能是否正常。
图9 转发功能测试拓扑Fig.9 Test topology of forwarding function
续图9Fig.9 Continued
(4)本星测试
测试设备端口1发送1条流量,帧长100字节,帧间隔1 000 ns,目的地址为255(本星地址),目的端口号为7(Spacewire端口)。
功能测试结果如表2所示。
表2 单播、组播、任播转发测试结果
3.2 接口速率测试
测试设备向路由器14个端口分别发送单播流量,帧长为100字节,接口速率为线速率,针对不同接口速率需求对测试设备发送速率进行设置,同时路由器向测试设备端口发送同样速率的流量,进行双向收发线速率测试,测试结果如表3所示。
由于各端口均为双向收发,其总吞吐量能够达到9.6 Gbit/s,其中业务链路(包括星间链路、馈电链路和用户链路)端口能够实现5.1 Gbit/s吞吐量。
表3 接口线速率测试
4 结束语
本文针对低轨移动星座的应用场景,提出了一种高速星载路由器设计架构,结合星间网络路由的特点和需求,给出了一种能够最大化利用交换速率资源,且具有高速输入/输出接口的星载路由器设计方案,经实例测试验证,
1)与Cisco18400星载路由器相比,吞吐率显著提高,实现交换资源的充分利用;
2)支持标签堆叠的源路由方式,提供面向DiffServ的QoS保障;
3)同时支持动态路由和静态路由,有效减少了路由计算对CPU计算资源的消耗;
4)标准Spacewire接口便于与星内其他设备集成;
5)为星座组网相应的载荷工程实现奠定了技术基础。