软件定义网络中的控制流量的制作方法

文档序号:14652043发布日期:2018-06-08 22:01阅读:146来源:国知局
软件定义网络中的控制流量的制作方法

本发明涉及软件定义网络。特别地,本发明涉及软件定义网络中的控制流量。



背景技术:

软件定义网络(software defined network,简称SDN)的设计和管理可以基于将网络转发面与网络控制面分离。此外,网络控制面可以通过具有一个或多个SDN控制器实现集中化,所述SDN控制器通过控制连接命令网络节点将要应用于传入数据包的转发规则填充到其数据流表中。



技术实现要素:

尽管使网络转发面集中化可以促进控制面协议的合理化发展,但是这可能会给建立新的控制连接带来负担。例如,建立新的控制连接可能要求所涉及的每个网络节点要么是预配置的,要么能够通过现有的控制连接到达。因此,当集成新的网络节点或尝试从发生故障的控制连接中恢复时,这个前提条件可能是不利条件。此外,当所有决策必须由中央控制器实施和传达时,甚至当决策涉及不可预测或突发事件或网络状态改变时,大型网络可能必须处理网络重新配置中相当大的时延。

发明了涉及软件定义网络中控制消息传输的本发明的各个方面,从而至少部分地克服了这些不利条件。

根据本发明的第一方面,提供了第一网络节点,其具有标识要应用于传入数据包的转发规则的数据流表;所述第一网络节点用于允许通过控制消息控制所述数据流表,其中,所述控制消息是通过与控制器的控制连接接收到的;所述第一网络节点还用于确定网络事件的发生或对所述控制器指定的条件的遵从;所述第一网络节点还用于:在所述网络事件发生或所述条件满足的情况下与第二网络节点建立控制连接;并且通过所述控制连接与所述第二网络节点交换控制消息。

在这方面,应当注意,整个说明书和权利要求书中使用的术语“控制消息”旨在被广泛地理解,并且涵盖源于控制器要发往特定网络节点或源于特定网络节点要发往控制器的任何消息。该“控制消息”控制网络中的传输路径,或触发网络节点的数据流表的重新配置或更新。此外,整个说明书和权利要求书中使用的术语“控制连接”旨在被广泛地理解,并且特别涉及由控制器规定的用于与控制器交换控制消息的传输路径,以及涉及用于传输控制消息的任何端到端连接或传输路径。此外,在整个说明书和权利要求书中使用的术语“端到端连接”涉及由网络节点定义的传输路径,该网络节点不需要甚至不能通过设计来解析消息,因此无需注意该消息的内容就可以转发该消息,例如,通过基于消息不可知转发规则来简单地选择传输路径(例如,将在特定输入端口处接收到的所有数据包复制到特定输出端口)。

因此,可以通过网络节点发起的网络节点之间的控制消息交换来加快网络重新配置。如果控制器远离重新配置站点,此方法会特别有效。

在第一方面的第一种实现方式中,所述第一网络节点还用于:采用所述第二网络节点将来自所述第一网络的信息中继到所述控制器,所述信息与所述网络事件相关,并且源于所述第一网络节点要发往所述控制器;或者向所述第二网络节点发送对所述第二网络节点的数据流表进行控制的控制器授权请求。

因此,要发往SDN控制器的第一网络节点的控制消息可以被路由/重新路由到第二网络节点,然后该第二网络节点处理第一网络节点的控制流量。此外,中继可以一直进行,直到控制器选择了用于第一网络节点与控制器之间的控制连接的新路径,或者确认现有路径为用于第一网络节点与控制器之间的控制连接的新路径。

特别地,控制器可以用于发布控制消息,该控制消息由第二网络节点中继到第一网络节点,并且指示第一网络节点与控制器之间的新的(端到端)控制连接。例如,新的控制连接可以基于不包括第二网络节点的传输路径。另外,端到端连接可以在地址头字段中包括消息接收方的地址,而中继消息可以在接收方头字段中包括执行中继的网络节点的地址。例如,第二网络节点接收到的消息可以在地址头字段中携带第二网络节点,并且接收方可以由第二网络节点用其他接收方(例如,第一网络节点或控制器)替换。

根据第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述网络事件是指没有可用的与控制器的控制连接;或者是指与控制器的控制连接发生故障,并且与所述网络事件相关的信息包括要发往所述控制器的所述第一网络节点的控制消息。

因此,将新的网络节点无缝集成到网络中或从发生故障的控制连接中恢复是可能的,因为第二网络节点能够在第一网络节点与控制器之间中继控制流量。

根据第一方面或第一方面的第一种或第二种实现方式,在第一方面的第三种实现方式中,所述第一网络节点还用于更新所述第一网络节点的数据流表,以向所述第二网络节点发送所述第一网络节点与控制器之间的控制消息。

