一种基于网络处理器的网络编码路由器的制作方法

文档序号:7715917阅读:87来源:国知局
专利名称:一种基于网络处理器的网络编码路由器的制作方法
技术领域
-
本发明涉及一种路由器,尤其涉及一种基于网络处理器的网络编码路 由器。
背景技术
当前网络中的组播应用变得日益流行且不可或缺,但主要是面向单播
业务的传统网络,目前还无法对组播提供良好的支持。网络编码(network coding)为组播网络的设计和应用提供了一种有效的途径。在由各种端节点 所构建的应用层网络上采用网络编码,可以利用端节点自身的存储和计算 能力进行网络编码和转发,不需要对底层的网络和设备做任何修改,此种 方案具有切实可行的优点。但是这种方案存在一些明显的缺点不能取得 很高的网络容量;端节点通常不能清楚地知道底层网络拓扑的特性任何
一条端到端的连接通常跨越多跳物理链接,而不同的端到端连接也可能共 享同一条物理链接。另外,这种方案还存在端节点性能无法保障和编解码 累计开销大等问题。
在路由器所组成的网络上实行网络编码,与在应用层上的网络编码不 同,它可以使网络吞吐量更加逼近理论上界,还可以提升端到端的性能。 它采用在组播网络上允许路由器对从不同输入链路上接收到的几个IP报文
(packet)的载荷进行编码、封装,然后把新产生的报文向特定的下行链 路发送出去。这样可以进一步提升网络吞吐量以及端到端的性能,还可以获得其他有益效果,如网络编码算法可以集中在路由器上优化,而不是分 散在端节点上优化;可以很大地简化底层分发拓扑,减少端到端的实际跳 数,进而减少编码次数和端到端延迟;避免了由于终端主机编码相关性大 而引起的延迟。另外,如果从接入路由器到它所管辖的各个终端节点之间 再采用IP组播,还可以继续节省接入带宽和接入时间,网络编码不需要在 端节点进行,从而减小了端节点功能的复杂度。
但这种方案需要对当前现有的组网方式、路由协议、组管理、路由器 体系结构等进行较大的改变,这些都是很大的挑战。对于组网,为了满足 网络编码的需要,在网络规划时就要考虑每个路由器的直接连接的相邻路 由器的数量,以保证在信源与信宿之间存在着多条路径。
基于当前已有应用中具有网络编码功能的路由器(如图1中标识2所 示)及其数据分发模型(如图l所示),如何能尽可能发挥网络编码在网络 吞吐率提升方面的优势,以及如何尽可能地减少应用中在编解码开销上的 影响,采用什么样的体系结构,如何设计网络编码流程,为本发明所要解 决的网络编码技术的问题。

