一种面向数据中心的编码网络系统及其工作方法转让专利

申请号 : CN201310486598.5

文献号 : CN103532954B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈运海叶保留陆桑璐

申请人 : 南京大学镇江高新技术研究院

摘要 :

本发明公开了一种面向数据中心的编码网络系统及其工作方法,编码网络系统主要由数据中心中的多台服务器、连接这些服务器的编码路由器及数据链路。服务器和编码路由器都构建编码网络协议模块、编码网络生成树协议模块、编码传输协议模块、编码缓存管理模块及Socket复用模块,这些协议模块协同工作,对外提供一个编码网络系统。工作方法包括网络编码协议的实现及向以太网、令牌环等数据链路层的注册、编码网络生成树协议和编码传输协议的实现和向编码网络协议的注册、路由编码缓存管理、Socket的复用等。该系统使得报文能够在中间路由进行编码,以降低数据中心网络的负载,增加网络资源利用率。

权利要求 :

1.一种面向数据中心的编码网络系统,该系统主要包括数据中心中的多台数据服务器、连接这些数据服务器的编码路由器及数据链路,以编码路由器和数据服务器作为通信节点,其特征在于,在每个通信节点上都构建有:TCP/IP协议栈模块:用来作为数据中心普通应用程序的网络协议支持;

编码网络协议模块:使编码网络协议平行于IP协议,基于网络编码技术在数据中心中提供数据报文的编码传输;

编码网络生成树协议模块:为每一个通信特征码标识的编码数据通信构建一个逆向多播树,以支持编码传输协议;

编码传输协议模块:对于每个通信特征码标识的编码数据通信,根据编码网络生成树协议所生成的逆向多播树,同步各个叶子节点和中间编码路由器,使得数据由叶子节点同步的传输到根节点,并在中间过程的交汇点做编码操作;

编码缓存管理模块:对于每个逆向多播树的交汇节点,为每一个通信特征码管理通信节点的缓存,完成编码同步和内存的申请释放;

Socket复用模块:将编码传输协议注册到Socket通信列表中,使得上层的应用程序能够调用该协议做编码传输,编码传输首先调用编码网络生成树协议,生成一个逆向多播树,并在各个交汇节点做记录,之后再同步启动编码传输协议。

2.权利要求1所述面向数据中心的编码网络系统的工作方法,其特征在于包括以下步骤:

1)编码网络协议的实现及其向数据链路层的注册,

2)编码网络生成树协议的实现及其向编码网络协议的注册,

3)编码传输协议的实现及其向编码网络协议的注册,

4)编码缓存管理的实现;

5)Socket复用的实现。

3.根据权利要求2所述面向数据中心的编码网络系统的工作方法,其特征在于步骤1)具体步骤包括:

11)由各通信节点的编码网络协议模块实现编码接收函数cnp_rcv(),编码接收函数在接受到数据报文后,通过本地的通信特征码集,来确定是对该数据报文进行缓存操作还是转发操作,通信特征码集由cnstp协议维护;具体为:

111)编码网络协议对转发到数据报文直接调用cnp_output()函数,该函数根据情况将数据报文转发到下一个通信节点或者转交到上层的编码网络生成树协议、编码传输协议;

112)编码网络协议对需要编码的数据报文调用cnp_code()函数,该函数将数据报文缓存到编码缓存管理模块分配的内存中,如果缓存中有需要编码的数据报文,则将两个数据报文进行编码之后存储并更新编码报文个数,在达到该节点所需编码的报文个数之后,则标志着本通信节点的编码任务完成,然后再对编码报文调用cnp_output()函数将之发送出去;

12)实现CNP协议的cnp_output()函数的插口结构,供上层的CNSTP和CTP协议调用CNP协议注册时使用;

13)将实现好的CNP接收函数cnp_rcv()及选择好的类型协议码组建成一个packet_type类型变量,然后调用dev_add_pack()函数注册到底层的数据链路层中;