因此,一旦第二网络节点明确地或隐含地同意处理第一网络节点的控制流量时,第一网络节点可以在数据流表中存储相应的转发规则,该相应的转发规则指示要发往控制器的控制消息从第一网络节点转发到第二网络节点。因此,第一网络节点可以(临时)采用第二网络节点和控制器之间的现有(端到端)控制连接,而不是尝试建立新的端到端控制连接。例如,第一网络节点可以随机选择相邻网络节点即不需要中间网络节点就连接到第一网络节点的网络节点中的一个节点。然后,隐含地或明确地同意处理第一网络节点的控制流量的第一个相邻节点可以通过存储相应的转发规则来成为第一网络节点的临时或永久的中继节点。

根据第一方面的第三种实现方式,在第一方面的第四种实现方式中,所述第一网络节点还用于通过所述第二网络节点向所述控制器发送包含更新后的数据流表的指示的控制消息。

因此,控制器能够建立或维护分配给该控制器的所有网络节点的所有转发规则的更新后的集中化视图,因此可以决定是否或如何重新设计控制连接路径。例如,控制器可以基于通信网络中的所有消息转发路径上的可用信息来执行路径优化算法,该路径优化算法可以例如基于负载均衡。

根据第一方面或第一方面的第一种至第四种实现方式中的任一种实现方式,在第一方面的第五种实现方式中,所述第一网络节点与所述控制器之间的控制消息包含唯一的控制器标识。将唯一的控制器标识添加到控制消息允许第二网络节点决定要向哪个控制器转发控制消息,例如,在第二网络节点与超过一个控制器建立了主动控制连接的情况下。类似地,通过给第一网络节点分配唯一标识,控制器识别出中继的控制消息源自第一网络节点的过程可以更有效的进行。此外,第二网络节点可以更容易识别出接收到的控制消息要发往第一网络节点。然而,本发明并不限于将第一网络节点的唯一标识添加或分配到由第二网络节点中继的控制消息中,因为也可以考虑其他机制。例如,第二网络节点可以具有代理端口,并且可以用于将通过代理端口接收到的消息复制到与控制器的控制连接上。

根据第一方面的第二种至第五种实现方式中的任一种实现方式,在第一方面的第六种实现方式中,第一网络节点还用于通过故障检测协议来检测链路层故障,从而确定与控制器的控制连接发生故障。

例如,可以通过在相邻网络节点的连接端口之间周期性地发布“keepalive”消息来检测链路层故障。如果用于第一网络节点向控制器发送控制消息的第三网络节点的许多预期的“keepalive”消息在周期性规定的时帧内未被接收,则第一网络节点可以检测到链路层故障。特别地,检测链路层故障允许第一网络节点快速检测到用于将控制消息路由到控制器的路径不可用或不再可用,因此分别允许新的控制连接的快速建立,以及从发生故障的控制连接中的快速恢复。此外,在整个说明书和权利要求书中使用的术语“链路层故障”旨在被广泛地理解,并且特别地涵盖物理链路或连接到物理链路的端口的故障或连接断开。

根据第一方面的第二种至第六种实现方式中的任一种实现方式,在第一方面的第七种实现方式,所述第一网络节点还用于向所述第二网络节点的代理端口发送所述第一网络节点与所述控制器之间的控制消息,以指示所述第二网络节点应该转发所述控制消息,而无需分析所述控制消息的内容。

因此,第一网络节点能够通过在第一网络节点与控制器之间中继控制流量的代理端口路由控制消息。当通过代理端口传输控制消息时,该控制消息可以被转发到控制器,而无需分析该控制消息的内容。例如,可以默认将在代理端口处接收到的所有消息复制到第二网络节点和控制器之间的控制连接上。在这方面,“分析控制消息的内容”特指通过解析消息内容来识别消息发起的源地或消息发往的目的地。

根据第一方面或第一方面的第一种实现方式,在第一方面的第八种实现方式中,所述控制器指定的条件为接收(例如来自特定源节点的)特定数据包。

特别地,特定数据包可以包括带有指示的包头,该指示指示该数据包是与该条件相关的控制消息。

根据本发明的第二方面,提供了第二网络节点,其具有标识要应用于传入数据包的转发规则的数据流表,所述第二网络节点用于允许通过控制消息控制所述数据流表,其中,所述控制消息是通过与控制器的控制连接接收到的;所述第二网络节点还用于在接收到如下内容时更新所述数据流表:

要发往所述控制器的第一网络节点的控制消息,其中,所述第二网络节点通过制定新的转发规则来更新所述数据流表,所述新的转发规则规定将要发往所述第一网络节点的控制器的控制消息转发到所述第一网络节点;或者

来自所述第一网络节点的对所述数据流表的控制请求,其中,所述请求与所述第二网络节点的数据流表的控制器授权规则匹配。

因此,在中继第一网络节点的控制流量时,第二网络节点可以更新其数据流表以反映中继,例如通过添加相应的转发规则。例如,第二网络节点可以更新其数据流表,以指示第一网络节点的控制消息通过第二网络节点的控制连接转发到控制器,所述第二网络节点的控制连接可以是先前仅用于处理第二网络节点的控制流量的端到端连接。此外,第二网络节点可以更新其数据流表,以指示将要发往第一网络节点的控制器的控制消息转发到第一网络节点。

