CN103023615A - 一种在OpenFlow交换机上实现网络编码的方法 - Google Patents
一种在OpenFlow交换机上实现网络编码的方法 Download PDFInfo
- Publication number
- CN103023615A CN103023615A CN2012105725287A CN201210572528A CN103023615A CN 103023615 A CN103023615 A CN 103023615A CN 2012105725287 A CN2012105725287 A CN 2012105725287A CN 201210572528 A CN201210572528 A CN 201210572528A CN 103023615 A CN103023615 A CN 103023615A
- Authority
- CN
- China
- Prior art keywords
- packet
- decoding
- formation
- behavior
- coding
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及网络编码技术领域,公开了一种在OpenFlow交换机上实现网络编码的方法包括:先在OpenFlow交换机的流表项中添加编码行为和/或解码行为;当OpenFlow交换机接收到待处理数据包时,为待处理数据包添加数据包的包头域,数据包的包头域包括编解码所需的信息;再判断待处理数据包的行为集合中是否有编码行为和/或解码行为;若待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列;将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包。本发明实现了在OpenFlow交换机上的编码和/或解码。
Description
技术领域
本发明涉及网络编码技术领域,主要适用于在OpenFlow交换机上实现网络编码的方法。
背景技术
OpenFlow网络,是一种新型的网络创新架构,主要由控制器10和OpenFlow交换机11组成,如图1中所示。OpenFlow交换机11功能专注而简化,只负责数据的转发;控制器10则对整个网络进行集中控制,实现控制层功能。控制器10通过标准的OpenFlow协议12与OpenFlow交换机11进行信息交互,从而进行统一、灵活高效的网络维护和管理。由此可知,OpenFlow网络不仅实现了将原有的完全由交换机/路由器控制的报文转发形式转化为基于流(相同源、目的地址的一系列连续的数据包)的转发形式,而且将传统的控制层面从转发设备中剥离出来,所有转发行为的决策都迁移到了集中控制器上,从而实现了数据转发和路由控制的分离。
由于OpenFlow网络具有集中控制、数据转发层与控制层分离等特点,这让我们看到了在其上应用网络编码的可能性。OpenFlow网络为网络编码的应用提供了便利,同时网络编码也将为OpenFlow网络带来更好的网络性能。2012年8月Felicián Németh等人已经率先尝试将网络编码应用于由OpenFlow交换机组成的蝶形网络,这验证了在OpenFlow网络中使用网络编码的可行性。但他们只是在蝶形这种特殊网络结构中实现了两条流异或的编码方式,无法推广到一般网络或多条流等复杂情况,不具有通用性。目前在OpenFlow网络中应用网络编码技术还处于起步阶段,并没有较成熟的研究成果,还存在很多待解决的问题,国内此方向还处于空白阶段,没有相关研究。
发明内容
本发明所要解决的技术问题是提供一种在OpenFlow交换机上实现网络编码的方法,它实现了在OpenFlow交换机上的编码操作和/或解码操作。
为解决上述技术问题,本发明提供了一种在OpenFlow交换机上实现网络编码的方法包括:
先在OpenFlow交换机的流表项中添加编码行为和/或解码行为;
当所述OpenFlow交换机接收到待处理数据包时,为所述接收到的待处理数据包添加数据包的包头域,所述数据包的包头域包括编解码所需的信息;
再判断接收到的待处理数据包的行为集合中是否有编码行为和/或解码行为;
若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列;
将在所述编码队列和/或所述解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包。
进一步地,所述当OpenFlow交换机接收到待处理数据包时,为接收到的待处理数据包添加数据包的包头域包括:当所述OpenFlow交换机接收到所述待处理数据包时,判断待处理数据包是否来自数据源;
如果待处理数据包来自数据源,则说明待处理数据包为原始数据包,并为首次进入OpenFlow网络的原始数据包添加包头域;
如果待处理数据包不是来自数据源,而是来自其他OpenFlow交换机,则说明待处理数据包为编解码后的数据包,则直接进行后续操作。
进一步地,所述判断接收到的待处理数据包的行为集合中是否有编码行为和/或解码行为;若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列,包括:首先通过对所述接收到的待处理数据包进行匹配流表来判断是否能得到待处理数据包的行为集合;
若能够得到待处理数据包的行为集合,则判断所述行为集合的行为类型中是否有转发行为;若所述行为类型中有转发行为,则对待处理数据包进行转发;否则判断行为类型中是否有编码行为和/或解码行为,若行为类型中有编码行为和/或解码行为,则将待处理数据包放入所述编码队列和/或所述解码队列;
若不能得到待处理数据包的行为集合,则将待处理数据包的包头通过安全通道发送给OpenFlow控制器,所述Open Flow控制器将为OpenFlow交换机设置待处理数据包所在流对应的流表项,并将所述流表项发回所述OpenFlow交换机,由OpenFlow交换机响应。
进一步地,所述若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列,包括:若所述接收到的待处理数据包的行为集合中有所述编码行为和/或所述解码行为,则先将待处理数据包转化为待编解码处理的数据包,再根据数据包的行为集合中的行为类型,将待编解码处理的数据包放入所述编码队列和/或所述解码队列;其中,待编解码处理的数据包,包括:数据包、数据包的行为类型、数据包的存活时间、数据包所在流的ID、数据包在流中的序列号、数据包已编码过流的个数、与数据包进行编解码的流的个数、将与数据包进行编解码的流的ID、数据包将帮助解码的流的ID及编解码后的流的ID。
进一步地,所述将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包,包括:先遍历所述编码队列和/或所述解码队列中已存的数据包是否有超时的;若编码队列中有超时的已存的数据包,则对所述超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包的编码条件是否被满足;
若所述新加入的数据包的编码条件被满足,则进行编码操作,并将参与编码的数据包全部释放,再对编码后得到的数据包重新进行流表匹配;并根据匹配结果进行相关的操作;
若新加入的数据包的编码条件不被满足,则将新加入的数据包加入编码队列中相应流的队列并等待编码;
若编码队列中没有超时的已存的数据包,则直接判断新加入的数据包的编码条件是否被满足。
进一步地,所述将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包,包括:先遍历所述编码队列和/或所述解码队列中已存的数据包是否有超时的;若解码队列中有超时的已存的数据包,则对所述超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码;若解码队列中没有超时的已存的数据包,则直接判断所述新加入的数据包是否帮助其他流的数据包解码或需要自身解码;
若新加入的数据包的数据包将帮助解码的流的I D项不为空,则说明新加入的数据包帮助其他流的数据包解码,再判断解码队列中被解码的数据包的解码条件是否被满足;若所述被解码的数据包的解码条件被满足,则进行解码操作,解码后将被解码的数据包释放,并对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若被解码的数据包的解码条件不被满足,则将新加入的数据包放入解码队列中相应流的队列并等待处理;
若新加入的数据包的将与数据包进行编解码的流的ID项不为空,则说明新加入的数据包需要自身解码,再判断新加入的数据包的解码条件是否被满足;若新加入的数据包的解码条件被满足,则进行解码操作,再对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的解码条件不被满足,则将新加入的数据包加入解码队列中相应流的队列并等待处理。
进一步地,在所述进行解码操作后,判断所述新加入的数据包是否需要缓存;
若与新加入的数据包有关的解码操作全部执行完毕,则说明新加入的数据包不需要缓存,可以将新加入的数据包释放;
若与新加入的数据包有关的解码操作没有全部执行完毕,则说明新加入的数据包需要缓存,则将新加入的数据包放入所述解码队列中相应流的队列中等待处理。
进一步地,所述判断新加入的数据包的编码条件是否被满足包括:判断所述新加入的数据包要编码的编码队列中是否都有已存数据包;若所述要编码的编码队列中都有所述已存数据包,则说明数据包的编码条件被满足;否则说明数据包的编码条件不被满足。
进一步地,所述判断数据包的解码条件是否被满足包括:若所述解码队列中参与解码过程的流的队列中都有已存数据包及所述流中都存在与待解码数据包编码过的已存数据包,且已存数据包在流中的序列号完全相同,则说明数据包的解码条件被满足,否则说明数据包的解码条件不被满足。
进一步地,所述进行编码操作包括:先将新加入的数据包要编码的编码队列中的流的队列中的第一个已存数据包取出,再将所述新加入的数据包中的数据与所述已存数据包中的数据进行异或编码,得到编码后的数据包;再对所述编码后数据包设置编码后数据包的包头域,得到完整的编码后的数据包。
本发明的有益效果在于:
本发明提供的在OpenFlow交换机上实现网络编码的方法首先在OpenFlow交换机的流表项中添加编码行为和/或解码行为,再为数据包添加用于编解码操作的包头域,从而使OpenFlow交换机能够按照相应的指令对接收到的数据包进行编码操作和/或解码操作,以此提高网络吞吐量,从而为OpenFlow网络提供更好的网络性能。本发明结构合理、效果显著、实用性强。
附图说明
图1为OpenFlow网络的概念框架图。
图2为本发明实施例提供的在OpenFlow交换机上实现网络编码的方法的流程图。
图3为基于本发明实施例提供的在OpenFlow交换机上实现网络编码的方法的OpenF l ow交换机对接收到的数据包的部分处理流程图。
图4为本发明实施例提供的在OpenFlow交换机上实现网络编码的方法中将在编码队列中的数据包进行编码操作的流程图。
图5为本发明实施例提供的在OpenFlow交换机上实现网络编码的方法中将在解码队列中的数据包进行解码操作的流程图。
其中,10-OpenFlow控制器,11-OpenFlow交换机,12-OpenFlow协议。
具体实施方式
为进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的在OpenFlow交换机上实现网络编码的方法的具体实施方式及工作原理进行详细说明。
本发明提供的在OpenFlow交换机上实现网络编码的方法在OpenFlow交换机流表项的行为类型中添加编码行为和解码行为,并将OpenFlow网络中待处理数据包分为:原始数据包(未经过编解码的数据包)和编解码后的数据包,为两种待处理数据包设计了包头域,包头域中包含了编解码所需的信息,从而使OpenFlow交换机能够对待处理数据包执行编码操作和/或解码操作。
由图2可知,本发明提供的在OpenFlow交换机上实现网络编码的方法包括:
首先在OpenFlow交换机的流表项的行为类型中添加编码行为和解码行为。
当OpenFlow交换机接收到待处理数据包时,首先判断待处理数据包是否来自数据源,如果待处理数据包是来自数据源,则说明待处理数据包为原始数据包,并为首次进入OpenFlow网络的原始数据包添加包头域,再进行匹配流表处理。原始数据包的包头域具体包括:数据包所在的流的I D、数据包编码过流的个数及数据包在流中的序列号。如果待处理数据包不是来自数据源,而是来自其他OpenFlow交换机,则说明待处理数据包为编码后的数据包,并直接对编码后的数据包进行匹配流表处理。
由图3可知,具体的,OpenFlow交换机对接收到的待处理数据包进行匹配流表处理包括:首先判断是否能得到与待处理数据包对应的行为集合;若能得到待处理数据包的行为集合,则判断行为集合中是否有转发行为;若行为集合中有转发行为,则对待处理数据包进行转发;否则判断行为集合中是否有编码行为和/或解码行为,若行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列。若行为集合中没有编码行为和/或解码行为,则检查接收到的待处理数据包中的其他行为,并按照其他行为对待处理数据包进行处理。在本实施例中,其他行为包括:丢弃、入队、修改某些字段等。其中,对接收到的待处理数据包进行流表匹配的具体过程包括:首先通过接收到的待处理器数据包对OpenFlow交换机的流表进行匹配;如果有匹配的流表项,则将该流表项的行为字段放入行为集合,再进行循环匹配直至匹配完最后一个流表,得到最终的行为集合;如不能得到与待处理数据包匹配的流表项,则将待处理数据包的包头通过安全通道发送给OpenFlow控制器,OpenFlow控制器将为OpenFlow交换机设置待处理数据包所在流对应的流表项,并将设置后的流表项发回OpenFlow交换机,由OpenFlow交换机响应。具体的,OpenFlow控制器可以通过添加或修改OpenFlow交换机流表中待处理数据包对应的流的流表项来指示OpenFlow交换机对该流做出编码和/或解码操作或其他操作。
进一步地,若行为集合中有编码行为和/或解码行为,则先将待处理数据包转化为待编解码处理的数据包,再根据数据包的行为集合中的行为类型,将待编解码处理的数据包放入编码队列和/或解码队列。其中,待编解码处理的数据包均包括:数据包、数据包的行为类型、数据包的存活时间、数据包所在流的ID、数据包在流中的序列号、数据包已编码过流的个数、与数据包进行编解码的流的个数、将与数据包进行编解码的流的I D、数据包将帮助解码的流的ID及编解码后的流的ID。其中,与数据包进行编解码的流的个数、将与数据包进行编解码的流的ID、数据包将帮助解码的流的ID及编解码后的流的ID统称为流的编解码关系。流的编解码关系是通过本地缓存中该流对应的编解码关系得到的。本地缓存中流的编解码关系和与该流对应的流表项一同被OpenFlow控制器发送过来。如没有流的编解码关系,则可以通过向OpenFlow控制器请求得到。在本实施例中,编码队列和解码队列均按照不同的流的ID存放,每条流又为一队列,用于存放同一条流中不同序列号的数据包。需要说明的是,流的编解码关系及编码队列和/或解码队列中的数据都在流表删除此流对应的流表项的同时被删除,避免其一直占用空间。
将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包;具体的,先遍历编码队列和/或解码队列中已存的数据包是否有超时的;
由图4可知,若编码队列中有超时的已存的数据包,则对超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包的编码条件是否能够被满足;若新加入的数据包的编码条件能够被满足,则进行编码操作,并将参与编码的数据包全部释放,再对编码后的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的编码条件不能被满足,则将新加入的数据包加入编码队列中相应流的队列并等待编码。若编码队列中没有超时的已存的数据包,则直接判断新加入的数据包的编码条件是否能够被满足。具体的,进行编码操作包括:先将新加入的数据包要编码的编码队列中的流的队列中的第一个已存数据包取出,再将新加入的数据包中的数据与取出的已存数据包中的数据进行异或编码,得到编码后的数据包;再对编码后的数据包设置编码后数据包的包头域,从而得到完整的编码后的数据包。其中,编码后数据包的包头域包括:编码后得到的流的ID、参与编码的流的个数、参与编码的流的I D及参与编码的数据包在相应流中的序列号。在本实施例中,判断新加入的数据包的编码条件是否能够被满足包括:判断新加入的数据包要编码的编码队列中是否都有已存数据包;若要编码的编码队列中都有已存数据包,则说明数据包的编码条件能够被满足;否则说明数据包的编码条件不能被满足。需要说明的是,为了避免编码后的数据包的包头过长和降低编解码操作的复杂度,通过OpenFlow控制器对参与一次编码的数据流的个数进行控制。
由图5可知,若解码队列中有超时的已存的数据包,则对超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码;若解码队列中没有超时的已存的数据包,则直接判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码。
若新加入的数据包的数据包将帮助解码的流的ID项不为空,则说明新加入的数据包帮助其他流的数据包解码,再判断解码队列中对应流中的被解码的数据包的解码条件是否能够被满足;若被解码的数据包的解码条件能够被满足,则进行解码操作,解码后将被解码的数据包释放,并对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若被解码的数据包的解码条件不能被满足,则将新加入的数据包放入解码队列中相应流的队列并等待处理;
若新加入的数据包的将与数据包进行编解码的流的ID项不为空,则说明新加入的数据包需要自身解码,再判断新加入的数据包的解码条件是否能够被满足;若新加入的数据包的解码条件能够被满足,则进行解码操作,再对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的解码条件不能被满足,则将新加入的数据包加入到解码队列中相应流的队列并等待处理。
具体的解码操作为:将新加入的数据包与参与解码的数据包的数据进行异或编码,得到解码后的数据包;再对解码后的数据包设置解码后数据包的包头域,从而得到完整的解码后的数据包。其中,解码后数据包的包头域包括:解码后得到的流的ID、参与解码的流的个数、参与解码的流的I D及参与解码的数据包在相应流中的序列号。在本实施例中,判断数据包的解码条件是否能够被满足包括:若解码队列中参与解码过程的流的队列中都有已存数据包及流中都存在与待解码数据包编码过的已存数据包,且已存数据包在流中的序列号完全相同,则说明数据包的解码条件被满足,否则说明数据包的解码条件不被满足。
需要说明的是,在进行解码操作后,需要判断新加入的数据包是否要缓存;
若与新加入的数据包有关的解码操作全部执行完毕,则说明新加入的数据包不需要缓存,可以将新加入的数据包释放;
若与新加入的数据包有关的解码操作没有全部执行完毕,则说明新加入的数据包需要缓存,则将新加入的数据包放入解码队列中相应流的队列中等待处理。
由此可知,所有的编码数据包只能参与一次编码,编码后即被释放;但解码数据包只有自己所有的解码关系都处理完,才被释放。
通过本发明提供的在OpenFlow交换机上实现网络编码的方法来实现在OpenFlow交换机上网络编码。
首先在OpenFlow交换机的流表项的行为类型中添加编码行为和解码行为。当OpenFlow交换机接收到待处理数据包时,首先判断待处理数据包是否来自数据源,如果待处理数据包是来自数据源,则为首次进入OpenFlow网络的原始数据包添加包头域,再进行匹配流表处理。如果待处理数据包不是来自数据源,而是来自其他OpenFlow交换机,则直接对编码后的数据包进行匹配流表处理。OpenFlow交换机的流表匹配过程为:如果有匹配的流表项,则将该流表项的行为字段放入行为集合,再进行循环匹配直至匹配完最后一个流表,得到最终的行为集合;再判断行为集合中是否有转发行为。若行为集合中有转发行为,则将待处理数据包转发至相应的端口;否则判断行为集合中是否有编码行为和/或解码行为,若行为集合中有编码行为和/或解码行为,则先将待处理数据包转化为待编解码处理的数据包,再将待编解码处理的数据包放入编码队列和/或解码队列。若行为集合中没有编码行为和/或解码行为,则检查接收到的待处理数据包中的其他行为,并按照其他行为对待处理数据包进行处理。如果在本地所有的流表中都未找到与待处理数据包匹配的流表项,则将待处理数据包的包头通过安全通道发送给OpenFlow控制器,OpenFlow控制器将为OpenFlow交换机设置待处理数据包所在流对应的流表项,并将设置后的流表项发回OpenFlow交换机,由OpenFlow交换机响应。当编码队列接收到新加入的数据包时,先遍历编码队列中已存的数据包是否有超时的;若编码队列中有超时的已存的数据包,则对超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包的编码条件是否被满足;若新加入的数据包的编码条件被满足,则进行编码操作,并将参与编码的数据包全部释放,再对编码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的编码条件不被满足,则将新加入的数据包加入编码队列中相应流的队列并等待编码。若编码队列中没有超时的已存的数据包,则直接判断新加入的数据包的编码条件是否被满足。当解码队列接收到新加入的数据包时,先遍历解码队列中已存的数据包是否有超时的;若解码队列中有超时的已存的数据包,则对超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码;若解码队列中没有超时的已存的数据包,则直接判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码。若新加入的数据包帮助其他流的数据包解码,则判断解码队列中对应的流中的被解码的数据包的解码条件是否被满足;若被解码的数据包的解码条件被满足,则进行解码操作,解码后将被解码的数据包释放,并对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若被解码的数据包的解码条件不被满足,则将新加入的数据包放入解码队列中相应流的队列并等待处理;若新加入的数据包需要自身解码,则判断新加入的数据包的解码条件是否被满足;若新加入的数据包的解码条件被满足,则进行解码操作,再对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的解码条件不被满足,则将新加入的数据包加入解码队列中相应流的队列并等待处理。在解码操作完成后,判断新加入的数据包是否需要缓存;若新加入的数据包需要缓存,则将新加入的数据包放入解码队列中相应流的队列中等待处理;若新加入的数据包不需要缓存,则直接将新加入的数据包释放。
这里需要说明的是,本发明不仅支持编码后得到的流再次参与编码,而且还支持对编码后得到的流进行部分解码;此外,本发明提供的在OpenFlow交换机上实现网络编码的方法还能参与其他编码后得到的流的解码过程;编码操作和/或解码操作同上,这里不做赘述。
本发明提供的在OpenFlow交换机上实现网络编码的方法首先在OpenFlow交换机的流表项中添加编码行为和/或解码行为,再为数据包添加用于编解码操作的包头域,从而使OpenFlow交换机能够按照相应的指令对接收到的数据包进行编码操作和/或解码操作,以此提高网络吞吐量,从而为OpenFlow网络提供更好的网络性能。本发明结构合理、效果显著、实用性强。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种在OpenFlow交换机上实现网络编码的方法,其特征在于,包括:
先在OpenFlow交换机的流表项中添加编码行为和/或解码行为;
当所述OpenFlow交换机接收到待处理数据包时,为所述接收到的待处理数据包添加数据包的包头域,所述数据包的包头域包括编解码所需的信息;
再判断接收到的待处理数据包的行为集合中是否有编码行为和/或解码行为;
若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列;
将在所述编码队列和/或所述解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包。
2.如权利要求1所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述当OpenFlow交换机接收到待处理数据包时,为接收到的待处理数据包添加数据包的包头域包括:当所述OpenFlow交换机接收到所述待处理数据包时,判断待处理数据包是否来自数据源;
如果待处理数据包来自数据源,则说明待处理数据包为原始数据包,并为首次进入OpenFlow网络的原始数据包添加包头域;
如果待处理数据包不是来自数据源,而是来自其他OpenFlow交换机,则说明待处理数据包为编解码后的数据包,则直接进行后续操作。
3.如权利要求1所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述判断接收到的待处理数据包的行为集合中是否有编码行为和/或解码行为;若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列,包括:首先通过对所述接收到的待处理数据包进行匹配流表来判断是否能得到待处理数据包的行为集合;
若能够得到待处理数据包的行为集合,则判断所述行为集合的行为类型中是否有转发行为;若所述行为类型中有转发行为,则对待处理数据包进行转发;否则判断行为类型中是否有编码行为和/或解码行为,若行为类型中有编码行为和/或解码行为,则将待处理数据包放入所述编码队列和/或所述解码队列;
若不能得到待处理数据包的行为集合,则将待处理数据包的包头通过安全通道发送给OpenFlow控制器,所述OpenFlow控制器将为OpenFlow交换机设置待处理数据包所在流对应的流表项,并将所述流表项发回所述OpenFlow交换机,由OpenFlow交换机响应。
4.如权利要求1所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述若接收到的待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列,包括:若所述接收到的待处理数据包的行为集合中有所述编码行为和/或所述解码行为,则先将待处理数据包转化为待编解码处理的数据包,再根据数据包的行为集合中的行为类型,将待编解码处理的数据包放入所述编码队列和/或所述解码队列;其中,待编解码处理的数据包,包括:数据包、数据包的行为类型、数据包的存活时间、数据包所在流的ID、数据包在流中的序列号、数据包已编码过流的个数、与数据包进行编解码的流的个数、将与数据包进行编解码的流的ID、数据包将帮助解码的流的ID及编解码后的流的ID。
5.如权利要求1-4中任意一项所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包,包括:先遍历所述编码队列和/或所述解码队列中已存的数据包是否有超时的;若编码队列中有超时的已存的数据包,则对所述超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包的编码条件是否被满足;
若所述新加入的数据包的编码条件被满足,则进行编码操作,并将参与编码的数据包全部释放,再对编码后得到的数据包重新进行流表匹配;并根据匹配结果进行相关的操作;
若新加入的数据包的编码条件不被满足,则将新加入的数据包加入编码队列中相应流的队列并等待编码;
若编码队列中没有超时的已存的数据包,则直接判断新加入的数据包的编码条件是否被满足。
6.如权利要求4所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包,包括:先遍历所述编码队列和/或所述解码队列中已存的数据包是否有超时的;若解码队列中有超时的已存的数据包,则对所述超时的已存的数据包重新进行流表匹配;然后判断新加入的数据包是否帮助其他流的数据包解码或需要自身解码;若解码队列中没有超时的已存的数据包,则直接判断所述新加入的数据包是否帮助其他流的数据包解码或需要自身解码;
若新加入的数据包的数据包将帮助解码的流的ID项不为空,则说明新加入的数据包帮助其他流的数据包解码,再判断解码队列中被解码的数据包的解码条件是否被满足;若所述被解码的数据包的解码条件被满足,则进行解码操作,解码后将被解码的数据包释放,并对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若被解码的数据包的解码条件不被满足,则将新加入的数据包放入解码队列中相应流的队列并等待处理;
若新加入的数据包的将与数据包进行编解码的流的I D项不为空,则说明新加入的数据包需要自身解码,再判断新加入的数据包的解码条件是否被满足;若新加入的数据包的解码条件被满足,则进行解码操作,再对解码得到的数据包重新进行流表匹配,并根据匹配结果进行相关的操作;若新加入的数据包的解码条件不被满足,则将新加入的数据包加入解码队列中相应流的队列并等待处理。
7.如权利要求6所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,在所述进行解码操作后,判断所述新加入的数据包是否需要缓存;
若与新加入的数据包有关的解码操作全部执行完毕,则说明新加入的数据包不需要缓存,可以将新加入的数据包释放;
若与新加入的数据包有关的解码操作没有全部执行完毕,则说明新加入的数据包需要缓存,则将新加入的数据包放入所述解码队列中相应流的队列中等待处理。
8.如权利要求5所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述判断新加入的数据包的编码条件是否被满足包括:判断所述新加入的数据包要编码的编码队列中是否都有已存数据包;若所述要编码的编码队列中都有所述已存数据包,则说明数据包的编码条件被满足;否则说明数据包的编码条件不被满足。
9.如权利要求6所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述判断数据包的解码条件是否被满足包括:若所述解码队列中参与解码过程的流的队列中都有已存数据包及所述流中都存在与待解码数据包编码过的已存数据包,且已存数据包在流中的序列号完全相同,则说明数据包的解码条件被满足,否则说明数据包的解码条件不被满足。
10.如权利要求1所述的在OpenFlow交换机上实现网络编码的方法,其特征在于,所述进行编码操作包括:先将新加入的数据包要编码的编码队列中的流的队列中的第一个已存数据包取出,再将所述新加入的数据包中的数据与所述已存数据包中的数据进行异或编码,得到编码后的数据包;再对所述编码后数据包设置编码后数据包的包头域,得到完整的编码后的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210572528.7A CN103023615B (zh) | 2012-12-26 | 2012-12-26 | 一种在OpenFlow交换机上实现网络编码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210572528.7A CN103023615B (zh) | 2012-12-26 | 2012-12-26 | 一种在OpenFlow交换机上实现网络编码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103023615A true CN103023615A (zh) | 2013-04-03 |
CN103023615B CN103023615B (zh) | 2015-05-20 |
Family
ID=47971784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210572528.7A Expired - Fee Related CN103023615B (zh) | 2012-12-26 | 2012-12-26 | 一种在OpenFlow交换机上实现网络编码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103023615B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401783A (zh) * | 2013-07-26 | 2013-11-20 | 盛科网络(苏州)有限公司 | 实现Openflow多级流表的方法及装置 |
CN104486209A (zh) * | 2014-12-12 | 2015-04-01 | 上海斐讯数据通信技术有限公司 | 一种OpenFlow协议网络的报文传输系统及方法 |
CN107196860A (zh) * | 2017-05-23 | 2017-09-22 | 西南交通大学 | Sdn网络中网络编码进行组播传输的方法 |
CN107453924A (zh) * | 2017-09-15 | 2017-12-08 | 河北工程大学 | 一种软件定义FiWi网络中的多路径路由传输方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576343A (zh) * | 2009-09-28 | 2012-07-11 | 日本电气株式会社 | 计算机系统和虚拟机迁移方法 |
EP2503741A1 (en) * | 2009-11-18 | 2012-09-26 | Nec Corporation | Dynamic route branching system and dynamic route branching method |
-
2012
- 2012-12-26 CN CN201210572528.7A patent/CN103023615B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576343A (zh) * | 2009-09-28 | 2012-07-11 | 日本电气株式会社 | 计算机系统和虚拟机迁移方法 |
EP2503741A1 (en) * | 2009-11-18 | 2012-09-26 | Nec Corporation | Dynamic route branching system and dynamic route branching method |
Non-Patent Citations (1)
Title |
---|
OPEN NETWORKING FOUNDATION: "OpenFlow Switch Specification Version 1.3.0 (Wire Protocol 0x04)", 《OPENFLOW SWITCH SPECIFICATION》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401783A (zh) * | 2013-07-26 | 2013-11-20 | 盛科网络(苏州)有限公司 | 实现Openflow多级流表的方法及装置 |
CN104486209A (zh) * | 2014-12-12 | 2015-04-01 | 上海斐讯数据通信技术有限公司 | 一种OpenFlow协议网络的报文传输系统及方法 |
CN107196860A (zh) * | 2017-05-23 | 2017-09-22 | 西南交通大学 | Sdn网络中网络编码进行组播传输的方法 |
CN107196860B (zh) * | 2017-05-23 | 2021-06-04 | 西南交通大学 | Sdn网络中网络编码进行组播传输的方法 |
CN107453924A (zh) * | 2017-09-15 | 2017-12-08 | 河北工程大学 | 一种软件定义FiWi网络中的多路径路由传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103023615B (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103036653B (zh) | 一种对OpenFlow网络进行网络编码的方法 | |
US8958423B2 (en) | Implementing a multicast virtual private network by using multicast resource reservation protocol-traffic engineering | |
CN102882782B (zh) | 装置及第一通信设备的运行方法 | |
CN105262564A (zh) | 一种分布式喷泉码的二维度分布设计方法 | |
WO2007128220A1 (fr) | Procédé et dispositif destinés à un relais combiné composé de plusieurs relais combinés stations-relais mis en oeuvre dans des réseaux de communication sans fil | |
CN107426248B (zh) | 一种基于网络编码的wmn匿名通信方法 | |
CN103873292B (zh) | 一种通信系统及方法 | |
CN103023615A (zh) | 一种在OpenFlow交换机上实现网络编码的方法 | |
CN108075861A (zh) | 软件定义FiWi网络中基于多路径的网络编码传输方法 | |
CN107707476A (zh) | 基于fpga的高效无线转发装置及方法 | |
CN102223312A (zh) | 一种基于链路状态的流量控制方法和设备 | |
US9998355B2 (en) | Methods and systems for traffic engineering with redundancy | |
Yin et al. | Packet efficiency of BATS coding on wireless relay network with overhearing | |
CN106301570B (zh) | 一种软件定义FiWi的混合接入网络及其NC集中控制方法 | |
CN105516109B (zh) | 一种保证无线多跳网络视频传输服务质量的传输调度方法 | |
CN103560966A (zh) | 基于网络编码和复制的机会网络混合路由方法 | |
Taghouti et al. | Random linear network coding for streams with unequally sized packets: Overhead reduction without zero-padded schemes | |
CN102025626B (zh) | 转发组播数据报文的方法和提供商边缘设备 | |
Sagduyu et al. | On broadcast stability region in random access through network coding | |
CN103532954B (zh) | 一种面向数据中心的编码网络系统及其工作方法 | |
Zhang et al. | Probabilistic network coding with priority over wireless networks | |
WO2012116564A1 (zh) | 编码包转发方法、编码包接收处理方法和转发节点 | |
Yang et al. | Coding openflow: Enable network coding in SDN networks | |
CN113133033A (zh) | 一种拓扑感知随机线性网络编码重传方案 | |
CN110958737A (zh) | 公共照明灯具无线巡检系统及巡检方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150520 Termination date: 20151226 |
|
EXPY | Termination of patent right or utility model |