CN107196860A - Sdn网络中网络编码进行组播传输的方法 - Google Patents
Sdn网络中网络编码进行组播传输的方法 Download PDFInfo
- Publication number
- CN107196860A CN107196860A CN201710368670.2A CN201710368670A CN107196860A CN 107196860 A CN107196860 A CN 107196860A CN 201710368670 A CN201710368670 A CN 201710368670A CN 107196860 A CN107196860 A CN 107196860A
- Authority
- CN
- China
- Prior art keywords
- action
- data
- multicast
- sdn
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000005540 biological transmission Effects 0.000 title claims abstract description 29
- 238000012546 transfer Methods 0.000 claims abstract description 9
- 230000009471 action Effects 0.000 claims description 99
- 230000008569 process Effects 0.000 claims description 21
- 238000012360 testing method Methods 0.000 claims description 5
- 238000013499 data model Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 4
- 230000008520 organization Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 9
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000011161 development Methods 0.000 abstract description 4
- 230000000875 corresponding effect Effects 0.000 description 25
- 238000007726 management method Methods 0.000 description 18
- 239000012141 concentrate Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0009—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种SDN网络中的网络编码组播的传播方法。其中Openvswitch交换机具有支持网络编码的OpenFlow协议,所述Openvswitch交换机为支持所述OpenFlow协议并且可编码、解码的交换机。SDN网络其核心技术OpenFlow协议把网络设备的数、控层相分离,控制层提供业务实现和逻辑控制,数据层执行数据转发,从而实现对网络的灵活控制和智能管理,方便拓展。网络编码是网络中信息的处理和传输上的重大突破,它允许网络中间节点对所传输的信息进行编码处理,并在接收节点进行解码还原,提高了网络吞吐量、数据传输的可靠性和安全性。本发明有效地将网络编码应用于SDN网络中,克服了现有技术中无法将网络编码应用与SDN网络有机结合的问题,结合上述两者的优势,对未来网络发展有着重要的研究价值。
Description
技术领域
本发明涉及计算机网络技术领域,具体涉及一种SDN网络中网络编码组播的传播方法。
背景技术
SDN是一种新型的网络体系架构,其核心技术OpenFlow协议把网络设备的数、控层相分离,控制层提供业务实现和逻辑控制,数据层执行数据转发,从而实现对网络的灵活控制和智能管理,方便拓展。
网络编码是网络中信息的处理和传输上的重大突破,它允许网络中间节点对所传输的信息进行编码处理,并在接收节点进行解码还原,提高了网络吞吐量、数据传输的可靠性和安全性。
若将网络编码应用于SDN网络中,结合两者的优势,对未来网络发展有着重要的研究价值。但鉴于SDN网络数、控分离的特性,几乎所有的业务逻辑扩展都集中在控制层,而网络编码的基本思想又要求底层的中间节点设备参与数据的编、解码过程,这种矛盾性造成了SDN和网络编码的结合研究很少,几乎找不到一套完整的实现方案。为了解决上述技术问题,目前亟需一种SDN网络中的网络编码进行组播传输的方法。
发明内容
本发明的主要目的在于提供一种SDN网络中网络编码进行组播传输的方法,以解决现有技术中网络编码应用与SDN网络无法有机结合的问题。
为了实现上述目的,本发明提供了一种SDN网络中网络编码进行组播传输的方法:
SDN网络中网络编码进行组播传输的方法,本发明的步骤如下:
a、控制器构建全局拓扑信息;
b、组播接收端成员入组;
c、组播发送端发送组播流;
d、控制器计算路由路径、下发流表项;
e、Openvswitch交换机源发送节点初次编码原始组播数据;
f、Openvswitch交换机中间编码节点再次编码中间数据;
g、Openvswitch交换机目的解码节点解码还原数据;
其中,所述Openvswitch交换机具有支持网络编码的OpenFlow协议,所述控制器为支持OpenFlow协议的控制器,所述Openvswitch交换机为支持所述OpenFlow协议并且可编码、解码的交换机。SDN网络其核心技术OpenFlow协议把网络设备的数、控层相分离,控制层提供业务实现和逻辑控制,数据层执行数据转发,从而实现对网络的灵活控制和智能管理,方便拓展。网络编码是网络中信息的处理和传输上的重大突破,它允许网络中间节点对所传输的信息进行编码处理,并在接收节点进行解码还原,提高了网络吞吐量、数据传输的可靠性和安全性。本发明有效地将网络编码应用于SDN网络中,克服了现有技术中无法将网络编码应用与SDN网络有机结合的问题,结合上述两者的优势,对未来网络发展有着重要的研究价值。
进一步地,所述OpenFlow协议中设有支持网络编码的NC Action,该NC Action可以和其他Action组合成一个行动集,装载到所述流表项中,每次匹配到该流表项时,都执行该行动集。
进一步地,控制器提供可以使用的NC Action对象
进一步地,Openvswitch交换机具有NC Action并且具有可编码、解码的模块,所述NC Action由控制器主动发往所述Openvswitch交换机,包含在下发流表项的指令集中,当数据包匹配到该流表项时,便执行对应的网络编码、解码动作。
进一步地,所述Openvswitch交换机在进行编码、解码过程中,采用统一的数据模型,所述数据模型包括节点名、编码ID标号、数据包缓存队列和待处理数据包缓存队列。
进一步地,所述Openvswitch交换机在进行编码、解码过程中,采用自定义数据包格式来统一组织数据,自定义数据包格式包括编码ID标号、包号、已编码数据长度、随机系数列表和已编码的有效数据。
进一步地,控制器计算路由路径、下发流表项的步骤为:
a、开始;
b、组播源发送组播流;
c、判断Packetin消息类型,若消息类型为udp组播,则判断目的组播组是否存在,若目的组播组存在,则根据拓扑、组成员信息计算最大流,获取路由路径,根据路由路径确定每个节点的节点类型,将生成NC Action和流表下发到对应的Openvswitch交换机上,之后结束,若目的组播组不存在则直接结束;若消息类型为非udp组播则直接结束。
进一步地,所述NC Action的字段属性包括交换机的中间节点设备类型以及当前网络拓扑下组播源到组播目的节点集的网络最大流。
进一步地,中间节点设备的类型包括源发送端编码节点、中间发送端编码节点、普通的中间转发节点、接收端解码节点、不在组播路由路径中且不参与数据传输的节点。
进一步地,有两个前置条件,第一前置条件为测试用组播均为单源多目的组播,第二前置条件为拓扑中的每条链路其流量均相等,都设为1个单位。
其中在所述OpenFlow协议中设定Action时,在控制器中定义常量,在控制器中定义Action的实现类。所述控制器包括主机管理模块、拓扑管理模块、组播管理模块、路由管理模块,上述各模块的工作模式为消息驱动模式。
所述控制器构建全局拓扑信息的步骤如下:
a、开始;
b、创建交换机表、链路表;
c、判断接收消息的类型;
d、若接收到的消息为eventswitchenter消息,则将该交换机信息保存入交换机表;
e、若接收到的消息为eventlinkadd消息,则记录链路两端的交换机ID、端口号,之后构件链路信息至链路表;由此将表构建完毕;
f、读取外部配置文件,更新上述构件完毕的表中的配置信息;
g、发送拓扑初始化完成消息,附加拓扑数据。
进一步地,所述组播接收端成员入组步骤如下:
a、开始;
b、组播接收端请求入组;
c、收到PacketIn消息;
d、调用组播管理的处理接口;
e、判断请求的组播组是否存在,若组播组不存在则创建组播组之后组成员入组;若组播组存在则直接组成员入组;
f、生成请求入组应答并回复;
g、发送组成员更改消息,更新组成员信息。
可见,本发明与现有技术相比,本发明有效地将网络编码应用于SDN网络中,克服了现有技术中无法将网络编码应用与SDN网络有机结合的问题,结合上述两者的优势,对未来网络发展有着重要的研究价值。
附图说明
构成本发明的一部分的附图用来辅助对本发明的理解,附图中所提供的内容及其在本发明中有关的说明可用于解释本发明,但不构成对本发明的不当限定。在附图中:
图1为Ryu控制器构建全局拓扑信息的流程图。
图2为所述组播接收端成员入组的流程图。
图3为Ryu控制器计算路由路径、下发流表项的流程图。
图4为数据包在Openvswitch的用户态进程中的处理流程图。
图5为数据包格式示意图。
图6为交换机节点的结构模型示意图。
图7为源发送节点编码流程图。
图8为中间编码节点编码流程图。
具体实施方式
下面结合附图对本发明进行清楚、完整的说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。在结合附图对本发明进行说明前,需要特别指出的是:
(1)本发明中在包括下述说明在内的各部分中所提供的技术方案和技术特征,在不冲突的情况下,这些技术方案和技术特征可以相互组合。
(2)下述说明中涉及到的本发明的实施例通常仅是本发明一分部的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
(3)关于对本发明中术语的说明。本发明的说明书和权利要求书及有关的部分中的术语“第一”、“第二”等是用于区别容易引起混同的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。其中术语“SDN”是指软件定义网络;术语“Openvswitch交换机”是指开放虚拟交换标准交换机;术语OpenFlow协议是指用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准,协议的核心部分是用于OpenFlow协议信息结构的集合;术语“IGMP”是指Internet组管理协议,提供internet网际多点传送的功能,即将一个ip包拷贝给多个host,windows系列采用了这个协议;术语“udp”是指用户数据报协议;术语“Ryu控制器”是日本NTT公司研发的一款开源SDN控制器。
本发明SDN网络中网络编码进行组播传输的方法,其步骤如下:
a、控制器构建全局网络拓扑信息;
b、组播接收端成员入组;
c、组播发送端发送组播流;
d、控制器计算路由路径、下发流表项;
e、Openvswitch交换机源发送节点初次编码原始组播数据;
f、Openvswitch交换机中间编码节点再次编码中间数据;
g、Openvswitch交换机目的解码节点解码还原数据;
其中,所述Openvswitch交换机具有支持网络编码的OpenFlow协议,所述控制器为支持OpenFlow协议的控制器,所述Openvswitch交换机为支持所述OpenFlow协议并且可编码、解码的交换机。
所述OpenFlow协议中设有支持网络编码的NC Action,该NC Action可以和其他Action组合成一个行动集,装载到所述流表项中,每次匹配到该流表项时,都执行该行动集。
控制器提供可以使用的NC Action对象。
Openvswitch交换机具有NC Action并且具有可编码、解码的模块,所述NC Action由控制器主动发往所述Openvswitch交换机,包含在下发流表项的指令集中,当数据包匹配到该流表项时,便执行对应的网络编码、解码动作。
所述Openvswitch交换机在进行编码、解码过程中,采用统一的数据模型,所述数据模型包括节点名、编码ID标号、数据包缓存队列和待处理数据包缓存队列。
所述Openvswitch交换机在进行编码、解码过程中,采用自定义数据包格式来统一组织数据,自定义数据包格式包括编码ID标号、包号、已编码数据长度、随机系数列表和已编码的有效数据。
控制器计算路由路径、下发流表项的步骤为:
a、开始;
b、组播源发送组播流;
c、判断Packetin消息类型,若消息类型为udp组播,则判断目的组播组是否存在,若目的组播组存在,则根据拓扑、组成员信息计算最大流,获取路由路径,根据路由路径确定每个节点的节点类型,将生成NC Action和流表下发到对应的Openvswitch交换机上,之后结束,若目的组播组不存在则直接结束;若消息类型为非udp组播则直接结束。
所述NC Action的字段属性包括交换机的中间节点设备类型以及当前网络拓扑下组播源到组播目的节点集的网络最大流。
中间节点设备的类型包括源发送端编码节点、中间发送端编码节点、普通的中间转发节点、接收端解码节点、不在组播路由路径中且不参与数据传输的节点。
测试用所述组播均为单源多目的组播,拓扑中的每条链路其流量均相等,都设为1个单位。
在本实施例中OpenFlow协议中的NC Action”即为network coding Action,从属于controller-to-switch消息类型,由控制器主动发往交换机,包含在下发流表项的指令集中,当数据包匹配到该流表项时,便执行对应的网络编码、解码动作。本实施例中的控制器采用Ryu控制器,所述Ryu控制器为日本NTT公司研发的一款开源SDN控制器。
上述NC Action中带有2个字段属性:nc_type和nc_max_flow,具体如下:
(1)nc_type:表明接收该NC Action的交换机在整个组播路由路径中是哪种类型的中间节点设备,该路径不是传统的组播树路由路径,而是使用网络编码传输的路由路径。共有5种类型:
1)NC_SRC_ENCODE:源发送端编码节点,即与组播源直接相连的交换机,对组播流原始数据进行编码操作,将编码后的数据打包发送到指定出口。
2)NC_MIDDLE_ENCODE:中间发送端编码节点,按一定的策略对接收的数据包再次进行编码操作,将编码后的数据发送到指定出口。
3)NC_MIDDLE_DISPATCH:普通的中间转发节点,既不编码、也不解码,仅按照流表规则转发数据包。
4)NC_END_DECODE:接收端解码节点,即与组播接收端直接相连的交换机,按一定策略对接收到的编码后数据包进行联合解码,还原出组播流原始数据,再发送给指定的接收端。
5)NC_USELESS:不在组播路由路径中且不参与数据传输的节点,表明该交换机不在组播路由路径中,不参与数据传输。
(2)nc_max_flow:表示当前网络拓扑下,组播源到组播目的节点集的网络最大流。为了简化实现,有两个前置条件,一是测试用组播均为单源多目的组播,二是拓扑中的每条链路其流量均相等,都设为1个单位。通过Edmonds-Karp算法来计算最大流,同时得到组播信源到信宿集的增广路径集,该增广路径集即为整个组播的路由路径。最大流涉及到网络编码、解码的方方面面,如解码时,最大流的值即为一次解码过程所需的数据包个数。关于nc_max_flow,后面有相应的说明。
上述NC Action可以和其他Action组合成一个行动集,装载到一个流表项中,每次匹配到该流表项时,都执行该行动集。行动集中NC Action的执行顺序为:Output Action之前,其他所有Action之后。
图3为Ryu控制器计算路由路径、下发流表项的流程图。如图3所示,Ryu控制器计算路由路径、下发流表项的步骤为:
a、开始;
b、组播源发送组播流;
c、判断Packetin消息类型,若消息类型为udp组播,则判断目的组播组是否存在,若目的组播组存在,则根据拓扑、组成员信息计算最大流,获取路由路径,根据路由路径确定每个节点的节点类型,生成Action和流表,下发到对应的交换机上,之后结束,若目的组播组不存在则直接结束;若消息类型为非udp组播则直接结束。
在所述OpenFlow协议中设定Action时,在Ryu控制器中定义常量,在Ryu控制器中定义Action的实现类。
所述Ryu控制器包括主机管理模块、拓扑管理模块、组播管理模块、路由管理模块,上述各模块的工作模式为消息驱动模式。
本实例中采用了python编写的Ryu控制器,为了实现网络编码组播传输,在控制层的管理调度上拓展了多个业务模块:
主机管理模块:管理、监控网络中的主机,记录下各主机的IP、MAC等信息,对其他模块提供数据。
拓扑管理模块:管理、监控网络中的交换机、链路、端口等,记录下各交换机ID、链路、邻接端口号等信息,组成一张全局拓扑图,给其他模块提供数据。
组播管理模块:基于IGMP协议,管理网络中的组播组,包括添加组播组、添加组成员、删除组成员、轮询组成员等,维护一张组成员表,记录与组成员直连交换机的ID、端口号等信息。
路由管理模块:根据全局拓扑信息和组成员信息,计算组播信源到信宿集的路由路径、网络最大流,生成含有NC Action的流表项,下发流表到各交换机上。
上述各模块的工作模式为消息驱动,是一个异步过程,即接收到交换机发来的消息、或接收到Ryu控制器内部其他模块发来的消息才进行相应的业务处理。
挑选其中最主要的3个业务过程做详细说明:初始化时全局拓扑信息的构建、组播组成员的添加、路由路径的计算及流表的生成和下发。
图1为Ryu控制器构建全局拓扑信息的流程图。如图1所示,所述Ryu控制器构建全局拓扑信息的步骤如下:
a、开始;
b、创建交换机表、链路表;
c、判断接收消息的类型;
d、若接收到的消息为eventswitchenter消息,则将该交换机信息保存入交换机表;
e、若接收到的消息为eventlinkadd消息,则记录链路两端的交换机ID、端口号,之后构件链路信息至链路表;由此将表构建完毕;
f、读取外部配置文件,更新上述构件完毕的表中的配置信息;
g、发送拓扑初始化完成消息,附加拓扑数据。
图2为所述组播接收端成员入组的流程图。如图2所示,所述组播接收端成员入组步骤如下:
a、开始;
b、组播接收端请求入组;
c、收到PacketIn消息;
d、调用组播管理的处理接口;
e、判断请求的组播组是否存在,若组播组不存在则创建组播组之后组成员入组;若组播组存在则直接组成员入组;
f、生成请求入组应答并回复;
g、发送组成员更改消息,更新组成员信息。
现有技术中的OpenFlow原始协议中没有NC Action,Ryu系统组件中不存在该Action类,本发明通过自行扩张实现了在OpenFlow原始协议设置NC Action,想要实现,必须自行扩展。自行扩展方法如下:
(1)在Ryu目录中的ofproto/ofproto_v1_3.py文件中定义2个常量:
1)OFPAT_NC=28,该常量代表NC Action的枚举标识,必须与Openvswitch中定义的NC Action标识相等。
2)OFP_ACTION_NC_SIZE=16,该常量表示NC Action的数据长度(字节为单位)。
(2)在Ryu目录中的ofproto/ofproto_v1_3_parser.py文件中定义NC Action的实现类:
1)该类必须继承自Ryu提供的OpenFlow中所有Action的基类”OFPAction”,示例如下:
class OFPActionNC(OFPAction)
2)该类必须用Ryu指定的装饰器结合步骤1中定义的常量进行修饰,示例如下:
@OFPAction.register_action_type(OFPAT_NC,OFP_ACTION_NC_SIZE)
class OFPActionNC(OFPAction)
3)该类必须实现3个接口:
__init__():用于初始化
parser():用于从数据流中解析出NC Action
serialize():用于把NC Action打包到数据流中
以下对Openvswitch交换机作进一步说明:
本实例中所使用的不仅在Openvswitch源码上扩展了新的NC Action,还扩展了网络编码的编码、解码功能。网络编码采用随机网络编码,随机系数的取值范围为8位有限域(0~255),其解码成功率在97%左右。在Openvswitch中扩展新的Action比较繁琐,以下是主要步骤:
在Openvswitch目录中的include/OpenFlow/OpenFlow-1.3.h文件中,找到OpenFlow-1.3
协议的Action枚举定义,添加NC Action的枚举定义值,注,该值必须与Ryu控制器中定义的NC Action枚举标识一致
在include/OpenFlow/OpenFlow-1.3.h文件中,添加NC Action对应的结构体定义,说明NC Action包含的字段属性。
在lib/ofp-util.def文件中,在”#ifndef OFPAT11_ACTION”区域中,添加NCAction对应的宏定义。
在lib/ofp-actions.c文件中,在”union ofp_action”定义中,声明NC Action对应的结构体变量(即2中定义的结构体)。
在lib/ofp-actions.h文件中,添加NC Action对应的抽象Action宏定义。
在lib/ofp-actions.h文件中,添加NC Action对应的抽象Action结构体定义。
在lib/ofp-actions.c文件中,在接口”ofpact_from_OpenFlow11()”中,添加NCAction对应的case分支,生成其对应的抽象Action。
在lib/ofp-actions.c文件中,在接口”ovs_instruction_type_from_ofpact_type()”和接口”ofpact_check__()”中,添加NC Action对应的case分支,返回检测结果为真。
在lib/ofp-actions.c文件中,在接口”ofpact_is_allowed_in_actions_set()”中,添加NC Action对应的case分支,表明NC Action支持填充到行动集中。
在lib/ofp-actions.c文件中,在接口”ofpacts_execute_action_set()”中,添加NC Action对应的语句,指定NC Action在行动集中的执行顺序。
在ofproto/ofproto-dpif-xlate.c文件中,在接口”do_xlate_actions()”中,添加NC Action对应的case分支,执行相应的操作。
本实施例中数据包格式如下:
在目的节点对数据进行解码还原前,数据在各节点间的中转均按照一定格式打包、解包,以保证编、解码的一致性。由于组播数据流均为udp数据包,这里所说的数据包格式指的是udp层上的数据格式,并不包含udp的底4层。图5是数据包格式示意图,如图5所示所述数据包包括:
encode_id:编、解码过程ID标识,4字节长,只有相同encode_id的数据包才能执行对应的编码、解码操作,从信源至所有信宿节点,原始组播数据完成1次整体性的编码、解码操作,encode_id自增1。所有中间节点上的encode_id初始均为0。
pkt_id:数据包唯一ID标识,4个字节长,每生成1个数据包,pkt_id自增1,pkt_id初始值为0。
encoded_data_len:已编码数据的长度,2个字节长,表示后面”encoded data”的大小。
coeffs_list:随机系数列表,表示当前节点编码时选取的随机系数,每个随机系数均是1字节无符号数,取值范围为0~255,网络最大流为多少单位,就有多少个随机系数,所以该字段的长度为最大流的值。
encoded data:已编码的有效数据,长度为”encoded_data_len”。
本发明编码、解码过程的实现过程如下:
Openvswitch分为用户态和内核态程序,通过两部分的协作实现高效虚拟交换功能。用户态程序是一个进程,运行在user-space;内核态程序是一个内核模块,运行在kernel-space。为了简化实现和保证稳定性,编、解码功能添加到用户态源码中。
编、解码带来的问题和解决方法如下:
在Openvswitch用户态源码中添加编、解码功能时,有3个问题:
1)OpenFlow原始协议中的Action几乎不会对数据包中的有效数据(网络层或传输层上的负载数据)做更改,一般仅更新流表或转发数据包,这造成了Openvswitch在执行Action时并不把原始数据包传递过去,而是仅作状态的更新。
2)若数据包被传递到Openvswitch的用户态进程处理,在执行完相应的Action后,它会把缺失的流表项安装到内核态模块中,下次再匹配到相似流表项的数据包便会在Openvswitch的内核模块中被处理,不会上传到用户态进程中。
3)若某个流表项的行动集中含有多个Output Action,即匹配到该流表项的数据包会从交换机的多个端口转发出去,但随机网络编码的源发送端编码节点在对原始数据进行编码后,需要把不同编码层次的数据包从不同端口转发出去,而不是行动集中的每个端口都转发一次。
图4为数据包在Openvswitch的用户态进程中的处理流程图。如图4所示,下面对数据包在Openvswitch的用户态进程中的处理过程做一个简要说明:
开始;
读取内核模块发来的数据包;
如果读取不成功重新读取;
如果读取成功从数据包中依次提取未知流表项;
与用户态中已经存在的流表进行对比;
判断是否匹配,如果匹配执行对应的Action;如果不匹配,将不匹配的流表项添加到用户态流表中,执行新增流表项对应的Action更新流表,把新增流表项安装到内核模块中;
判断是否有output Action,若有,则数据包再同一转发回内核模块中,之后结束;如果没有,直接结束。
根据上述的数据包处理过程和3个问题,提出了以下解决方法:
1)匹配流表项时,有一个“struct xlate_out”类型的传出参数,叫作“xout”,在该参数中添加NC Action的2个字段:nc_type和nc_max_flow。在匹配到或检查到含有NCAction的流表项时,再执行该Action时,把NC Action的nc_type和nc_max_flow通过”xout”传出去,在数据包统一转发回内核模块前进行编码、或解码操作即可。
2)在上述的”xout”传出参数中设置一个标志,名为”bool has_nc”,表示该条流表项是否含有NC Action。执行Action时,若匹配到含有NC Action的流表项,该标志”has_nc”置true。新增流表项安装到内核模块前,先检查该标志”has_nc”,为true则不用安装,否则要安装。
3)对源发送端编码节点的Output Action做特殊处理,一个Output Action只能转发一种编码层次的数据包,即一个端口转发一种编码层次的数据包,下一种不同编码层次的数据包需要从另一个不同的端口转发出去。所谓源编码节点的编码层次,与随机网络编码的理论含义挂钩,等于网络最大流。假如最大流为2个单位,则编码层次为2,表示源编码节点需要对同一份原始数据进行2次编码,这2次编码中采用的随机系数不一样,编码后的数据包也需要从2个不同的端口转发出去。但2次编码使用的”encode_id”相同,同属于一次大的、完整性的编、解码操作。
编、解码交换机节点的内部模型
对于要执行编、解码操作的交换机节点,根据外部NC Action传来的”nc_type”决定是何种编码、解码操作类型,但其内部有一个统一的结构模型,如图6所示:
bridge_name:该交换机节点的名称。
encode_id:每个交换机节点都配有一个encode_id计数器,初始为0,每完成一次整体
性的编码、解码操作,该encode_id自增1。换句话说,该交换机节点内部的数据包,只有与该encode_id相匹配者,才能被编码、或者解码。
pkt_list:该交换机内部的数据包缓存队列,缓存接收到的所有符合条件的数据包。
todo_pkt_list:在一次完整性的编码或解码操作中,缓存将要被编码、或将要被解码的数据包。编、解码完成后,立刻清空该队列,为下一次编、解码做准备。
队列中的数据包模型:
encode_id和pkt_id:
data:有效数据。
data_len:有效数据长度。
如图7为源发送节点编码流程图。其步骤如下:
开始
初始化交换机节点
判断编码层次是否大于最大流,若大于,则更新encode_id,之后结束;若不大于则继续往下进行;
生成编码随机系数;
提取原始数据包udp层上的有效数据;
利用有限域加法、乘法进行编码;
编码后数据重新打包;
新数据包的IP报头、udp报头更新;
执行对应的output Action;
编码层次+1后返回再次判断编码层次是否大于最大流。
如图8为中间编码节点编码流程图。步骤如下:
开始;
初始化交换机节点;
在pkt_list中搜索与encode_id相等的数据包,将其提取到todo_pkt_list;
判断本次传递来的数据包是否与encode_id等价;
若相等,则新的数据包入队todo_pkt_list,判断todo_pkt_list中数据包的个数;若个数等于最大流,则对todo_pkt_list中数据包联合编码,之后清空todo_pkt_list,执行对应的output Action,更新encode_id;若个数不等于最大流,则直接结束。
若不相等,则判断本次传来的数据包encode_id是偏大还是偏小,若偏大,则新数据包入队pkt_list,若偏小,则直接结束。
目的解码节点解码流程,与中间编码节点编码过程几乎相同,区别在于,中间编码节点编码过程中对”todo_pkt_list”中的数据包进行联合编码,而此处需要对”todo_pkt_list”中的数据包进行联合解码,通过构造多项式矩阵,采用高斯消元法来解出原始数据对应的多项式值,再还原成原始二进制数据并按顺序组装好即可,在此不过多赘述。
Claims (10)
1.SDN网络中网络编码进行组播传输的方法,其特征在于,其步骤如下:
a、控制器构建全局网络拓扑信息;
b、组播接收端成员入组;
c、组播发送端发送组播流;
d、控制器计算路由路径、下发流表项;
e、Openvswitch交换机源发送节点初次编码原始组播数据;
f、Openvswitch交换机中间编码节点再次编码中间数据;
g、Openvswitch交换机目的解码节点解码还原数据;
其中,所述Openvswitch交换机具有支持网络编码的OpenFlow协议,所述控制器为支持OpenFlow协议的控制器,所述Openvswitch交换机为支持所述OpenFlow协议并且可编码、解码的交换机。
2.如权利要求1所述的SDN网络中网络编码进行组播传输的方法,其特征在于,所述OpenFlow协议中设有支持网络编码的NC Action,该NC Action可以和其他Action组合成一个行动集,装载到所述流表项中,每次匹配到该流表项时,都执行该行动集。
3.如权利要求2所述的SDN网络中网络编码进行组播传输的方法,其特征在于,控制器提供可以使用的NC Action对象。
4.如权利要求3所述的SDN网络中网络编码进行组播传输的方法,其特征在于,Openvswitch交换机具有NC Action并且具有可编码、解码的模块,所述NC Action由控制器主动发往所述Openvswitch交换机,包含在下发流表项的指令集中,当数据包匹配到该流表项时,便执行对应的网络编码、解码动作。
5.如权利要求4所述的SDN网络中网络编码进行组播传输的方法,其特征在于,所述Openvswitch交换机在进行编码、解码过程中,采用统一的数据模型,所述数据模型包括节点名、编码ID标号、数据包缓存队列和待处理数据包缓存队列。
6.如权利要求4所述的SDN网络中网络编码进行组播传输的方法,其特征在于,所述Openvswitch交换机在进行编码、解码过程中,采用自定义数据包格式来统一组织数据,自定义数据包格式包括编码ID标号、包号、已编码数据长度、随机系数列表和已编码的有效数据。
7.如权利要求4所述的SDN网络中网络编码进行组播传输的方法,其特征在于,控制器计算路由路径、下发流表项的步骤为:
a、开始;
b、组播源发送组播流;
c、判断Packetin消息类型,若消息类型为udp组播,则判断目的组播组是否存在,若目的组播组存在,则根据拓扑、组成员信息计算最大流,获取路由路径,根据路由路径确定每个节点的节点类型,将生成NC Action和流表下发到对应的Openvswitch交换机上,之后结束,若目的组播组不存在则直接结束;若消息类型为非udp组播则直接结束。
8.如权利要求2所述的SDN网络中网络编码进行组播传输的方法,其特征在于,所述NCAction的字段属性包括交换机的中间节点设备类型以及当前网络拓扑下组播源到组播目的节点集的网络最大流。
9.如权利要8所述的SDN网络中网络编码进行组播传输的方法,其特征在于,中间节点设备的类型包括源发送端编码节点、中间发送端编码节点、普通的中间转发节点、接收端解码节点、不在组播路由路径中且不参与数据传输的节点。
10.如权利要求8所述的SDN网络中网络编码进行组播传输的方法,其特征在于,测试用所述组播均为单源多目的组播,拓扑中的每条链路其流量均相等,都设为1个单位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710368670.2A CN107196860B (zh) | 2017-05-23 | 2017-05-23 | Sdn网络中网络编码进行组播传输的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710368670.2A CN107196860B (zh) | 2017-05-23 | 2017-05-23 | Sdn网络中网络编码进行组播传输的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107196860A true CN107196860A (zh) | 2017-09-22 |
CN107196860B CN107196860B (zh) | 2021-06-04 |
Family
ID=59874350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710368670.2A Expired - Fee Related CN107196860B (zh) | 2017-05-23 | 2017-05-23 | Sdn网络中网络编码进行组播传输的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107196860B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108040012A (zh) * | 2017-12-05 | 2018-05-15 | 西南交通大学 | 基于天牛须搜索的sdn网络中多目标组播路由路径构建方法 |
WO2021226948A1 (zh) * | 2020-05-14 | 2021-11-18 | 深圳市欢太科技有限公司 | 基于开放虚拟软交换机ovs的数据包处理方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023615A (zh) * | 2012-12-26 | 2013-04-03 | 华中科技大学 | 一种在OpenFlow交换机上实现网络编码的方法 |
CN103036653A (zh) * | 2012-12-26 | 2013-04-10 | 华中科技大学 | 一种对OpenFlow网络进行网络编码的方法 |
CN103346969A (zh) * | 2013-07-05 | 2013-10-09 | 中国科学院计算机网络信息中心 | 基于OpenFlow实现动态组播生成树路径调整的方法 |
CN106375223A (zh) * | 2016-10-25 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的数据转发系统及方法 |
-
2017
- 2017-05-23 CN CN201710368670.2A patent/CN107196860B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023615A (zh) * | 2012-12-26 | 2013-04-03 | 华中科技大学 | 一种在OpenFlow交换机上实现网络编码的方法 |
CN103036653A (zh) * | 2012-12-26 | 2013-04-10 | 华中科技大学 | 一种对OpenFlow网络进行网络编码的方法 |
CN103346969A (zh) * | 2013-07-05 | 2013-10-09 | 中国科学院计算机网络信息中心 | 基于OpenFlow实现动态组播生成树路径调整的方法 |
CN106375223A (zh) * | 2016-10-25 | 2017-02-01 | 上海斐讯数据通信技术有限公司 | 一种基于sdn的数据转发系统及方法 |
Non-Patent Citations (3)
Title |
---|
SICHENG LIU等: "NCoS: A Framework for Realizing Network Coding Over Software-Defined Network", 《39TH ANNUAL IEEE CONFERENCE ON LOCAL COMPUTER NETWORKS》 * |
董景涛: "基于SDN的网络编码研究与应用", 《中国优秀硕士学位论文全文数据库》 * |
赵文文: "基于网络编码的OpenFlow网络系统的研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108040012A (zh) * | 2017-12-05 | 2018-05-15 | 西南交通大学 | 基于天牛须搜索的sdn网络中多目标组播路由路径构建方法 |
CN108040012B (zh) * | 2017-12-05 | 2020-02-21 | 西南交通大学 | 基于天牛须搜索的sdn网络中多目标组播路由路径构建方法 |
WO2021226948A1 (zh) * | 2020-05-14 | 2021-11-18 | 深圳市欢太科技有限公司 | 基于开放虚拟软交换机ovs的数据包处理方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107196860B (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4688035A (en) | End user data stream syntax | |
US5060228A (en) | Bridge communication system | |
CN1307564C (zh) | 网络交换机和部件及其操作方法 | |
Jensen et al. | Coloured petri nets | |
CN101388844B (zh) | 一种数据流程的处理方法和系统 | |
US5418963A (en) | Protocol encoding/decoding device capable of easily inputting/referring to a desired data value | |
CN111404883A (zh) | 一种物联网设备通用协议的解析方法及装置 | |
JP2000115243A (ja) | パケット中継装置およびマルチキャスト高速化方式 | |
CN111245840B (zh) | 一种区块链间跨链信息传输控制系统 | |
CN104937896A (zh) | 地址解析协议消息的处理方法和转发器、控制器 | |
JPS635646A (ja) | デ−タ・ブロツク経路指定方法 | |
CN101562556A (zh) | 一种降低网络编码代价的方法、装置及系统 | |
CN107196860A (zh) | Sdn网络中网络编码进行组播传输的方法 | |
CN102521356A (zh) | 基于确定有限状态自动机的正则表达式匹配设备和方法 | |
CN110061931A (zh) | 工控协议的聚类方法、装置、系统及计算机存储介质 | |
CN109741211A (zh) | 一种基于fpga的核电厂安全级网络通信系统设计方法 | |
CN111935767B (zh) | 一种网络仿真系统 | |
CN109688071B (zh) | 一种灵活以太网报文转发方法及装置 | |
CN101938420B (zh) | 集群拓扑收集方法及装置 | |
WO1999029069A1 (en) | Network management communication | |
CN107809335A (zh) | 一种网络系统的配置方法及装置 | |
Gouda et al. | On the modelling, analysis and design of protocols-a special class of software structures | |
CN101159633B (zh) | 在计算机上模拟组网环境的单板软件测试方法及系统 | |
CN118282946B (zh) | L2转发表、l2报文转发方法、计算机设备及介质 | |
CN117793172B (zh) | 一种基于消息队列的轻量级数据采集方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210604 |
|
CF01 | Termination of patent right due to non-payment of annual fee |