一种在OpenFlow交换机上实现网络编码的方法

文档序号:7870234阅读:220来源:国知局
专利名称:一种在OpenFlow交换机上实现网络编码的方法
技术领域
本发明涉及网络编码技术领域,主要适用于在OpenFlow交换机上实现网络编码的方法。
背景技术
OpenFlow网络,是一种新型的网络创新架构,主要由控制器10和OpenFlow交换机11组成,如图1中所示。OpenFlow交换机11功能专注而简化,只负责数据的转发;控制器10则对整个网络进行集中控制,实现控制层功能。控制器10通过标准的OpenFlow协议12与OpenFlow交换机11进行信息交互,从而进行统一、灵活高效的网络维护和管理。由此可知,OpenFlow网络不仅实现了将原有的完全由交换机/路由器控制的报文转发形式转化为基于流(相同源、目的地址的一系列连续的数据包)的转发形式,而且将传统的控制层面从 转发设备中剥离出来,所有转发行为的决策都迁移到了集中控制器上,从而实现了数据转发和路由控制的分离。由于OpenFlow网络具有集中控制、数据转发层与控制层分离等特点,这让我们看到了在其上应用网络编码的可能性。OpenFlow网络为网络编码的应用提供了便利,同时网络编码也将为OpenFlow网络带来更好的网络性能。2012年8月Felicidin Nemeth等人已经率先尝试将网络编码应用于由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 I ow交换机对接收到的数据包的部分处理流程图。图4为本发明实施例提供的在OpenFlow交换机上实现网络编码的方法中将在编码队列中的数据包进行编码操作的流程图。图5为本发明实施例提供的在OpenFlow交换机上实现网络编码的方法中将在解码队列中的数据包进行解码操作的流程图。其中,IO-OpenFlow控制器,Il-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网络提供更好的网络性能。本发明结构合理、效果显著、实用性强。最后所应说明的是,以上具体实施方式
仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
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交换机上实现网络编码的方法,其特征在于,所述进行编码操作包括先将新加入的数据包要编码的编码队列中的流的队列中的第一个已存数据包取出,再将所述新加入的数据包中的数据与所述已存数据包中的数据进行异或编码,得到编码后的数据包;再对所述编码后数据包设置编码后数据包的包头域,得到完整的编码后的数据包。
全文摘要
本发明涉及网络编码技术领域,公开了一种在OpenFlow交换机上实现网络编码的方法包括先在OpenFlow交换机的流表项中添加编码行为和/或解码行为;当OpenFlow交换机接收到待处理数据包时,为待处理数据包添加数据包的包头域,数据包的包头域包括编解码所需的信息;再判断待处理数据包的行为集合中是否有编码行为和/或解码行为;若待处理数据包的行为集合中有编码行为和/或解码行为,则将待处理数据包放入编码队列和/或解码队列;将在编码队列和/或解码队列中的数据包进行编码操作和/或解码操作,得到编码后的数据包和/或解码后的数据包。本发明实现了在OpenFlow交换机上的编码和/或解码。
文档编号H04L1/00GK103023615SQ201210572528
公开日2013年4月3日 申请日期2012年12月26日 优先权日2012年12月26日
发明者戴彬, 赵文文, 徐冠, 吕璐, 黄本雄 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1