此外,数据流表可以在没有控制器明确介入的情况下由第一网络节点更新。因此,可以本地瞬间作出更新流表的决定,从而更快的进行更新。

在第二方面的第一种实现方式中,所述第二网络节点还用于向所述控制器发送包含更新后的数据流表的指示的控制消息。

因此,如上所述,控制器能够维护分配给控制器的所有网络节点的所有转发规则的更新后的集中化视图,因此能够决定,例如,是否或如何重新设计控制连接路径。

根据第二方面或第二方面的第一种实现方式,在第二方面的第二种实现方式中,要发往所述控制器的第一网络节点的控制消息包含唯一的控制器标识。

如上所述,具有唯一的控制器标识允许第二网络节点决定要向哪个控制器转发控制消息,例如,在第二网络节点与超过一个控制器建立了主动控制连接的情况下。类似地,通过具有第一网络节点的唯一标识,控制器识别出中继的控制消息源自第一网络节点的过程可以更有效的进行。

此外,第二网络节点可以更容易识别出接收到的控制消息要发往第一网络节点。然而,本发明并不限于将第一网络节点的唯一标识添加或分配到由第二网络节点中继的控制消息中,因为也可以考虑其他机制。例如,第二网络节点可以具有代理端口,并且可以用于将通过代理端口接收到的每一个消息复制到与控制器的控制连接上。

根据第二方面或第二方面的第一种或第二种实现方式,在第二方面的第三种实现方式中,所述第二网络节点还用于针对向所述第一网络节点转发数据流量或者转发来自所述第一网络节点的数据流量来更新所述数据流表,从而响应对所述数据流表的控制请求。

因此,如上所述,要发往SDN控制器的第一网络节点的控制消息可以被路由/重新路由到第二网络节点,然后该第二网络节点处理第一网络节点的控制流量。这允许将新的网络节点无缝集成到网络中或从发生故障的控制连接中恢复,因为第二网络节点能够在第一网络节点与控制器之间中继控制流量。

根据本发明的第三方面,提供了一种通信网络,包括:第一网络节点和第二网络节点,其中,每个网络节点均具有标识要应用于传入数据包的转发规则的数据流表;以及控制器;其中,所述第一网络节点和所述第二网络节点均用于允许通过控制消息控制数据流表,所述控制消息是通过与控制器的控制连接接收到的;所述第一网络节点还用于:确定网络事件的发生或对所述控制器指定的条件的遵从;在发生所述网络事或满足所述条件的情况下与所述第二网络节点建立控制连接;通过所述控制连接与所述第二网络节点交换控制消息。

因此,如上所述,可以通过网络节点发起的网络节点之间的控制消息交换来加快网络重新配置,例如,如果控制器远离重新配置站点。

在第三方面的第一种实现方式中,所述第一网络节点还用于:采用所述第二网络节点将来自所述第一网络节点的信息中继到所述控制器,所述信息与所述网络事件相关;或者向所述第二网络节点发送对所述第二网络节点的数据流表进行控制的控制器授权请求;所述第二网络节点还用于在将来自所述第一网络节点的控制器授权控制请求匹配于所述第二网络节点的数据流表的控制器授权规则时更新所述第二网络节点的数据流表。

因此,如上所述,第二网络节点可以在第一网络节点与控制器之间中继控制流量。因此,第二网络节点可以将从第一网络节点接收到的控制消息复制到第二网络节点与控制器之间的现有(端到端)控制连接上。此外,要发往第一网络节点的控制器的控制消息可以通过控制器与第二网络节点之间的控制连接从控制器发送到第二网络节点。

第二网络节点可以将要发往第一网络节点的控制消息转发到第一网络节点。特别地,第二网络节点和控制器之间的控制连接可以是与第一网络节点与控制器之间的发生故障的控制连接不同的控制连接,或者是在第一网络节点集成到网络中并且(物理地)连接到第二网络节点之前已建立的控制连接。

根据第三方面或第三方面的第一种实现方式,在第三方面的第二种实现方式中,所述网络事件是指没有可用的与控制器的控制连接;或者是指与控制器的控制连接发生故障,并且与所述网络事件相关的信息包括要发往所述控制器的所述第一网络节点的控制消息。

因此,如上所述,要发往SDN控制器的第一网络节点的控制消息可以被路由/重新路由到第二网络节点,然后该第二网络节点处理第一网络节点的控制流量。这允许将新的网络节点无缝集成到网络中或从发生故障的控制连接中恢复,因为第二网络节点能够在第一网络节点与控制器之间中继控制流量。此外,中继可以一直进行,直到控制器选择了用于第一网络节点与控制器之间的控制连接的新路径,或者确认现有路径为用于第一网络节点与控制器之间的控制连接的新路径。

