基于开放流的网络通信方法、控制器和交换机的制作方法

文档序号:7867537阅读:270来源:国知局
专利名称:基于开放流的网络通信方法、控制器和交换机的制作方法
技术领域
本发明涉及网络通信领域,并且更具体地,涉及一种基于开放流的网络通信方法、交换机和控制器。
背景技术
随着全球信息通信技术(InformationCommunication Technology, ICT)的发展,网际协议(Internet Protocol, IP)网络的应用取得巨大成功。然而,IP网络存在的潜在问题不但没有得到解决,而且随着网络规模不断扩大。首先,在传统的IP网络中,控制面与数据面都由路由器处理,这样不但占用路由器的处理器的资源,而且随着网络协议越来越复杂,控制面占用网络带宽也越来越严重。其次,整个IP网络中没有全局的决策者,每个路由器进行独立的管理操作,使得路由器的功能变得越来越复杂;此外,IP网络还存在的一
个很大的弊端是随着网络规模的不断扩大,故障定位与恢复越来越困难。为了解决上述问题,美国斯坦福大学提出了一种支持网络创新研究的新型网络架构开放流(Openflow)。开放流的主要部件包括开放流控制器、开放流交换机以及将它们进行链接的链路。其中,开放流控制器中存储整个网络的拓扑结构,并为需要转发的数据流生成流表,下发到相应的交换机中;开放流交换机中存储控制器下发的流表信息,并根据流表信息进行数据转发。开放流实现了将数据面与控制面分离。在控制器中存储着整个网络的视图,使得快速故障定位和故障恢复成为可能。而开放流交换机只需要关注数据转发,使得转发更高效,这样也使得交换机更廉价。然而,在开放流架构中,当网络链路出现故障时,如何确保网络通信系统的可靠性和可用性,仍有待于继续研究。为了解决上述问题,现有技术中提出了一种浮动流表技术。在浮动流表技术中,控制器计算从主机(Host) I到Host 2两条链路,主链路和浮动链路,并将流表信息下发至两条链路所经过的交换机。当主链路出现故障时,交换机将启动浮动链路,数据包将从浮动链路进行转发。但是,在浮动流表技术中,首先,需要多计算一条浮动流表,增加了控制器处理开销。其次,交换机需要额外存储浮动流表信息,浪费了交换机的高速存储器的存储资源;再次,当两个主机之间只存在一条主链路时,该方法失效。