14)实现CNP的数据报文发送函数cnp_queue_xmit(),该函数首先添加CNP协议的报文头部,之后调用数据链路层的dev_queue_xmit()函数将数据报文发送到数据链路层。

4.根据权利要求2或3所述面向数据中心的编码网络系统的工作方法,其特征在于步骤

2)具体步骤包括:

21)由编码网络生成树协议模块通过源节点广播,以最小代价选择算法选择最小代价的逆向多播路径,

22)在CNP协议中的插口结构中注册CNSTP协议,将实现好的cnstp接收函数cnstp_rcv()及选择好的协议类型码注册到cnp的插口结构中,

23)在该协议中实现数据发送操作函数cnstp_xmit()函数,通过添加cnp协议报文头部之后调用cnp_xmit()函数转交给cnp处理。

5.根据权利要求4所述面向数据中心的编码网络系统的工作方法,其特征在于步骤21)具体实现如下:

211)每个源节点对当前节点向目的节点和所有兄弟节点集的下一跳端口发送一个cnstp多播报文,报文中包含通信特征码(sid)、路径码(rid)、目的地址(destination)和兄弟节点地址集(brothers)、当前通信代价,其中当前通信代价以报文数×条数为标度;

212)每个通信节点在收到cnstp多播报文之后,更新报文中的当前通信代价,并对目的节点和兄弟节点集中的每个节点进行下一跳寻径;

213)对于所有的寻径的下一跳都一致的情况,该通信节点将该cnstp报文转发到下一跳节点,或者对于所有的寻径不一致的情况下,该通信节点将此cnstp报文直接单播发送到目的节点,并生成一个新的cnstp报文进行多播,兄弟节点集为下一跳与目的节点属于同一个端口的所有通信节点;

214)通信节点收到已缓存的通信特征码、路径码标志着多播回路的产生,此时,算法会及时的进行多播剪枝,以避免洪泛;

215)目的节点在收到所有源节点的通信代价信息之后,对这些信息进行汇总,找出一个代价最小的逆向多播树,对于多棵逆向多播树有相同的最小代价时,路径选择则由上层应用层决定,随机选择一棵生成树或者可将多棵生成树协同地利用,以均衡系统的运行压力;

216)将上述步骤生成的逆向多播树链路发送至每个源节点,在每个通信节点上标识(sid, nextport)通信对,以供其余协议的使用;

217)回收该算法中的资源。

6.根据权利要求2或3所述面向数据中心的编码网络系统的工作方法,其特征在于步骤

3)具体步骤包括:

31)编码传输协议模块使每个通信源节点维护一个滑动窗口,对超时未确认的数据报文进行重传;

32)编码传输协议将接收到的数据报文根据端口号信息转交到上层的应用层;

33)在CNP协议中的插口结构中注册CTP协议,将实现好的ctp接收函数ctp_rcv()及选择好的协议类型码注册到cnp的插口结构中;

34)在该协议中实现数据发送操作函数ctp_xmit()函数,通过添加cnp协议报文头部之后调用cnp_xmit()函数转交给cnp的发送函数处理。

7.根据权利要求2或3所述面向数据中心的编码网络系统的工作方法,其特征在于步骤

4)具体步骤包括:

41)通信源节点和通信编码节点都设置一个报文缓存区,以缓存等待网络传输或者等待编码的数据报文,其中源节点中的缓存区表现为滑动窗口,根据网络通信和编码情况扩大或者收缩窗口的大小,主要由CTP控制;编码节点中的缓存区表现为缓存资源池,编码网络系统对每个会话(session)在每个编码节点维护一个编码等待区,用来放置先来到的数据报文,等待其兄弟节点的数据报文以便编码;