根据第三方面或第三方面的第一种或第二种可能的实现方式,在第三方面的第三种实现方式中,所述第二网络节点包括代理端口,并且用于将在代理端口处接收到的数据包转发到所述控制器,而无需分析在代理端口处接收到的数据包的内容。

因此,如上所述,第一网络节点可以检测到第二网络节点包括允许在第一网络节点与控制器之间中继控制流量的专用代理端口。当向代理端口传输控制消息时,该控制消息可以被转发到控制器,而无需分析该控制消息的内容。例如,可以默认将在代理端口处接收到的所有消息复制到第二网络节点与控制器之间的控制连接上。

根据第三方面或第三方面的第一种至第三种实现方式中的任一种实现方式,在第三方面的第四种实现方式中,所述第二网络节点还用于:更新其数据流表,以将所述第一网络节点的控制消息转发到所述控制器;和/或更新其数据流表,以将要发往所述第一网络节点的所述控制器的控制消息转发到所述第一网络节点。

因此,如上所述,在中继第一网络节点的控制流量时,第二网络节点可以更新其数据流表以反映中继。例如,第二网络节点可以更新其数据流表,以指示将第一网络节点的控制消息通过第二网络节点的控制连接转发到所述控制器。

此外,第二网络节点可以更新其数据流表,以指示将要发往第一网络节点的控制器的控制消息转发到第一网络节点。因此,第二网络节点可以在没有控制器介入的情况下自动改变其数据流表,以反映其关于第一网络节点与控制器之间交换的控制消息的中继状态。因此,尽管由控制器管理,但是第二网络节点的数据流表可以自动适应于允许控制数据中继。

根据第三方面的第四种实现方式,在第三方面的第五种实现方式中,所述第二网络节点还用于向所述控制器发送包含更新后的数据流表的指示的控制消息。

因此,如上所述,控制器能够维护分配给控制器的所有网络节点的所有转发规则的更新后的集中化视图,因此能够决定,例如,是否或如何重新设计控制连接路径。

根据第三方面的第五种实现方式,在第三方面的第六种实现方式中,所述控制器用于:接收包含所述第一网络节点的更新后的数据流表的指示的控制消息;基于所接收到的指示执行路径优化算法;控制所述第一网络节点的数据流表,以用于所述第一网络节点向第三网络节点发送要发往所述控制器的所述第一网络节点的控制消息。

因此,控制器可以将关于更新后的数据流表的指示作为执行路径优化算法的起始点,基于该路径优化算法,可以通过第二网络节点中继的控制消息来更新第一网络节点的数据流表,从而通过第三网络节点与控制器建立新的控制连接。此外,可以将第二网络节点的数据流表更新为不再在第一网络节点与控制器之间中继控制消息。然而,在另一实现方式中,在新建立的控制连接发生故障,并且第一网络节点被强制(再次)通过第二网络节点向控制器传送控制消息的情况下,可以维持第二网络节点的数据流表以提供路径冗余。

根据第三方面或第三方面的第一种至第六种实现方式中的任一种实现方式,在第三方面的第七种实现方式中,要发往所述控制器的所述第一网络节点的控制消息包含唯一的控制器标识。如上所述,具有唯一的控制器标识允许第二网络节点决定要向哪个控制器转发控制消息,例如,在第二网络节点与超过一个控制器建立了主动控制连接的情况下。类似地,通过具有第一网络节点的唯一标识,控制器识别出中继的控制消息源自第一网络节点的过程可以更有效的进行。此外,第二网络节点可以更容易识别出接收到的控制消息要发往第一网络节点。然而,本发明并不限于将第一网络节点的唯一标识添加或分配到由第二网络节点中继的控制消息中,因为也可以考虑其他机制。例如,第二网络节点可以具有代理端口,并且可以用于将通过代理端口接收到的每一个消息复制到与控制器的控制连接上。

根据第三方面或第三方面的第一种至第七种实现方式中的任一种实现方式,在第三方面的第八种实现方式中,所述控制器指定的条件为接收来自特定源节点的特定数据包。

特别地,如上所述,数据包可以通过在其包头中携带指示而变得具体,该指示指示该数据包是与该条件相关的控制消息。

根据本发明的第四方面,提供了一种通信网络中的方法,所述通信网络包括:第一网络节点和第二网络节点,其中,第一网络节点和第二网络节点均具有标识要应用于传入数据包的转发规则的数据流表,并且均用于允许通过控制消息控制数据流表,所述控制消息是通过与所述通信网络中的控制器的控制连接接收到的;所述方法包括:确定网络事件的发生或对所述控制器指定的条件的遵从;建立所述第一网络节点与所述第二网络节点之间的控制连接;通过所述控制连接与所述第二网络节点交换控制消息。

因此,如上所述,可以通过网络节点发起的网络节点之间的控制消息交换来加快网络重新配置。