发明内容
本发明实施例提供一种基于开放流的网络通信方法、控制器和交换机。在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。第一方面,提供一种基于开放流的网络通信方法,包括第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包;所述第一控制器确定所述第一数据链路的链路信息;根据所述链路信息,所述第一控制器向第二交换机转发所述第一数据包,所述第二交换机为所述第一数据链路所经过的交换机。
结合第一方面,在第一方面的一种实现方式中,在所述第一控制器向第二交换机转发所述第一数据包之后,所述方法还包括所述第一控制器确定第二数据链路,并确定第二流表信息,所述第二数据链路用于转发与所述第一数据包具有相同源地址和目的地址的后续数据包,所述第二流表信息用于指示所述第二数据链路所经过的交换机根据所述第二数据链路的链路信息转发所述后续数据包;所述第一控制器向所述第二数据链路所经过的交换机转发所述第二流表信息,以便所述第二数据链路所经过的交换机根据所述第二流表信息转发所述后续数据包。结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一控制器向第二交换机转发所述第一数据包,包括所述第一控制器通过第三交换机向所述第二交换机转发所述第一数据包;其中,所述第三交换机是位于所述第一交换机所在的第一网络,且受控于所述第一控制器的交换机。结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一控制器向第二交换机转发所述第一数据包,包括所述第一控制器通过第二控制器向所述第二交换机转发所述第一数据包;其中,所述第二交换机位于第二网络中,且受控与所述第二网络中的第二控制器的交换机。 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包,包括所述第一控制器接收所述第一交换机通过第四交换机转发的所述第一数据包。结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一控制器向所述第二数据链路所经过的交换机转发所述第二流表信息,包括所述第一控制器通过第五交换机向所述第一交换机转发所述第二流表信息。结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述第一控制器确定所述第一数据链路的链路信息包括所述第一控制器查找存储于所述第一控制器中的所述链路信息;在所述第一控制器确定第二数据链路,并确定第二流表信息之后,所述方法还包括所述第一控制器清空存储的所述链路信息,并向所述第一数据链路所经过的交换机转发第一消息,所述第一消息用于指示所述第一数据链路所包括的交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包。第二方面,提供一种基于开放流的网络通信方法,包括第一交换机接收第一数据包,用于转发所述第一数据包的第一数据链路为故障链路;所述第一交换机向控制器转发所述第一数据包,以便所述控制器将所述第一数据包转发至目的地址。结合第二方面,在第二方面的一种实现方式中,在所述第一交换机向控制器转发所述第一数据包之后,还包括所述第一交换机接收所述控制器转发的第二流表信息,所述第二流表信息用于指示所述第一交换机根据所述第二流表信息转发与所述第一数据包具有相同源地址和目的地址的后续数据包;所述第一交换机根据所述第二流表信息转发所述后续数据包。结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述第一交换机向控制器转发所述第一数据包,包括所述第一交换机通过第二交换机向所述控制器转发所述第一数据包。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述第一交换机接收所述控制器转发的第二流表信息包括所述第一交换机接收所述控制器通过第三交换机转发的所述第二流表信息。结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,在所述第一交换机向控制器转发所述第一数据包之后,所述方法还包括所述第一交换机接收所述控制器转发的第一消息,所述第一消息用于指示所述第一交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包;所述第一交换机清空所述第一流表信息。第三方面,提供一种控制器,包括接收单元,用于接收第一交换机由于第一数据链路故障而转发的第一数据包;确定单元,用于确定所述第一数据链路的链路信息;转发单元,用于根据所述链路信息向第二交换机转发所述第一数据包,所述第二交换机为所述第一数据链路所经过的交换机。结合第三方面,在第三方面的一种实现方式中,在所述转发单元根据所述链路信 息向第二交换机转发所述第一数据包之后,所述确定单元还用于确定第二数据链路,并确定第二流表信息,所述第二数据链路用于转发与所述第一数据包具有相同源地址和目的地址的后续数据包,所述第二流表信息用于指示所述第二数据链路所经过的交换机根据所述第二数据链路的链路信息转发所述后续数据包;所述转发单元还用于向所述第二数据链路所经过的交换机转发所述第二流表信息,以便所述第二数据链路所经过的交换机根据所述第二流表信息转发所述后续数据包。结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述转发单元具体用于通过第三交换机向所述第二交换机转发所述第一数据包;其中,所述第三交换机是位于所述第一交换机所在的第一网络,且受控于所述控制器的交换机。结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述转发单元具体用于通过第二控制器向所述第二交换机转发所述第一数据包;其中,所述第二交换机位于第二网络中,且受控与所述第二网络中的第二控制器的交换机。结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述接收单元具体用于接收所述第一交换机通过第四交换机转发的所述第一数据包。结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述转发单元具体用于通过第五交换机向所述第一交换机转发所述第二流表信息。结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述确定单元具体用于查找存储于所述第一控制器中的所述链路信息;所述控制器还包括处理单元,用于在所述确定单元确定第二数据链路以及第二流表信息之后,清空所述链路信息;所述转发单元还用于向所述第一数据链路所经过的交换机转发第一消息,所述第一消息用于指示所述第一数据链路所包括的交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包。第四方面,提供一种交换机,包括接收单元,用于接收第一数据包,用于转发所述第一数据包的第一数据链路为故障链路;转发单元,用于向控制器转发所述第一数据包,以便所述控制器将所述第一数据包转发至目的地址。
结合第四方面,在第四方面的一种实现方式中,所述接收单元还用于接收所述控制器转发的第二流表信息,所述第二流表信息用于指示所述第一交换机根据所述第二流表信息转发与所述第一数据包具有相同源地址和目的地址的后续数据包;所述转发单元还用于根据所述第二流表信息转发所述后续数据包。结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所述转发单元具体用于通过第二交换机向所述控制器转发所述第一数据包。结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所述接收单元具体用于接收所述控制器通过第三交换机转发的所述第二流表信息。结合第四方面及其上述实现方式,在第四方面的另一种实现方式中,所述接收单元还用于在所述转发单元向控制器转发所述第一数据包后,接收所述控制器转发的第一消息,所述第一消息用于指示所述第一交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包;所述交换机还包括处理单元,用于清空所述第一流表信息。 本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器通过控制链路将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。