42)滑动窗口采用TCP协议中的慢启算法,算法每次收到确认报文时都会增大接收窗口,增加的大小就是已确认报文的数目,这种情况一直保持到没有收到一些段或者窗口大小到达预先定义的阈值,如果发生丢失事件,算法就认为这是编码拥塞或者传输阻塞,就会采取措施减轻这种拥塞,一旦发生丢失事件或者到达阈值,算法就会进入线性增长阶段;

43)缓存资源池采用固定上限的缓存模式,在达到最大缓存的x倍时,推荐x取值在0.7~0.9之间,向上游的源节点发送源抑制报文,源节点收到该报文则将滑动窗口的大小降至为1,以避免缓存溢出造成的报文丢失。

8.根据权利要求2或3所述面向数据中心的编码网络系统的工作方法,其特征在于步骤

5)具体步骤包括:

51)Socket作为应用层与底层网络通信的插口层,屏蔽底层的通信细节,提供统一的 调用接口,首先应用通过源节点集合和目的节点调用cnp协议协议,系统生成一个会话特征码sid,作为这次会话的ID,然后调用CNSTP协议,构造编码网络所需的编码网络生成树;在上述生成树构造完毕之后,调用STP协议,做编码网络的数据传输;通信结束之后收回生成树中的sid,供下次利用,并断开连接;

52)实现Socket与CNP/CTP协议族软件模块的连接。

说明书 :

一种面向数据中心的编码网络系统及其工作方法

技术领域

[0001] 本发明涉及数据中心(Data Center)网络系统,在目的节点所需信息是多个源节点上信息的某种编码形式的应用场景下,通过同步各个源节点和中间路由,组建一个编码网络系统,使得编码报文能够在中间路由进行编码,以降低数据中心网络的负载,增加网络资源利用率。编码网络系统由多个网络协议组成的CNP/CTP协议族和若干个软件模块组成,编码网络能够在编码传输的应用场景下,通过报文寻路找到最小代价的编码树,并在上层的编码传输协议的控制下进行编码传输。

背景技术

[0002] 随着云计算相关技术的迅猛发展,数据中心作为云计算的后台,提供高可靠的、高效的云计算服务。目前的研究表明,数据中心的网络资源已经很大程度上成为了数据中心运算效率的瓶颈,另一方面,网络编码(Network Coding)在理论上强大的优势在实际的应用中还未得到广泛的发挥,因此,本发明结合网络编码技术,在数据中心的编码传输应用场景下,通过软件协议族的模式组建一个编码网络,提供高效的编码网络通信,提高网络资源利用率,降低数据中心的网络负载。

发明内容