发明内容
本发明目的提供一种基于网络处理器的网络编码路由器,采用单个或 多个网络处理器(networkprocessor,简称NP)实现网络编码路由器结构设 计及编码流程。能有效提升网络数据吞吐量,节省接入带宽和接入时间, 节约应用中硬件资源。
本发明基于英特尔公司的IXP2400网络处理器(Internet eXchangeProcessor2400)实现的,包含采用单个或多个IXP2400网络处理器的实现 方式。基于单个IXP2400网络处理器的路由器,包含以下内容
IXP2400网络处理器,包含XScale核、8个微引擎(ME, Microengine)、 用于连接外部设备的媒体或交换结构访问接口 (Media or Switch Fabric Interface, MSF)单元和连接各种存储器和总线的接口 I/O单元,用于对 数据包进行转发,实现路由功能。
SRAM (Static Random Access Memory),用于存放对数据包包头进行 处理所需的重要信息和数据包的队列描述等内容。
DRAM (Dynamic Random-Access Memory),用于存方文需要处理和转发 的数据包、路由表等大型数据结构。
协处理器,用于进行协同网络处理器进行处理操作;它主要用于为网 络处理器进行哈希和加密计算。
闪存,用于存放网络处理器启动时的初始化文件。包含3个文件一 个文件用于在IXP2400网络处理器启动时将加载到XScale上的压縮的 VxWorks内核二进制文件; 一个文件用于在IXP2400网络处理器启动时将 加载到各个微引擎上的指令二进制文件; 一个文件用于在IXP2400网络处 理器启动时设置各个端口的IP地址以及访问控制等的配置文本文件。
输入输出接口及总线,用于外部模块或设备与网络处理器的连接。其 中,MSF用于控制对外部设备的访问。MSF接口上连接了高速接收总线、高 速发送总线。这两个总线分别用于从外部模块或设备上接收、发送报文。 PCI (Peripheral Component Interconnect)总线允许网络处理器连接各种遵守PCI接口标准的外围设备。PCI总线还可以连接通用处理器(CPU)。 上述IXP2400网络处理器,其XScale核执行在慢速的控制管理层面, 用于执行路由协议、网络管理、异常处理、测量统计等任务;各个微引擎 执行在快速报文通道的数据层面,用于执行报文的识别、分类、路由表査 找、转发等任务。各个微引擎分别承担其中的不同子任务,并按照流水线 的方式组织在一起。8个微引擎分为两组0组与1组。O组的微引擎分别 编号为0:0、 0:1、 0:2、 0:3。 1组的微引擎分别编号为1:0、 1:1、 1:2、 1:3。 每个微引擎上又可以运行8个线程,0:0负责从外部媒介接收物理层帧;0:1、 0:2或1:3负责分析IP报文的头部并进行处理;0:3负责报文队列的管理; l:O负责报文的调度;1:1、 l:2负责把物理层帧发送到外部媒介。
为支持网络编码,在负责处理IP报文的微引擎上增加网络编码模块, 其包含代(genemtion)查找子模块、编解码子模块和转发子模块
代査找子模块,用于根据报文头部的4个关键字段,査找报文对应的 代及其缓存;
编解码子模块,用于为每个代计算它相应的缓存中各个系数矢量所形 成的矩阵是否达到满秩,如果达到满秩,则执行编解码,产生新的数据块, 然后用网络编码协议(Network coding protocol,简称NCP)与IP协议进行 封装,生成新的IP报文,最后释放该缓存,放入空闲链表中;
转代发子模块,用于根据网络编码专用的一张转发表,查找出由编码 所产生的新报文的输出端口 ,并由此把这些新报文发送出去。
在XScale核上增加路由维护子模块、组管理子模块、缓存管理子模块及性能预测子模块
路由维护子模块,用于获取物理网络拓扑信息,为每个组播连接建立 传输路径,并相应在内存中维护一张转发表,用于决定由编码所产生的新 报文的输出端口;
组管理子模块,用于维护组的新建和删除、组成员的加入和退出等状 态信息;
缓存管理子模块,用于处理在缓存中报文停留时间过久,剩余缓存空 间不足等异常情况;
性能预测模块,用于判断一个报文是否有网络编码的必要性。
在上述基于单个IXP2400网络处理器的路由器的发明内容中,网络编 码协议采用在原有的IP协议头中新增一个协议头(NC头),用于保存网络 编码所需的信息,其中包括全局编码系数矢量(Global encoding coefficient vector)。 NC协议头插在IP协议头和传输层协议头之间。
上述路由器的实现中,其IP有效负荷参与编码, 一个IP报文的载荷 先被分裂为若干个等字节长度的片段,然后对于每一个片段,用NC协议头 和IP协议头部进行封装,其产生的报文从外部看与其它普通的IP报文没 有显著差异。那个原始的IP报文就被称为对应于一代,由那些片段所生成 的报文就被称为属于这一代,片段的数目称为这一代的大小。只有从同一 代衍生出来的片段才可以相互编码。
本发明还提供一种基于上述单个IXP2400网络处理器的路由器,其编 码过程,包含以下实现步骤-(1) 微引擎0:0从外部媒介接收物理层帧,并把这个物理层帧放入一个接收队列等待处理IP报文的微引擎将其取走;
(2) 微引擎(0:1、 0:2或1:3)首先从接收队列中取出一个物理层帧,如果接收队列是空的,则微引擎继续等待,直到有一个物理层帧被接收到;
(3) 微引擎删除物理层的帧头,只留下IP头部和载荷;
(4) 从IP头部中提取第3层协议字段,判断是否属于网络编码协议,如果是,则执行网络编码的处理,进入网络编码过程;否则作为普通的IP报文进行处理;
(5) 网络编码开始,先从IP头部中提取源IP地址、目的IP地址、第4层协议、代的编号四个字段;
(6) 以这4个字段作为关键词,判断是否已经存在相应代的缓存;
(7) 如果相应代的缓存存在,则判断这个缓存中各个块的编码系数矢量所组成的矩阵是否达到了满秩。如果满秩,则执行编码操作;如果不满秩,则只进行存储,等待下一块的到达,直到缓存中达到满秩为止。如果相应的代的缓存不存在,则要建立新的缓存。如果剩余空间不足而无法建立新的缓存,则不进行网络编码。
(8) 完成编码之后,根据报文头部的关键字段査找相关的转发表,确定由编码所产生的新报文的输出端口。
(9) 微引擎(0:1、 0:2或1:3)把编码后的载荷封装为新的IP报文,并把这个IP报文的内存地址以及其它元信息,放到对应端口的发送队列中,等待发送微引擎(1:1或1:2)把报文取走,沿着组播路径的指定的下行链路发送出去。
在上述的步骤中,需尽量减少对于IXP2400上的各种内存的访问次数,包括片上内存与片外内存,以降低其消耗时间。另外,在编解码算法中涉及到的伽罗瓦域(Galois field)上两个字节相乘的运算,可以通过一个字节乘法表来快速地获取乘积。
本发明还提供一种基于多个IXP2400网络处理器的路由器,包含以下内容
一个交换矩阵(Switch fabric),连接主CPU、备CPU及所有IXP2400,用于在不同IXP2400之间或者主、备CPU与IXP2400之间进行报文的交换;
一个主控处理器(主CPU),用于控制管理层面任务;
一个备用处理器(备CPU),用于在主CPU发生故障时,接替主CPU工作,以维持整个路由器正常的工作;
多个IXP2400网络处理器,每个IXP2400负责某一部分端口上报文的接收与发送,所有IXP都处于数据平面。
本发明中,为支持网络编码,在交换矩阵上还连接了一个专用的IXP2400网络处理器,专门用于网络编码协议的处理。专用于网络编码的IXP2400,其微引擎包括以下子模块代查找子模块、载荷编解码子模块、转发表査找子模块及报文转发子模块。其XScale核包括了以下子模块网络编码的路由维护子模块、组管理子模块、缓存管理子模块、性能预测子模块。
基于上述多个IXP2400网络处理器的路由器内容,本发明还提供一种基于多个IXP2400的路由器网络编码的实现方法,包含以下步骤-
(1) 从输入端接口接收报文,并存放于IXP2400的内存中;
(2) 根据IP头部的第3层协议字段确定这个报文中是否包含网络编码协议;
(3) 如果不包含网络编码协议,那么按传统的"存储-转发"方式对报文进行处理;如果包含网络编码协议,那么把这个报文发送到专用于网络编码的IXP2400上,由此IXP2400进行专门的处理;
(4) 判断专用IXP2400上与代相应的缓存是否存在,如果不存在为该代建立新的缓存,并在该代相应的缓存中存入新到达的块;如果与代相应的缓存存在,在该代相应的缓存中存入新到达的块;
(5) 判断该缓存中是否达到满秩,如果不满秩则只进行存储,等待下一块的到达,直到缓存中达到满秩为止;如果达到满秩,则进行网络编码;
(6) 网络编码完成后,根据网络编码专用的转发表,决定编码后新产生的报文要被输出到其它哪个IXP2400的哪个端口上;
(7) 通过交换矩阵将该报文传送到指定的IXP2400,最后通过该指定IXP2400的端口,把报文输出到外部的传输链路上。
本发明基于上述IXP2400网络处理器的路由器及其编码的实现过程中,在网络编码的缓存上,当报文在缓存中停留过久,超过指定的时间,且其它报文仍然没有到达时,应立刻将这些停留超时的报文发送出去,避免因过长的报文延迟给网络编码造成时间较长的不利影响。另外,当一个代的报文到达路由器时,如果这个路由器上所有网络编码专用的缓存全部被其它代的报文占用,新到达的报文将无法获取缓存,则可以选择将那些占用缓存时间最长的代的报文立刻发出去,而不再等待编码,释放相应的缓存;或者将新到达的代的报文立刻发出去,而不再申请网络编码专用的缓存,以避免缓存时间较长给网络编码带来的影响。