根据本发明的第五方面,提供了一种在通信网络中中继第一网络节点的控制消息的方法,所述第一网络节点具有标识要应用于传入数据包的转发规则的数据流表,并且允许通过控制消息控制所述数据流表,其中,所述控制消息是通过与控制器的控制连接接收到的。所述方法包括:确定没有可用的与控制器的控制连接或者与控制器的控制连接发生故障;与第二网络节点建立连接;以及通过所建立的连接向第二网络节点发送要发往控制器的第一网络节点的控制消息。

因此,如上所述,要发往控制器的第一网络节点的控制消息能够被路由/重新路由到第二网络节点,然后该第二网络节点处理第一网络节点的控制流量。这允许将新的网络节点集成到网络中或从发生故障的控制连接中恢复,因为第二网络节点在第一网络节点与控制器之间中继控制流量。

根据本发明的第六方面,提供了一种第二网络节点在通信网络中转发第一网络节点的控制消息的方法,所述第二网络节点具有标识要应用于传入数据包的转发规则的数据流表,所述第二网络节点允许通过控制消息控制所述数据流表,其中,所述控制消息是通过与控制器的控制连接接收到的;所述方法包括:所述第二网络节点向所述控制器转发第一网络节点的控制消息。

因此,第二网络节点可以使用其与控制器之间的最初仅用于处理第二网络节点的控制流量的控制连接,以允许第一网络节点获得或重新获得用于与控制器交换控制消息的传输路径。

本发明的这些和其它方面将通过以下描述的实施例变得显而易见。

附图说明

现结合附图仅通过例子来描述本发明的若干实施例,其中:

图1是可以实现本发明各方面的通信网络的示意图;

图2示意性地示出了可以示例性地实现本发明各方面的一种修改后的OpenFlow通信网络;

图3示意性地示出了可以示例性地实现本发明各方面的另一种修改后的OpenFlow通信网络;

图4示意性地示出了可以示例性地实现本发明各方面的另一种修改后的OpenFlow通信网络;

图5示出了在通信网络中实现的一种过程的流程图;

图6示出了在通信网络中实现的另一种过程的流程图;

图7示出了两个交换机的示例性数据流程表;

图8示意性地示出了可以示例性地实现本发明各方面的另一种修改后的OpenFlow通信网络;

图9示出了在通信网络中实现的另一种过程的流程图。

具体实施方式

图1所示的通信网络10包括通过多个链路互连的(SDN)控制器12和多个网络节点14-28。网络节点14-28可以包括存储器和处理器。处理器可以执行存储在存储器中的指令,以执行涉及网络节点14-28的过程步骤。网络节点14-28中的一些或全部节点可以是交换机,例如以太网交换机。网络节点14-28中的每一个节点具有存储在其存储器中的标识要应用于可用数据包的转发规则的数据流表。可用数据包可以是通过网络连接接收到的数据包,或者是由网络节点14-28生成的数据包。每个可用的数据包与转发规则相匹配,如果识别出匹配的转发规则,则根据该匹配的转发规则的指示,向相邻网络节点14-28转发数据包。此外,转发规则可以是确定要对每个可用数据包执行的动作的规则集的一部分。

如图1所示,网络节点14-28通过例如电缆或电线等多个(物理)链路或空中接口相互连接,该空中接口可以用于使用无线传输协议传输数据包。在这方面,应当注意,尽管图1仅示出了连接的网络节点14-28之间的一个特定链路,但是网络节点14-28可以包括多个端口,并且每个链路可以启用多个连接。每个连接可以连接两个不同网络节点14-28的端口。例如,如图1所示,第一网络节点14可以连接到第二网络节点16,也可以连接到与第一网络节点14相邻的第三网络节点18。

第一网络节点14可以维持与控制器12的端到端控制连接。在一个示例中,该控制连接的传输路径可以涉及网络节点20和24,可以参考所涉及的网络节点20和24的用于传送控制消息的端口来定义该控制连接的传输路径。此外,第二网络16节点也可以维持与控制器12的端到端控制连接。在一个示例中,该控制连接的传输路径可以涉及网络节点24。该控制连接允许控制器12向网络节点14和16发布控制消息,以控制网络节点14和16的数据流表。包括该控制连接的所有连接最初可以由控制器12控制,从而可以存在控制器12知道用于在通信网络10中传输消息的每个路径的时刻。

如现有的SDN技术所示,中间网络节点在控制器与网络节点之间的控制连接中充当纯粹的数据包转发元件。中间网络节点并不知道在控制器和网络节点之间交换的控制消息的内容。因此,网络节点之间没有控制连接。总之,在控制器和网络节点之间一直存在控制连接。然而,本申请解释了如何实现网络节点之间的控制连接,以及这种新型控制连接如何有利于SDN网络。

如图1中的虚线所示,当连接第一网络节点14和网络节点20的链路发生故障时,第一网络节点14和控制器12之间的控制连接也可能发生故障。响应于检测到第一网络节点14和控制器12之间的控制连接发生故障,第一网络节点14可以从可用的相邻网络节点16和18中选择第二网络节点16,并向第二网络节点16发送其控制消息以用于中继。