[0003] 本发明所要解决的技术问题是在数据中心中提供一系列网络协议族构建一个编码网络系统,该网络系统支持多个源节点与单个目的节点组建一个编码网络系统,并在这个编码网络系统中提供编码传输服务和缓存管理工作。此外,本发明还提供了该系统的工作方法。
[0004] 本发明所述的面向数据中心的编码网络系统,主要由数据中心中的多台数据服务器、连接这些数据服务器的编码路由器及数据链路,以编码路由器和数据服务器作为通信节点,其特征在于,在每个通信节点上都构建有:
[0005] TCP/IP协议栈模块:用来作为数据中心普通应用程序的网络协议支持;
[0006] 编码网络协议模块:使编码网络协议平行于IP协议,基于网络编码技术在数据中心中提供数据报文的编码传输;
[0007] 编码网络生成树协议模块:为每一个通信特征码标识的编码数据通信构建一个逆向多播树,以支持编码传输协议;
[0008] 编码传输协议模块:对于每个通信特征码标识的编码数据通信,根据编码网络生成树协议所生成的逆向多播树,同步各个叶子节点和中间编码路由器,使得数据由叶子节点同步的传输到根节点,并在中间过程的交汇点做编码操作;
[0009] 编码缓存管理模块:对于每个逆向多播树的交汇节点,为每一个通信特征码管理通信节点的缓存,完成编码同步和内存的申请释放;
[0010] Socket复用模块:将编码传输协议注册到Socket通信列表中,使得上层的应用程序能够调用该协议做编码传输,编码传输首先调用编码网络生成树协议,生成一个逆向多播树,并在各个交汇节点做记录,之后再同步启动编码传输协议。
[0011] 此外,本发明此还提供了所述的面向数据中心的编码网络系统的工作方法,具体包括以下步骤:
[0012] 1)编码网络协议的实现及其向数据链路层的注册,其具体步骤包括:
[0013] 11)实现编码接收函数cnp_rcv(),编码接收函数在接受到数据报文后,通过本地的通信特征码集,来确定对该数据报文的缓存操作操作还是转发操作等,通信特征码集由CNSTP协议维护。
[0014] 111)编码网络协议对转发到数据报文直接调用cnp_output()函数,该函数根据情况将数据报文转发到下一个通信节点或者转交到上层的编码网络生成树协议、编码传输协议等。
[0015] 112)编码网络协议对需要编码的数据报文调用cnp_code()函数,该函数将数据报文缓存到编码缓存管理模块分配的内存中,如果缓存中有需要编码的数据报文,则将两个数据报文进行编码之后存储并更新编码报文个数,在达到该节点所需编码的报文个数之后,则标志着本通信节点的编码任务完成,然后再对编码报文调用cnp_output()函数将之发送出去。
[0016] 12)实现CNP协议的的cnp_output()函数的插口结构,供上层的CNSTP和CTP协议等调用CNP协议注册时使用。
[0017] 13)将实现好的CNP接收函数cnp_rcv()及选择好的类型协议码等组建成一个packet_type类型变量,然后调用dev_add_pack()函数注册到底层的数据链路层中。
[0018] 14)实现CNP的数据报文发送函数cnp_queue_xmit(),该函数首先添加CNP协议的报文头部,之后调用数据链路层的dev_queue_xmit()函数将数据报文发送到数据链路层。
[0019] 2)编码网络生成树协议的实现与向编码网络协议的注册,其具体步骤包括:
[0020] 21)该协议通过源节点广播——最小代价选择算法选择最小代价的逆向多播路径,具体实现如下:
[0021] 211)每个源节点对当前节点向目的节点和所有兄弟节点集的下一跳端口发送一个cnstp多播报文,报文中包含通信特征码(sid)、路径码(rid)、目的地址(destination)和兄弟节点地址集(brothers)、当前通信代价(以报文数×条数为标度)等信息。
[0022] 212)每个通信节点在收到cnstp多播报文之后,更新报文中的当前通信代价,并对目的节点和兄弟节点集中的每个节点进行下一跳寻径。
[0023] 2121)对于所有的寻径的下一跳都一致的情况,该通信节点将该cnstp报文转发到下一跳节点。
[0024] 2122)对于所有的寻径不一致的情况下,该通信节点将此cnstp报文(主要是通信代价和源节点)直接单播发送到目的节点,并生成一个新的cnstp报文进行多播,兄弟节点集为下一跳与目的节点属于同一个端口的所有通信节点。
[0025] 213)通信节点收到已缓存的通信特征码、路径码标志着多播回路的产生,此时,算法会及时的进行多播剪枝,以避免洪泛。
[0026] 214)目的节点在收到所有源节点的通信代价信息之后,对这些信息进行汇总,找出一个代价最小的逆向多播树。对于多棵逆向多播树有相同的最小代价时,路径选择则由上层应用层决定,随机选择一棵生成树或者可将多棵生成树协同地利用,以均衡系统的运行压力。
[0027] 215)将上述步骤生成的逆向多播树链路发送至每个源节点,在每个通信节点上标识(sid, nextport)通信对,以供CTP等协议的使用。
[0028] 216)回收该算法中的内存等资源。
[0029] 22)在CNP协议中的插口结构中注册CNSTP协议,将实现好的cnstp接收函数cnstp_rcv()及选择好的协议类型码注册到cnp的插口结构中。
[0030] 23)在该协议中实现数据发送操作函数cnstp_xmit()函数,通过添加cnp协议报文头部之后调用cnp_xmit()函数转交给cnp处理。
[0031] 3)编码传输协议的实现与向编码网络协议的注册,其具体步骤包括:
[0032] 31)编码传输协议采用类似与传输控制协议(TCP)的面向连接型的传输模式。每个通信源节点维护一个滑动窗口,对超时未确认的数据报文进行重传。
[0033] 311)cnstp协议中的源节点广播——最小代价选择算法作为编码网络连接建立的过程,多个源节点和一个目的节点共同参与。
[0034] 312)实现CTP协议的报文接收函数ctp_rcv(),其中滑动窗口机制与编码缓存管理模块协同工作,目的节点每接收到一个数据报文并校验通过,就通过多播树多播出一个ack报文,源节点在收到每一个ack报文将滑动窗口前移,以便发送更多的数据报文。
[0035] 32)编码传输协议将接收到的数据报文根据端口号等信息转交到上层的应用层。
[0036] 33)在CNP协议中的插口结构中注册CTP协议,将实现好的ctp接收函数ctp_rcv()及选择好的协议类型码注册到cnp的插口结构中。
[0037] 34)在该协议中实现数据发送操作函数ctp_xmit()函数,通过添加cnp协议报文头部之后调用cnp_xmit()函数转交给cnp的发送函数处理。
[0038] 4)编码缓存管理模块的实现,其具体步骤包括:
[0039] 41)通信源节点和通信编码节点都需要一个报文缓存区,以缓存等待网络传输或者等待编码的数据报文。
[0040] 411)源节点中的缓存区表现为滑动窗口,根据网络通信和编码情况扩大或者收缩窗口的大小,主要由CTP控制。
[0041] 412)编码节点中的缓存区表现为缓存资源池,编码网络系统对每个会话(session)在每个编码节点维护一个编码等待区,用来放置先来到的数据报文,等待其兄弟节点的数据报文以便编码。
[0042] 42)滑动窗口采用类似于TCP协议中的慢启算法。算法每次收到确认报文时都会增大接收窗口,增加的大小就是已确认报文的数目。这种情况一直保持到没有收到一些段或者窗口大小到达预先定义的阈值。如果发生丢失事件,算法就认为这是编码拥塞或者传输阻塞,就会采取措施减轻这种拥塞。一旦发生丢失事件或者到达阈值,算法就会进入线性增长阶段。
[0043] 43)缓存资源池采用固定上限的缓存模式,在达到最大缓存的x倍时(推荐x取值在0.7~0.9之间),向上游的源节点发送源抑制报文,源节点收到该报文则将滑动窗口的大小降至为1,以避免缓存溢出造成的报文丢失。
[0044] 5)Socket复用,其具体步骤包括:
[0045] 51)Socket作为应用层与底层网络通信的插口层,屏蔽底层的通信细节,提供统一的 调用接口。具体在CNP/CTP协议族中,起到流程集成的作用:
[0046] 511)首先应用通过源节点集合和目的节点调用cnp协议协议,系统生成一个会话特征码sid,作为这次会话的ID。
[0047] 512)然后调用CNSTP协议,构造编码网络所需的编码网络生成树。
[0048] 513)在上述生成树构造完毕之后,调用STP协议,做编码网络的数据传输。
[0049] 514)通信结束之后收回生成树中的sid,供下次利用,并断开连接。
[0050] 52)实现Socket与CNP/CTP协议族软件模块的连接。
[0051] 本发明基于Linux内核和网络编码技术,通过构建并实现的一系列网络协议族,可以在数据中心中构建一个编码网络系统,在编码传输的应用场景下,通过网络编码生成树协议生成一个编码网络生成树,并通过编码传输协议在该生成树上做编码传输。上述编码网络系统为火速据中心中的数据节点提供了一种新的通信模式,可以很大程度上提高网络资源的利用率,降低网络的负载。