为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明一个实施例的基于开放流的网络通信方法。图2是本发明一个实施例的基于开放流的网络通信方法。图3是可应用本发明实施例的一个场景图。图4是可应用本发明实施例的另一个场景图。图5是可应用本发明实施例的另一个场景图。图6是可应用本发明实施例的另一个场景图。图7是可应用本发明实施例的另一个场景图。图8是本发明实施例的控制器的框图。图9是本发明实施例的交换机的框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。图I是本发明一个实施例的基于开放流的网络通信方法。该方法由第一控制器执行,第一控制器是开放流网络中能够实现图I方法的任意一个控制器。
101、第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包。102、第一控制器确定所述第一数据链路的链路信息。103、根据链路信息,第一控制器向第二交换机转发所述第一数据包,第二交换机为第一数据链路所经过的交换机。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。需要说明的是,在101中,本发明实施例对第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包的具体方式不作限定,可以直接接收第一交换机发送的 第一数据包,也可以通过其他中间交换机接收第一交换机转发的第一数据包。可选地,作为一个实施例,第一控制器接收第一交换机由于链路故障而转发的第一数据包可包括第一控制器接收第一交换机通过第四交换机转发的第一数据包。例如,第一控制器与第一交换机之间并非直接连接,而是通过第四交换机与第一控制器相连,此时第一交换机通过第四交换机转发数据包;或者,第一交换机与第一控制器之间的控制链路由于出现故障而断开,第一交换机在第一交换机的邻居交换机中确定一个第四交换机,第一交换机将第一数据包转发至第四交换机,再由第四交换机转发至控制器,从而解决了交换机与控制器之间的控制链路断开而无法进行数据转发问题。需要说明的是,链路的链路信息可包括该链路所经过的交换机,还可包括该链路的源地址和目的地址。需要说明的是,在102中,第一控制器可预先存储上述第一链路的链路信息,上述第一控制器确定数据包对应的第一数据链路可包括第一控制器查找上述第一链路信息。需要说明的是,本发明实施例对103中的第一控制器向第二交换机转发第一数据包的具体形式不作限定。例如,第一控制器可以通过与第二交换机的直连链路直接向第二交换机转发第一数据包。还需要说明的是,本发明实施例对第二交换机的选取方式不作限定,例如可以选取与目的地址对应的主机所直连的交换机作为第二交换机,也可以根据第一链路上各个交换机与控制器之间的带宽信息、负载情况选择第二交换机。可选地,作为另一个实施例,第一控制器向第二交换机转发第一数据包可包括第一控制器通过第三交换机向第二交换机转发第一数据包;其中,第三交换机是位于第一交换机所在的第一网络,且受控于第一控制器的交换机。需要说明的是,本发明实施例对第三交换机的选择方式不作限定,例如可以根据第一链路上各个交换机与控制器之间的带宽信息、负载情况选择第三交换机。可选地,作为另一个实施例,第一控制器向第二交换机转发第一数据包可包括第一控制器通过第二控制器向第二交换机转发第一数据包;其中,第二交换机位于第二网络中,且受控与第二网络中的第二控制器的交换机。本发明实施例通过在控制器之间进行数据转发,从而解决了互联网链路故障时,主机之间的数据传输不间断。可选地,作为一个实施例,在第一控制器向第二交换机转发第一数据包之后,图I的方法还可包括第一控制器确定第二数据链路,并确定第二流表信息,第二数据链路用于转发与第一数据包具有相同源地址和目的地址的后续数据包,第二流表信息用于指示第二数据链路所经过的交换机根据第二数据链路的链路信息转发后续数据包;第一控制器向第二数据链路所经过的交换机转发第二流表信息,以便第二数据链路所经过的交换机根据第二流表信息转发后续数据包。需要说明的是,上述第一控制器确定第二数据链路可包括根据网络拓扑信息确定第二数据链路。还需要说明的是,当第一控制器计算第二链路失败时,可停止计算,直到有新的交换机加入网络中,或者现有网络的交换机已关闭的端口重新打开,可再次计算是否有满足要求的第二链路。需要说明的是,本发明实施例对第一控制器向第二数据链路所经过的交换机转发第二流表信息的方式不作限定,可以通过直连的控制链路发送。可选地,作为另一个实施例,第一控制器向第二数据链路所经过的交换机转发第二流表信息可包括第一控制器通过第五交换机向第一交换机转发第二流表信息。例如,第一控制器与第一交换机之间并非直连,而是需要通过第五交换机转发;或者第一控制器与第一交换机之间的控制链路出现故障二断开,需要通过第一交换机的邻居交换机进行流表信息的转发,从而解决了交换机与控制器之间的控制链路断开而无法进行数据转发问题。 可选地,作为另一个实施例,在第一控制器接收第一交换机由于链路故障而转发的数据包之前,还可包括第一控制器接收第一交换机的网络拓扑信息。需要说明的是,本发明实施例对第一控制器接收第一交换机的网络拓扑信息的具体方式不作限定,当第一控制器和第一交换机之间有直连链路时,可以通过第一控制器和第一交换机之间的直连的控制链路接收。可选地,作为另一个实施例,第一控制器接收第一交换机的网络拓扑信息可包括第一控制器接收第一交换机通过第三交换机转发的网络拓扑信息。例如,第一控制器与第一交换机之间并非直接连接,而是通过第三交换机与第一控制器相连,此时第一交换机通过第四交换机转发数据包;或者,第一交换机与第一控制器之间的控制链路由于出现故障而断开,第一交换机在第一交换机的邻居交换机中确定一个第三交换机,第一交换机将数据包转发至第三交换机,再由第三交换机转发至控制器,从而解决了交换机与控制器之间的控制链路断开而无法进行数据转发问题。可选地,作为另一个实施例,在第一控制器接收第一交换机由于链路故障而转发的数据包之前,还可包括第一控制器向第二控制器转发第一网络拓扑信息,第一控制器位于第一网络中,第二控制器位于第二网络中。需要说明的是,本发明实施例对第一控制器向第二控制器转发第一网络拓扑信息的具体形式不作限定,当两个控制器之间由直连链路是,可以通过该直连链路直接发送。可选地,作为另一个实施例,第一控制器向第二控制器转发第一网络拓扑信息包括第一控制器通过第一网络的交换机和第二网络的交换机向第二控制器转发第一网络拓扑信息。当位于不同网络的控制器之间的控制链路出现故障,通过不同网络中的交换机之间的链路实现网络拓扑信息的相互转发。可选地,作为另一个实施例,还可包括第一控制器清空第一数据链路所对应的链路信息,并向第一数据链路所经过的交换机转发第一消息,第一消息用于指示第一数据链路所包括的交换机清空第一数据链路对应的第一流表信息。上文中结合图1,从控制器的角度详细描述了根据本发明实施例的基于开放流的网络通信方法,下面将结合图2,从交换机的角度描述根据本发明实施例的基于开放流的网络通信方法。
应理解,控制器侧描述的控制器与交换机的交互及相关特性、功能等与交换机侧的描述相应,为了简洁,在此不再赘述。图2是本发明一个实施例的基于开放流的网络通信方法。该方法由第一交换机执行,第一交换机可以是开放流网络中可以实现图2方法的任何一个交换机。201、第一交换机接收第一数据包,用于转发第一数据包的第一数据链路为故障链路。202、第一交换机向控制器转发第一数据包,以便控制器将第一数据包转发至目的地址。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链
路和存储浮动链路所带来的资源损耗。需要说明的是,本发明实施例对201中数据包的发送者不作限定。例如,可以是第一交换机所控制的主机,也可以是网络中的其他交换机。需要说明的是,本发明实施例对202中第一交换机向控制器转发数据包的具体方式不作限定。例如,当控制器与第一交换机有直连的控制链路时,可以通过该控制链路直接发送。可选地,作为一个实施例,第一交换机向控制器转发数据包还可包括第一交换机通过第二交换机向控制器转发数据包。例如,第一交换机与控制器之间不存在直连链路,需要通过第二交换机转发;或者第一交换机与控制器之间的直连链路出现故障而无法进行数据转发,可以通过与第一交换机相邻的第二交换机向控制器转发。可选地,作为另一个实施例,在第一交换机向控制器转发第一数据包之后,图2的方法还可包括第一交换机接收控制器转发的第二流表信息,第二流表信息用于指示第一交换机根据第二流表信息转发与第一数据包具有相同源地址和目的地址的后续数据包;第一交换机根据第二流表信息转发后续数据包。。需要说明的是,本发明实施例对第一交换机接收控制器转发的第二流表信息的具体方式不作限定。例如当第一交换机与控制器之间有直连链路时,可以通过该直连链路接收。可选地,作为另一个实施例,第一交换机接收控制器转发的第二流表信息还可包括第一交换机接收控制器通过第二交换机转发的流表信息。可选地,作为另一个实施例,在第一交换机接收第一数据链路对应的数据包之前,图2的方法还可包括第一交换机向控制器转发第一交换机的网络拓扑信息。需要说明的是,本发明实施例对第一交换机向控制器转发第一交换机的网络拓扑信息的转发的具体方式不作限定。例如,当第一交换机与控制器之间有直连链路时,可以通过该直连链路转发。 可选地,作为另一个实施例,第一交换机向控制器转发第一交换机的网络拓扑信息还可包括第一交换机通过第二交换机向控制器转发第一交换机的网络拓扑信息。可选地,作为另一个实施例,图2的方法还可包括第一交换机接收控制器转发的第一消息,第一消息用于指示第一交换机清空第一数据链路对应的第一流表信息;清空所述第一流表信息。下面结合具体例子,更加详细地描述本发明实施例。应注意,图3至图7的例子仅仅是为了帮助本领域技术人员理解本发明实施例,而非要将本发明实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的图3至图7的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。图3是可应用本发明实施例的一个场景图。图3的场景中,主链路I由于出现故障而断开,交换机SI向控制器转发。图I的实施例中的第一控制器可以实现图3中的控制器的各个功能,图2的实施例中的第一交换机可以实现图3中的交换机的各个功能。I.由控制器计算一条主链路1,并在本地进行保存,同时将生成的流表信息下发至交换机;2.交换机存储控制器下发的流表信息,并根据流表进行数据转发;3.当主链路I出现问题时,交换机将数据流,通过交换机和控制器之间的链路转发至控制器(链路2)。4.控制器查找原链路,根据原链路中的交换机与控制器之间带宽等信息,选取一个合适的交换机(S2或S3 ),并转发数据包。5.控制器重新计算路径,如果没有相关路径则停止;直至收到有端口 UP消息,再重新计算路径。6.当5计算出新路径,控制器保存新路径,并将流表信息下发,如果通道中的数据流量超过一定阈值,则通过链路中相邻交换机(S4或S2’),将流表信息转发过去。7.数据流通过新的链路(链路3)进行转发,控制器下发清空原流表信息。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。图4是可应用本发明实施例的另一个场景图。图I的实施例中的第一控制器可以实现图4中的控制器的各个功能,图2的实施例中的第一交换机可以实现图4中的交换机的各个功能。当交换机SI与控制器之间的控制面链路出现问题时,交换机SI上的网络拓扑信息将由其邻居结点交换机S4上报至控制器,控制器下发的流表信息将由其邻居交换机S4转发至交换机SI。交换机SI依照控制器下发的流表进行数据转发;当主链路I出现故障时,数据将由其邻居交换机S4转发至控制器,控制器选择原链路中某一交换机S2或交换机S3,并转发数据包。当控制器计算出新链路时,控制器下发至交换机SI的流表信息经由交换机SI的邻居交换机S4转发至交换机SI,链路中下发至其它交换机的流表信息直接通过控制面链路进行下发。交换机SI、交换机S2’和交换机S3依照新的流表信息进行数据转发,同时交换机SI删除原流表信息。步骤如下I.交换机SI通过其邻居交换机S4将其网络拓扑信息上报至控制器。2.控制器计算一条主链路1,并在本地进行保存,同时将生成的流表信息下发至交换机,其中下发至交换机SI的流表信息将通过交换机SI的邻居交换机S4进行转发。3.交换机SI存储控制器下发的流表信息,并根据流表进行数据转发。4.当主链路I出现问题时,交换机将数据流,通过交换机和控制器之间的链路2转发至控制器,其中交换机SI转发至控制器的数据,将通过其邻居交换机S4转发至控制器。5.控制器查找原链路,根据原链路中交换机与控制器之间带宽等信息,选取一个合适的交换机(S2或S3 ),并转发数据包。6.控制器重新计算路径,如果没有相关路径则停止;直至收到有端口 UP消息,再重新计算路径。7.当6计算出新路径,控制器保存新路径,并将流表信息下发至交换机SI、交换机S2’和交换机S3,其中下发至交换机SI的流表,通过链路中与其相邻交换机S4或S2’进行转发。8.数据流通过新的链路3进行转发,控制器下发清空原流表信息。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器通过控制链路将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。另外,当交换机与控制器之间的控制链路断开时,还可以通过交换机的邻居交换机进行数据的转发。图5是可应用本发明实施例的另一个场景图。在图5的场景中,网络I中的交换机S2与网络2中的交换机S3之间进行数据转发的链路断开,然后通过网络I中的控制器I与网络2中的控制器2进行数据的转发。图I的实施例中的第一控制器可以实现图5中的控制器I和控制器2的各个功能,图2的实施例中的第一交换机可以实现图5中的交换机的各个功能。I.交换机S2将数据包转发至控制器I。2.控制器I将数据转发至控制器2。3.控制器2将数据转发至交换机S3。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。图6是可应用本发明实施例的另一个场景图。在图6的场景中,网络I中的控制器I与网络2中的控制器2之间进行网络拓扑信息转发的链路断开,然后通过网络I中的交换机S2与网络2中的交换机S3进行网络拓扑信息的转发。图I的实施例中的第一控制器可以实现图6中的控制器I和控制器2的各个功能,图2的实施例中的第一交换机可以实现图6中的交换机的各个功能。I.控制器I向交换机S2发送网络I的拓扑信息。2.交换机S2向交换机S3转发网络I的拓扑信息。3.交换机S3将网络I的拓扑信息转发至控制器2。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。图7是可应用本发明实施例的另一个场景图。在图7的场景中,网络I中的交换机S2与网络2中的交换机S3之间进行数据转发的链路断开,同时,交换机S2与控制器I之间的控制链路也由于出现故障而无法进行数据转发。图I的实施例中的第一控制器可以实现图7中的控制器I和控制器2的各个功能,图2的实施例中的第一交换机可以实现图7中的交换机的各个功能。I.交换机S2将数据包转发至网络I中的交换机SI。2.交换机SI将数据包转发至控制器I。3.控制器I将数据转发至控制器2。4.控制器2将数据转发至交换机S3。
本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。图8是本发明实施例的控制器的框图。图8中的控制器包括接收单元801,确定单元802,转发单元803。接收单元801,用于接收第一交换机由于第一数据链路故障而转发的第一数据包。确定单元802,用于确定第一数据链路的链路信息。转发单元803,用于根据链路信息向第二交换机转发第一数据包,第二交换机为第一数据链路所经过的交换机。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。可选地,作为一个实施例,确定单元802还用于在转发单元803根据链路信息向第二交换机转发第一数据包之后,确定第二数据链路,并确定第二流表信息,第二数据链路用于转发与第一数据包具有相同源地址和目的地址的后续数据包,第二流表信息用于指示第二数据链路所经过的交换机根据第二数据链路的链路信息转发后续数据包;转发单元还用于向第二数据链路所经过的交换机转发第二流表信息,以便第二数据链路所经过的交换机根据第二流表信息转发后续数据包。可选地,作为另一个实施例,转发单元803具体用于通过第三交换机向第二交换机转发第一数据包;其中,第三交换机是位于第一交换机所在的第一网络,且受控于控制器的交换机。可选地,作为另一个实施例,转发单元803具体用于通过第二控制器向第二交换机转发第一数据包;其中,第二交换机位于第二网络中,且受控与第二网络中的第二控制器的交换机。可选地,作为另一个实施例,接收单元801具体用于接收第一交换机通过第四交换机转发的第一数据包。可选地,作为另一个实施例,转发单元803具体用于通过第五交换机向第一交换机转发第二流表信息。可选地,作为另一个实施例,确定单元802具体用于查找存储于控制器中的链路信息;控制器还包括处理单元804,用于在确定单元802确定第二数据链路以及第二流表信息之后,清空链路信息;转发单元还用于向第一数据链路所经过的交换机转发第一消息,第一消息用于指示第一数据链路所包括的交换机清空第一流表信息,第一流表信息用于指示第一数据链路所经过的交换机根据链路信息转发与第一数据包具有相同源地址和目的地址的数据包。图9是本发明实施例的交换机的框图。图9中的交换机包括接收单元901,转发单元902。接收单元901,用于接收第一数据包,用于转发第一数据包的第一数据链路为故障链路;转发单元902,用于向控制器转发第一数据包,以便控制器将第一数据包转发至目的地址。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。
可选地,作为一个实施例,接收单元901还用于接收控制器转发的第二流表信息,第二流表信息用于指示交换机根据第二流表信息转发与第一数据包具有相同源地址和目的地址的后续数据包;转发单元还用于根据第二流表信息转发后续数据包。可选地,作为另一个实施例,转发单元902具体用于通过第二交换机向控制器转发第一数据包。可选地,作为另一个实施例,接收单元901具体用于接收控制器通过第三交换机
转发的第二流表信息。可选地,作为另一个实施例,接收单元901还用于在转发单元902向控制器转发第一数据包后,接收控制器转发的第一消息,第一消息用于指示交换机清空第一流表信息,第一流表信息用于指示第一数据链路所经过的交换机根据链路信息转发与第一数据包具有相同源地址和目的地址的数据包;处理单元903,用于交换机清空第一流表信息。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种基于开放流的网络通信方法,其特征在于,包括 第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包; 所述第一控制器确定所述第一数据链路的链路信息; 根据所述链路信息,所述第一控制器向第二交换机转发所述第一数据包,所述第二交换机为所述第一数据链路所经过的交换机。
2.如权利要求I所述的方法,其特征在于,在所述第一控制器向第二交换机转发所述第一数据包之后,所述方法还包括 所述第一控制器确定第二数据链路,并确定第二流表信息,所述第二数据链路用于转发与所述第一数据包具有相同源地址和目的地址的后续数据包,所述第二流表信息用于指示所述第二数据链路所经过的交换机根据所述第二数据链路的链路信息转发所述后续数据包; 所述第一控制器向所述第二数据链路所经过的交换机转发所述第二流表信息,以使所述第二数据链路所经过的交换机根据所述第二流表信息转发所述后续数据包。
3.如权利要求I或2所述的方法,其特征在于,所述第一控制器向第二交换机转发所述第一数据包,包括 所述第一控制器通过第三交换机向所述第二交换机转发所述第一数据包;其中,所述第三交换机是位于所述第一交换机所在的第一网络,且受控于所述第一控制器的交换机。
4.如权利要求I或2所述的方法,其特征在于,所述第一控制器向第二交换机转发所述第一数据包,包括 所述第一控制器通过第二控制器向所述第二交换机转发所述第一数据包;其中,所述第二交换机位于第二网络中,且受控与所述第二网络中的第二控制器的交换机。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包,包括 所述第一控制器接收所述第一交换机通过第四交换机转发的所述第一数据包。
6.如权利要求2所述的方法,其特征在于,所述第一控制器向所述第二数据链路所经过的交换机转发所述第二流表信息,包括 所述第一控制器通过第五交换机向所述第一交换机转发所述第二流表信息。
7.如权利要求2-6中任一项所述的方法,其特征在于,所述第一控制器确定所述第一数据链路的链路信息包括 所述第一控制器查找存储于所述第一控制器中的所述链路信息;在所述第一控制器确定第二数据链路,并确定第二流表信息之后,所述方法还包括 所述第一控制器清空存储的所述链路信息,并向所述第一数据链路所经过的交换机转发第一消息,所述第一消息用于指示所述第一数据链路所包括的交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包。
8.一种基于开放流的网络通信方法,其特征在于,包括 第一交换机接收第一数据包,用于转发所述第一数据包的第一数据链路为故障链路; 所述第一交换机向控制器转发所述第一数据包,以便所述控制器将所述第一数据包转发至目的地址。
9.如权利要求8所述的方法,其特征在于,在所述第一交换机向控制器转发所述第一数据包之后,还包括 所述第一交换机接收所述控制器转发的第二流表信息,所述第二流表信息用于指示所述第一交换机根据所述第二流表信息转发与所述第一数据包具有相同源地址和目的地址的后续数据包; 所述第一交换机根据所述第二流表信息转发所述后续数据包。
10.如权利要求8所述的方法,其特征在于,所述第一交换机向控制器转发所述第一数据包,包括 所述第一交换机通过第二交换机向所述控制器转发所述第一数据包。
11.如权利要求9所述的方法,其特征在于,所述第一交换机接收所述控制器转发的第二流表信息包括 所述第一交换机接收所述控制器通过第三交换机转发的所述第二流表信息。
12.如权利要求8-11中任一项所述的方法,其特征在于,在所述第一交换机向控制器转发所述第一数据包之后,所述方法还包括 所述第一交换机接收所述控制器转发的第一消息,所述第一消息用于指示所述第一交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包; 所述第一交换机清空所述第一流表信息。
13.—种控制器,其特征在于,包括 接收单元,用于接收第一交换机由于第一数据链路故障而转发的第一数据包; 确定单元,用于确定所述第一数据链路的链路信息; 转发单元,用于根据所述链路信息向第二交换机转发所述第一数据包,所述第二交换机为所述第一数据链路所经过的交换机。
14.如权利要求13所述的控制器,其特征在于,所述确定单元还用于在所述转发单元根据所述链路信息向第二交换机转发所述第一数据包之后,确定第二数据链路,并确定第二流表信息,所述第二数据链路用于转发与所述第一数据包具有相同源地址和目的地址的后续数据包,所述第二流表信息用于指示所述第二数据链路所经过的交换机根据所述第二数据链路的链路信息转发所述后续数据包; 所述转发单元还用于向所述第二数据链路所经过的交换机转发所述第二流表信息,以使所述第二数据链路所经过的交换机根据所述第二流表信息转发所述后续数据包。
15.如权利要求13或14所述的控制器,其特征在于,所述转发单元具体用于通过第三交换机向所述第二交换机转发所述第一数据包;其中,所述第三交换机是位于所述第一交换机所在的第一网络,且受控于所述控制器的交换机。
16.如权利要求13或14所述的控制器,其特征在于,所述转发单元具体用于通过第二控制器向所述第二交换机转发所述第一数据包;其中,所述第二交换机位于第二网络中,且受控与所述第二网络中的第二控制器。
17.如权利要求13-16中任一项所述的控制器,其特征在于,所述接收单元具体用于接收所述第一交换机通过第四交换机转发的所述第一数据包。
18.如权利要求14所述的控制器,其特征在于,所述转发单元具体用于通过第五交换机向所述第一交换机转发所述第二流表信息。
19.如权利要求14-18中任一项所述的控制器,其特征在于,所述确定单元具体用于查找存储于所述控制器中的所述链路信息;所述控制器还包括 处理单元,用于在所述确定单元确定第二数据链路以及第二流表信息之后,清空存储的所述链路信息;所述转发单元还用于向所述第一数据链路所经过的交换机转发第一消息,所述第一消息用于指示所述第一数据链路所包括的交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包。
20.一种交换机,其特征在于,包括 接收单元,用于接收第一数据包,用于转发所述第一数据包的第一数据链路为故障链路; 转发单元,用于向控制器转发所述第一数据包,以便所述控制器将所述第一数据包转发至目的地址。
21.如权利要求20所述的交换机,其特征在于,所述接收单元还用于接收所述控制器转发的第二流表信息,所述第二流表信息用于指示所述交换机根据所述第二流表信息转发与所述第一数据包具有相同源地址和目的地址的后续数据包;所述转发单元还用于根据所述第二流表信息转发所述后续数据包。
22.如权利要求20所述的交换机,其特征在于,所述转发单元具体用于通过第二交换机向所述控制器转发所述第一数据包。
23.如权利要求21所述的交换机,其特征在于,所述接收单元具体用于接收所述控制器通过第三交换机转发的所述第二流表信息。
24.如权利要求20-23中任一项所述的交换机,其特征在于,所述接收单元还用于在所述转发单元向控制器转发所述第一数据包后,接收所述控制器转发的第一消息,所述第一消息用于指示所述交换机清空第一流表信息,所述第一流表信息用于指示所述第一数据链路所经过的交换机根据所述链路信息转发与所述第一数据包具有相同源地址和目的地址的数据包;所述交换机还包括处理单元,用于清空所述第一流表信息。
全文摘要
本发明提供一种基于开放流的网络通信方法、控制器和交换机,该方法包括第一控制器接收第一交换机由于第一数据链路故障而转发的第一数据包;第一控制器确定第一数据链路的链路信息;根据链路信息,第一控制器向第二交换机转发第一数据包,第二交换机为第一数据链路所经过的交换机。本发明实施例中,通过在数据转发链路出现故障时,交换机向控制器转发数据包,控制器将数据包转发至目的地址,从而在保证数据传输不间断的前提下避免了计算浮动链路和存储浮动链路所带来的资源损耗。
文档编号H04L12/703GK102984058SQ20121051597
公开日2013年3月20日 申请日期2012年12月5日 优先权日2012年12月5日
发明者朱韧, 周伟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1