第二网络节点16可以通过专用代理端口接收第一网络节点14的控制消息,或者可以通过解析接收到的控制消息来确定控制消息要发往控制器12。然后,第二网络节点16可以通过其控制连接向控制器12发送控制消息。因此,存在最初知道用于在通信网络10中传输消息的每条路径的控制器12通过不知道的路径接收控制消息的时刻。因此,第一网络节点14可以在没有控制器12介入的情况下本地作出如何处理发生故障的控制连接的决定。

因此,第一网络节点14可以打开与相邻的第二网络节点16的本地连接,而不是尝试端对端打开与控制器12的新的控制连接,并且可以采用与相邻的第二网络节点16的本地连接发送和接收其控制流量。如果与第二网络节点16的连接发生故障,例如,由于物理链路或端口故障,第一网络节点14可以打开与第三网络节点18的新连接,以通过第三网络节点18到达控制器12,该第三网络节点18在第一网络节点14和控制器12之间中继控制流量(恢复策略)。或者,第一网络节点14可以例如通过维持与第三网络节点18的主动连接来,然后,该第三网络节点18可以开始在第一网络节点14和控制器12之间中继控制流量(保护策略)。

此外,除了从发生故障的控制连接中恢复或保护第一网络节点14免受发生故障的控制连接的影响之外,还可以在最初将第一网络节点14添加到通信网络10时实施第二网络节点16中继控制流量。例如,在最初将第一网络节点14添加到通信网络10时,第一网络节点14可能需要与控制器12建立控制连接,从而使得控制器12知道其存在,并允许控制器12通过在网络节点14-28的数据转发表中添加转发规则将第一网络节点14集成到系统中,从而使得第一网络节点14可达。然而,第一网络节点14可以向第二网络节点16发送其控制消息,而非尝试与控制器12(端到端)建立新的控制连接,如上所述,第二网络节点16可以在第一网络节点14和控制器12之间中继控制流量。然后,控制器12可以修改网络节点24和20的转发规则,从而通过网络节点24和20建立控制器12和第一网络节点14之间的(端到端)控制连接。此外,控制器12可以修改网络节点14-28中的部分或全部节点的转发规则,从而将第一网络节点14集成到网络10中。

下面结合图2至4描述了本发明各方面在修改后的OpenFlow通信网络中的实现示例。

图2示出了修改后的OpenFlow通信网络100,其包括添加有网络节点(以下“交换机”114、116和118)的控制器112。请注意,现有的OpenFlow规范(参见“OpenFlow交换机规范版本1.5.1”,可从以下网址获得:https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-switch-v1.5.1.pdf)仅需要使用控制器DNS或IP地址(以下简称IPC)配置网络节点。另外,可以指定非标准的TCP端口。因此,有必要在交换机114、116和118中以IP路由表的形式配置数据流表,从而使得它们可以向控制器12发送IP包,并从控制器12取回IP包。在标准的OpenFlow通信网络中,该要求例如能够通过静态手动路由预配置或通过执行OpenFlow的其他初步机制得到满足,从而获取用于所有交换机的IP转发的一些初始配置。反过来,这种可能尚未建立的机制不应该依赖于IP路由。

在图2中的修改后的OpenFlow通信网络100中,通过采用上述原理来避免通过静态手动路由预配置或OpenFlow机制的附加初步设置来获取用于所有交换机的IP转发的一些初始配置,如将在以下详细说明。OpenFlow通信网络100包括连接到第二交换机114的第一交换机116,该第二交换机116连接到控制器112。因为第二交换机116直接连接到控制器112,当第二交换机116的交换接口被启动和初始化时,到控制器112的路径可直接作为本地IP网络前缀路由。因此,在这种情况下,第二交换机116中不需要IP路由表初始化。直接连接到第二交换机116而不是直接连接到控制器112的第一交换机114可以遵循上述过程打开与相邻的第二交换机116的连接并且将该连接用于中继其控制流量。此外,第一交换机114的IP路由表也不需要预先初始化。

当交换机114、116或118连接到邻节点(不管该邻节点是控制器112还是另一个交换机118、116或114)时,该邻节点可以与控制器112交换“Hello”消息。当从第一交换机114接收到“Hello”消息时,控制器112可以记录该消息到达的接口,即中继该消息的第二交换机116。因此,第二交换机116可以用于向第一交换机114中继未来消息。当第二交换机116路由已经从第一交换机114接收到的交换机118的控制消息时,交换机116可以在其数据流表中添加指示第一交换机114将用于到达交换机118的表项。因此,当控制器112发送要发往交换机118的控制消息,并且该控制消息到达第二交换机116时,第二交换机116将使用该路由表项将该消息中继到第一交换机114。同样情况也可能在第一交换机114处发生。

图3示出了进一步修改后的OpenFlow通信网络200,其包括与网络节点(以下交换机214、216和218)连接的控制器212。