附图说明

[0052] 图1编码网络协议族层次结构图,
[0053] 图2系统场景结构图,
[0054] 图3 源节点广播——最小代价选择算法流程图,
[0055] 图4 CNP接收函数处理流程图。

具体实施方式

[0056] 下面结合附图对本发明进行详细说明。
[0057] 图1是编码网络协议族的层次结构图,编码网络协议(CNP)是平行与IP协议的网络层协议,编码网络协议通过dev_add_packet()函数将自己注册到数据链路层,并实现cnp_xmit()进行数据报文的发送。编码接收函数在接受到数据报文后,通过本地的通信特征码集,来确定对该数据报文的缓存操作操作还是转发操作等,通信特征码集由CNSTP协议维护。编码网络生成树协议(CNSTP)运行在编码网络协议上,通过源节点广播——最小代价选择算法为编码网络协议提供编码生成树。上层的编码传输协议(CTP)负责端到端的编码传输。位于最上层的编码Socket和编码应用程序首先调用CNSTP计算编码生成树,并在CTP的控制下进行编码传输。
[0058] 图2是系统的场景图,编码网络系统是由数据中心中的多个数据服务器和连接这些服务器的网络设备构成,每个通信节点(包括服务器和路由器)都运行着本发明的所设计的编码网络协议族,当系统运行时,可以为应用层程序提供编码网络传输,具体来说,当目的节点所需数据是多个源节点中数据的编码形式,那么,系统可以在各个源节点发往目的节点的中间路由上发现编码机会,同步各个源节点的数据报文发送并负责在中间通信节点上进行编码,之后再将编码后的数据再交给应用层。相对于将各个数据报文发送到目的节点之后再进行编码,大大节省了传输对网络资源的占用。
[0059] 图3是网络编码生成树的源节点广播——最小代价选择算法流程图,每个源节点对当前节点向目的节点和所有兄弟节点集的下一跳端口发送一个cnstp多播报文,报文中包含通信特征码(sid)、路径码(rid)、目的地址(destination)和兄弟节点地址集(brothers)、当前通信代价(以报文数×条数为标度)等信息。每个通信节点在收到cnstp多播报文之后,首先进行重复路径的剪枝,更新报文中的当前通信代价,并对目的节点和兄弟节点集中的每个节点进行下一跳寻径。对于所有的寻径的下一跳都一致的情况,该通信节点将该cnstp报文转发到下一跳节点。对于所有的寻径不一致的情况下,该通信节点将此cnstp报文(主要是通信代价和源节点)直接单播发送到目的节点,并生成一个新的cnstp报文进行多播,兄弟节点集为下一跳与目的节点属于同一个端口的所有通信节点。目的节点在收到所有源节点的通信代价信息之后,对这些信息进行汇总,找出一个代价最小的逆向多播树。对于多棵逆向多播树有相同的最小代价时,路径选择则由上层应用层决定,随机选择一棵生成树或者可将多棵生成树协同地利用,以均衡系统的运行压力。
[0060] 图4是CNP接收函数cnp_rcv()的处理流程,编码接收函数在接受到数据报文后,通过本地的通信特征码集,来确定对该数据报文进行缓存操作还是转发操作等,通信特征码集由CNSTP协议维护。编码网络协议对转发到数据报文直接调用cnp_output()函数,该函数根据情况将数据报文转发到下一个通信节点或者转交到上层的编码网络生成树协议、编码传输协议等。编码网络协议对需要编码的数据报文调用cnp_code()函数,该函数将数据报文缓存到编码缓存管理模块分配的内存中,如果缓存中有需要编码的数据报文,则将两个数据报文进行编码之后存储并更新编码报文个数,在达到该节点所需编码的报文个数之后,则标志着本通信节点的编码任务完成,然后再对编码报文调用cnp_output()函数将之发送出去。
[0061] 本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。