-
图l支持网络编码的路由器组网示意图2路由器上报文的分段与重封装、编码、解码示意图3基于单个IXP2400网络处理器的路由器的结构图4基于单个IXP2400网络处理器的路由器编码过程示意图5基于多个IXP2400网络处理器的路由器的结构图6基于多个IXP2400网络处理器的路由器编码过程示意图中标识
l为一个支持网络编码的自治网络;2为一个支持网络编码的路由器;3为一个信源主机发出的原始报文p; 4为路由器上的分段与重封装操作;5为报文P分段与重封装后产生的一个新报文P3; 6为路由器上的编码操作;
7为报文pl、 p2、 p3编码后产生的一个新报文p7; 8为路由器上的解码操作;9为XScale核;10为微引擎;11为IXP2400处理器;12为报文接收微引擎;13为IP报文处理微引擎;14为网络编码的缓存区;15为队列管理微引擎;16为队列调度微引擎;17为报文发送微引擎;18为主CPU; 19为备CPU; 20为专用于网络编码的网络处理器;21为交换矩阵;22为非专用的网络处理器与I/O;具体实施方案
基于本发明提出的单个IXP2400网络处理器的路由器及其网络编码的实现方法,具体的实施方案如下
考虑一个单源多宿的组播网络,它是由信源端节点、信宿端节点、支持网络编码的路由器所构成,进行分割和编码。数据报的不同片段被转发到不同的网络分支,并在之后经过的路由器上进行编码或者解码。最终信宿主机将收到这些数据报。
下面的例子进一步说明了本发明中的基于网络编码的报文传输的过程。信源端节点向信宿端节点发送一个IP报文P (图2中标识3),传输过程分为如下3个阶段(如图2所示)
(1)分割与封装(图2中标识4)
首先,信源把报文p发送到与之直接相连的路由器,在这个路由器上,
把报文p的载荷分割为几个字节数相等的片段(现假设等分为3段),然后用网络编码协议把这3段分别进行封装,接着再用IP协议进行封装,结果产生3个新的IP报文pl、 p2、 p3 (图2中标识5),从外部看来它们与别的普通IP报文没有显著区别。如果在组播连接上信源与信宿之间存在着多条不相交的传输路径,那么就把这些报文pl、 P2、 p3分别沿着3条不同的传输路径向信宿方向发送。这个阶段称为分割与封装(SE, Segmentation &Encapsulation),执行这个功能的路由器称为SE路由器。
SE路由器决定来自信源的IP报文p是否需要编码。满足以下条件的IP报文才需要编码第一,IP报文是组播的;第二, IP报文的载荷是足够大。IP载荷在整个数据包中应该占有较高的比重。否则,如果这个比重过低而使网络编码协议头所占的开销过大,则应该停止编码。如果不需要编码,则按照传统方式,直接根据路由表转发。以下内容以报文P需要进行网络编码为例进行描述。
此功能不只用于路由器,也可以用于端节点。如果这个功能用于端节
点,那么用于编码的IP载荷的长度,不受最大传送单元(MTU, MaximumTransmission Unit)的限制,最高可以达到64KB。这样提高了编码的封装效率。
(2)编码(图2中标识6)
在传输路径上,不是所有的路由器上需要支持编码。只有那些处于瓶颈链路上的路由器才需要编码,这种路由器称为EC路由器(EnCoding)。在那些不需要执行编码的路由器上,只需要对于接收到的报文按照指定方向转发即可。而在EC路由器上,对于从不同路径上到达的各个报文,把它们的载荷进行编码、重封装,产生新的IP报文(如p4、 p5、 p6、 p7、......)
(图2中标识7),然后再分别沿着几条不相交的路径朝信宿的方向发送。之后,这些编码的新IP报文在传输路径上可能还会遇到另一些路由器。同样,这些路由器也将分别根据不同情况,或者对报文执行编码,或者只进行指定方向的转发。这个阶段称为编码(Encoding),执行这个功能的路由器称为EC路由器。
在EC路由器上,接收的具有NC协议的IP报文,根据它们的代的编号,被收集到相应的缓存中。在一个代中收集到足够数目的报文之后,EC路由器使用线性编码把这些报文进行编码,编码系数是从伽罗瓦域中随机选取
的。然后,它修改报文的NCP协议头的字段,把编码后产生的报文发送到
输出链路上。
(3)解码(图2中标识8)
最后,当编码的报文(如p4、 p5、 p6、 p7、......)到达组播连接末端
的路由器上时,需要执行解码,把原始报文p恢复出来,然后把报文p发送给与之相连的信宿。这种路由器只有收集到足够多的由原始报文P衍生的线性无关的编码报文,才能恢复出原始报文P。如果一些编码的报文在到达路径末端的路由器之前发生了丢失、错误等异常情况,那么将有可能不能恢复出P。这个阶段称为解码(DeCoding),执行这个功能的路由器称为DC路由器。解码只用于与一些信宿直接相连的路由器上。
在DC路由器上,到达的报文先被存储在对应于它们的代的编号的缓存中。在收到足够的线性无关的编码块之后,根据NC协议头中保存的全局编码矢量,它使用高斯消元法来解码这些数据块。在成功解码之后,DC路由器把NC协议头从IP协议头中删除。此后DC路由器把源报文p发送到它所连接的作为该组播组成员的信宿端节点。
上述的报文的分割与重新组装、编解码等都是在路由器上进行的,对信源和信宿都是完全透明的。
权利要求
1、一种基于单个IXP2400网络处理器的路由器,由IXP2400网络处理器、SRAM、DRAM、协处理器、闪存、输入输出接口及总线构成,其特征在于IXP2400网络处理器中负责处理IP报文的微引擎上增加网络编码模块,在XP2400网络处理器的XScale核上增加路由维护子模块、组管理子模块、缓存管理子模块及性能预测子模块。
2、 如权利要求1所述的一种基于单个IXP2400网络处理器的路由器,其特 征在于所述网络编码模块由代查找子模块、编解码子模块和转发子模块 构成。
3、 一种基于单个IXP2400网络处理器的路由器网络编码的实现方法,包含 以下步骤(1) 微引擎O:O从外部媒介接收物理层帧,并把这个物理层帧放入一 个接收队列等待处理IP报文的微引擎将其取走;(2) 微引擎(0:1、 0:2或1:3)首先从接收队列中取出一个物理层帧, 如果接收队列是空的,则微引擎继续等待,直到有一个物理层帧被接收到;(3) 微引擎删除物理层的帧头,只留下IP头部和载荷;(4) 从IP头部中提取第3层协议字段,判断是否属于网络编码协议。 如果是,则执行网络编码的处理,进入网络编码过程;否则作为普通的IP 报文进行处理;(5) 网络编码开始,先从IP头部中提取源IP地址、目的IP地址、 第4层协议、代的编号四个字段;(6) 以这4个字段作为关键词,判断是否已经存在相应代的缓存;(7) 如果相应代的缓存存在,则判断这个缓存中各个块的编码系数矢 量所组成的矩阵是否达到了满秩。如果满秩,则执行编码操作;如果不满 秩,则只进行存储,等待下一块的到达,直到缓存中达到满秩为止。如果 相应的代的缓存不存在,则要建立新的缓存。如果剩余空间不足而无法建 立新的缓存,则不进行网络编码;(8) 完成编码之后,根据报文头部的关键字段查找相关的转发表,确 定由编码所产生的新报文的输出端口;(9) 微引擎(0:1、 0:2或1:3)把编码后的载荷封装为新的IP报文, 并把这个IP报文的内存地址以及其它元信息,放到对应端口的发送队列中, 等待发送微引擎(1:1或1:2)把报文取走,沿着组播路径的指定的下行链 路发送出去。
4、 如权利要求3所述的一种基于单个IXP2400网络处理器的路由器网络编 码的实现方法,其特征在于所述网络编码协议采用在原有的IP协议头中 新增一个协议头,用于保存网络编码所需的信息,NC协议头插在IP协议头 和传输层协议头之间的实现方式。
5、 一种基于多个IXP2400网络处理器的路由器,由一个交换矩阵、 一个主 控处理器、 一个备用处理器及多个IXP2400网络处理器构成,其特征在于 其交换矩阵上还连接一个专用IXP2400网络处理器,专门用于网络编码协 议的处理。
6、 如权利要求5所述的一种基于多个IXP2400网络处理器的路由器,其特 征在于所述专用IXP2400网络处理器的微引擎包含代査找子模块、载荷 编解码子模块、转发表查找子模块及报文转发子模块;所述专用IXP2400网络处理器的XScale核包含网络编码的路由维护子模块、组管理子模块、 缓存管理子模块及性能预测子模块。
7、 一种基于多个IXP2400的路由器网络编码的实现方法,包含以下步骤(1) 从输入端接口接收报文,并存放于IXP2400网络处理器的内存中;(2) 根据IP头部的第3层协议字段确定这个报文中是否包含网络编 码协议;(3) 如果不包含网络编码协议,则按传统的"存储-转发"方式对报 文进行处理;如果包含网络编码协议,那么把这个报文发送到专用于网络 编码的IXP2400网络处理器上,由此IXP2400网络处理器进行专门的处理;(4) 判断专用IXP2400网络处理器上与代相应的缓存是否存在,如 果不存在为该代建立新的缓存,并在该代相应的缓存中存入新到达的块; 如果与代相应的缓存存在,在该代相应的缓存中存入新到达的块;(5) 判断该缓存中是否达到满秩,如果不满秩则只进行存储,等待 下一块的到达,直到缓存中达到满秩为止;如果达到满秩,则进行网络编 码;(6) 网络编码完成后,根据网络编码专用的转发表,决定编码后新 产生的报文要被输出到其它哪个IXP2400网络处理器的哪个端口上;(7) 通过交换矩阵将该报文传送到指定的IXP2400网络处理器,最 后通过该指定IXP2400网络处理器的端口,把报文输出到外部的传输链路 上。
8、 如权利要求3和权利要求7中所述的路由器编码的实现方法,其特征在于当所述报文在缓存中停留过久,超过指定的时间,且其它报文仍然没 有到达时,应立刻将这些停留超时的报文发送出去。
9、如权利要求3、权利要求7和权利要求8中所述的路由器编码的实现方法,其特征在于当一个代的报文到达路由器,如果此路由器上所有网络 编码专用的缓存全部被其它代的报文占用,新到达的报文需获取缓存时, 可以选择将那些占用缓存时间最长的代的报文立刻发出去,释放相应的缓 存或者将新到达的代的报文立刻发出去,不再申请网络编码专用的缓存。
全文摘要
本发明提供一种基于单个和多个网络处理器的网络编码路由器及其实现网络编码的方法。采用英特尔IXP2400网络处理器作为处理器设计架构,为支持网络编码,在负责处理IP报文的微引擎上增加网络编码模块,网络编码模块包含代查找子模块、编解码子模块和转发子模块,在XScale核上增加路由维护子模块、组管理子模块、缓存管理子模块及性能预测子模块的实现方式。同时本发明还分别提供了基于单个或多个网络处理器的路由器的编码实现流程。采用本发明提供的解决方案,能有效提高网络编码在网络吞吐率提升方面的优势,降低在应用中编解码上的开销,满足网络应用中路由器设计的需求。
文档编号H04L12/56GK101656681SQ200910194978
公开日2010年2月24日 申请日期2009年9月2日 优先权日2009年9月2日
发明者珉 林, 新 王, 薛向阳, 进 赵 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1