特别地,第一交换机214与中间交换机220连接,从而通过中间交换机220与控制器212端对端交换控制消息。如果第一交换机214和中间交换机220之间的链路发生故障,如图3中的虚线所示,第一交换机214可以与相邻交换机216或218建立连接,例如,与第二交换机216建立连接,并且通过第二交换机216继续发送其控制流量。此外,第一交换机214可以预先设置并且维持除了与中间交换机220的直接连接之外的许多其他连接,并且一旦检测到上述故障就开始使用这些连接。例如,第一交换机214可以随机选择其相邻交换机216或218(或与它们的连接)中的一个用于中继控制流量。此外,可以在与相邻交换机216或218建立连接时传送权重值,该权重值用于对它们排名,可以选择它们当中最佳的一个。例如,可以基于与交换机连接的许多相邻交换机计算权重值。

此外,一旦中间交换机220注意到第一交换机214的控制流量通过第二交换机216路由,中间交换机220可以相应地更新其数据流表。此外,如果控制器212通过与之前不同的交换机从第一交换机214接收到控制消息,则控制器212可将其解释为已经发生了拓扑变化并且要发往第一交换机214的控制流量需要使用不同的路径的指示。控制器212可以通过各种方式对该信息进行反应。例如,控制器212可以简单地更新其数据流表,并且使用新路径向第一交换机214发送控制流量。此外,控制器212可以重新计算修改后的OpenFlow通信网络200中的路径,并向第一交换机214发送控制消息,以命令第一交换机214使用例如交换机218等不同的相邻交换机来与控制器212交换控制消息。这可以作为周期性路径校正任务来运行,以便在没有控制器介入的情况下解决交换机212-220自动选择的路径时可能存在的低效率问题。

此外,为了检测中间交换机220处的链路故障或端口故障,例如双向转发检测(Bidirectional Forwarding Detection,简称BFD)等协议可以由第一交换机214和中间交换机220本地使用,从而(使用keepalive定时器并通过重新传输keepalive消息)快速检测到故障。

在图1-3中的通信网络10、100和200中,消息可以包括包头,该包头包括两个(唯一)标识,该标识标识消息的源地和目的地。例如,在控制器112或212与交换机114-118和交换机214-220中的任何一个之间发送的每个OpenFlow数据包或消息分别可以包括具有(唯一)源地标识和(唯一)目的地标识的以下修改的OpenFlow包或消息包头:

因此,在控制器112或212与网络节点14-28、交换机114-118和交换机214-220中的任何一个之间交换的控制消息分别可以包括(唯一)控制器标识符以及(唯一)网络节点或交换机标识。

在修改后的OpenFlow网络100和200中,例如交换机114-118和214-220等修改后的OpenFlow客户端可以充当OpenFlow代理(或代理),用于将接收到的OpenFlow消息从交换机114-118或交换机214-220中继到控制器112或212,以及将接收到的OpenFlow消息从控制器112或212回发到如上所述的实际目的地。在这方面,结合图4中的修改后的OpenFlow网络300来描述控制连接建立的可能操作。

在图4中的修改后的OpenFlow网络300中,第一交换机314在例如端口6654等明确定义的OpenFlow端口处打开TCP连接,其中,有效负载是带有上述修改后的包头的OpenFlow消息。接收OpenFlow消息的相邻第二交换机316从接收到的OpenFlow消息的修改后的包头中检查目的地标识(destination identifier,简称dest_id),并将OpenFlow消息重定向到其到目的地即控制器312的自身连接。因此,第二交换机316使用其自身可能存在的与控制器312的连接来处理来自相邻的第一交换机314的OpenFlow流量。

为了支持(稳定)端到端通道(例如,OpenFlow规范中的TLS),例如第二交换机316等中间交换机不需要甚至不能通过设计读取传送的OpenFlow消息,可以使用代理端口。代理端口可以是充当OpenFlow代理(或代理)的第二交换机316的预留TCP端口。OpenFlow代理(或代理)可以通过用于在代理端口处侦听传入的TCP连接打开请求来支持代理端口。在接收到传入的TCP连接打开请求时,OpenFlow代理(或代理)可以用于建立TCP连接,并将数据从已建立的TCP连接复制到与控制器312的现有控制连接上。因此,OpenFlow代理(或代理)可以充当所请求的第一交换机314的TCP代理或TCP到TLS代理。

图5示出了在通信网络10、100、200和300之一中中继第一网络节点14(或交换机114、214或314)的控制消息的过程400。第一网络节点14(或交换机114、214或314)具有标识要应用于传入数据包的转发规则的数据流表,并且允许通过控制消息来控制数据流表,该控制消息是通过与控制器12(或112、212或312)的控制连接接收到的。在步骤410中,第一网络节点14(或交换机114、214或314)确定没有可用的与控制器12(或112、212或312)的控制连接,或者与控制器12(或112、212或312)的控制连接发生故障。该过程继续进行到步骤420:与第二网络节点16(或交换机116、216或316)建立(端到端)连接。最后,在步骤430中,该过程结束于通过已建立的连接将要发往控制器12(或112、212或312)的第一网络节点14(或交换机114、214或314)的控制消息发送到第二网络节点(或交换机116、216或316)。

图6示出了第二网络节点16(或交换机116、216或316)在通信网络10(或者100、200或300)中转发第一网络节点14(或交换机114、214或314)的控制消息的过程500。第二网络节点16(或交换机116、216或316)具有标识要应用于传入数据包的转发规则的数据流表,并且第二网络节点16(或交换机116、216或316)允许通过控制消息来控制数据流表,该控制消息是通过与控制器12(或112、212或312)的控制连接接收到的。在步骤510中,第二网络节点(或交换机116、216或316)向控制器12(或者112、212或者312)转发通过第一网络节点14(或交换机114、214或314)与第二网络节点之间的(端到端)连接接收到的第一网络节点14(或交换机114、214或314)的控制消息。

图7示出了物理上连接的两个网络节点,例如修改后的OpenFlow交换机S1和S2,以及示出了它们的数据流表600和610。S2的数据流表610包含数据流表项,其指示在接收到与“匹配3”匹配的数据包(可以是任意的)时,必须执行动作“向S1发送FlowMod_F”。因此,当网络事件发生(例如,数据包匹配“匹配3”)时,交换机S2可以向交换机S1发送数据流规则。

当交换机S1接收到来自交换机S2的FlowMod_F时,其数据流表中的第一个数据流规则被触发。该数据流规则告诉交换机S1应将接收到的FlowMod(数据流规则)存储在其数据流表中,并像其他数据流规则一样开始使用它。在这方面,应注意的是,尽管交换机S1和交换机S2在图7中显示为物理上连接的,但是概念不限于此,交换机S1和S2可以是远离的并且通过例如中间交换机等中间网络节点进行相互通信。相反,交换机S2可以向交换机S1发送数据流规则,并且交换机S1可以像来自控制器的数据流规则一样使用该数据流规则。

此外,交换机S1的流表600中的第一个数据流规则不是必需的,尽管其可能有助于解决潜在的安全问题。此外,数据流表600和610中的所有数据流规则可以源自控制器。因此,在第一交换机S1和第二交换机S21中可能不需要控制逻辑运行。因此,可以将交换机S1和S2维持为恰好匹配数据包并在匹配发生时执行规则的转发设备。此外,交换机S2可以存储数据流表项优先级更新动作,并且当匹配3发生时将其发送到交换机S1。然后,S1可以在接收到来自交换机S2的消息时改变流规则优先级。

图8示意性地示出了可以示例性地实现关于图7描述的概念的另一种修改后的OpenFlow通信网络700。虽然移动节点M1附接到例如接入点AP1等第二网络节点(其可以是交换机),但担任控制器角色的移动性管理应用(mobility management application,简称MMA)可以在例如相邻接入点AP2等第一网络节点(其也可以是交换机)中预先配置数据流规则,以向AP1发送FlowMod。该FlowMod可以指示AP1将M1的DL流量转发到AP2。MMA也可以在AP2上安装数据流规则,该AP2将M1的上行流量转发到另一个网络节点,例如交换机SW4。在AP1中,MMA可以安装与来自AP2的数据包相匹配的规则,作为安装所请求的数据流规则的动作。

当M1切换到AP2时,可能会触发FlowMod向AP1的迁移。因此,可以将FlowMod发送到AP1。AP1可以将其存储在其流表中。因此,(由于新安装的数据流规则)M1将有更多的下行数据包从AP1流向AP2。此外,M1的上行流量可以转发给SW4。因此,上行流量可以遵循新路径。因此,控制器可以将移动节点的切换的处理步骤分流到接入点(交换机)。因此,可以实现更好的性能、更高级别的可编程性,并且可以节省控制器的计算周期。此外,到达的系统可能假定底层交换机的硬件抽象略有不同,但其为程序控制应用提供了更广泛的可能性,并节省了控制器的资源。

图9示出了通信网络10、100、200、300和700之一中的过程800,该通信网络10、100、200、300和700之一包括第一网络节点14(或交换机114、214、314或AP2)和第二网络节点16(或交换机116、216、316或AP1)。第一网络节点14(或交换机114、214、314或AP2)和第二网络节点16(或交换机116、216、316或AP1)均具有标识要应用于传入数据包的转发规则的数据流表,并允许通过控制消息来控制数据流表,所述控制消息是通过与控制器12(或112、212、312或MMA)的控制连接接收到的。在步骤810中,检测到网络事件的发生(例如,控制连接故障)或者对控制器12(或112、212、312或MMA)指定的条件(例如切换)的遵从。在步骤820中,建立第一网络节点14(或交换机114、214、314或AP2)与第二网络节点16(或交换机116、216、316或AP1)之间的(端到端)控制连接。最后,在步骤830中,通过该控制连接在第一网络节点14(或交换机114、214、314或AP2)与第二网络节点16(或交换机116、216、316或AP1)之间交换(端到端)控制消息。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1