Sdn网络中建立隧道的方法和装置的制造方法_2

文档序号:8383626阅读:来源:国知局

[0033]本例中,在端点设备上将隧道虚拟化为一个对应的逻辑端口(隧道端口),隧道端口的属性中包括对应的隧道的封装信息和在本端点设备上的物理出接口 ;当需要建立隧道时,控制器向隧道的端点设备下发隧道端口创建消息,在创建消息中携带对应于所创建隧道端口的隧道的封装信息和在本端点设备上的物理出接口。
[0034]隧道的封装信息根据所建立隧道的传输协议(也称为封装协议)的不同而不同。例如,对二层隧道,隧道报文的外层源MAC地址通常是作为隧道起点的端点设备的MAC (Media Access Control,媒体接入控制)地址,外层目的MAC地址通常是作为隧道终点的端点设备的MAC地址,封装信息中包括外层源MAC地址和外层目的MAC地址;对三层隧道,隧道报文的外层源MAC地址和外层源IP地址通常是作为隧道起点的端点设备的MAC地址和IP地址,外层目的IP地址通常是作为隧道终点的端点设备的IP地址,而外层目的MAC地址通常是下一跳网络设备(根据控制器计算的转发路径确定)的MAC地址,封装信息中包括外层源和目的MAC地址、源和目的IP地址;对MPLS隧道,其封装信息中包括标签,如果隧道属于某个服务实例,MPLS标签将对应于该服务实例。
[0035]在控制器和端点设备上,往往以端口号来作为各个逻辑端口或物理端口的标识,控制器通常在下发隧道端口创建消息时指定隧道端口的端口号。可以为隧道端口划分一个端口号取值范围,为物理端口和其他逻辑端口划分另一个不同的端口号取值范围,隧道端口的端口号范围不同于其他端口的端口号范围,这样端点设备通过端口号即可判定该端口是否是隧道端口。
[0036]在端点设备上,步骤310,接收控制器的隧道端口创建消息;该创建消息中包括隧道的封装信息和在本端点设备上的物理出接口。
[0037]在端点设备上,步骤320,根据隧道端口创建消息中隧道的封装信息和在本端点设备上的物理出接口生成对应于该隧道端口的隧道表。
[0038]端点设备收到控制器下发的隧道端口创建消息,创建逻辑端口作为隧道端口,根据创建消息生成对应于该隧道端口的隧道表。隧道表的表项结构及其内容可以根据端点设备的具体实现不同而不同,通常来说包括入隧道表项和出隧道表项,其中入隧道表项用来将以本端点设备为隧道起点的原始报文封装为隧道报文后转发,包括封装信息和物理出接口 ;出隧道表项用来将以本端点设备为隧道终点的隧道报文解封装,包括解封装所需的信息。因此,可以根据创建消息中的封装信息和物理出接口来生成入隧道表项,根据创建消息中的封装信息来生成出隧道表项。
[0039]在为隧道端口生成对应的隧道表后,控制器和端点设备可以通过隧道端口来引用对应的隧道表,完成原始报文的入隧道处理。
[0040]在控制器上,步骤220,向端点设备下发以该隧道端口为出接口的流表,该流表用于指令该端点设备在将匹配该流表的原始报文按照该隧道接口的封装信息进行封装后,从该隧道接口的物理出接口发送。
[0041]根据具体的应用场景,控制器可以在各种情况下向端点设备下发使用该隧道转发原始报文的流表。例如,当端点设备收到未能匹配现有流表的原始报文时,向控制器上送该原始报文,控制器根据该原始报文的目的地址确定将通过隧道转发,则向端点设备下发使用该隧道转发的流表。再如,控制器可以在收到源IP地址与目的IP地址之间的转发路径包括隧道的ARP报文后,由于即将有通过该隧道转发的原始报文,向端点设备下发使用该隧道转发的流表。
[0042]控制器向端点设备下发的使用隧道转发的流表,以该隧道对应的隧道端口为出接口。以隧道端口为出接口的流表用来指令端点设备在收到匹配该流表的原始报文后,将原始报文按照该隧道接口的封装信息封装为隧道报文后,从该隧道接口的物理出接口发送该隧道报文。流表的匹配项可以参照现有技术中通过隧道转发的流表的匹配项,不再赘述。
[0043]在端点设备上,步骤330,接收控制器下发的以该隧道端口为出接口的流表。端点设备将控制器下发的流表保存在本地。
[0044]在端点设备上,步骤340,将匹配该流表的原始报文按照对应于该隧道端口的隧道表中的封装信息进行封装后,从该隧道表中的物理出接口发送。
[0045]当端点设备收到来自主机的原始报文后,查找能够匹配该原始报文的流表。如果匹配该原始报文的流表的出接口是隧道端口,则查找对应于该隧道端口的隧道表,从中获得该隧道端口的封装信息和物理出接口。端点设备利用封装信息将原始报文封装为隧道报文,并将隧道报文从物理出接口发送。
[0046]需要说明的是,本例中控制器下发的以隧道端口为出接口的流表中不包括隧道的封装信息和物理出接口,端点设备也不需要在该流表中填充这些内容;而是由端点设备引用该隧道端口对应的隧道表来获得封装信息和物理出接口。
[0047]控制器可以通过向隧道实际传输路径上的各个网络设备下发流表的方式,为匹配外层封装的标签或地址的隧道报文指定出接口,来将隧道报文传输到作为隧道终点的端点设备。当作为隧道终点的端点设备收到以本设备为目的地的隧道报文后,在隧道表中查找该隧道报文的解封装信息,根据解封装信息将隧道报文解封装为原始报文,并根据原始报文匹配的流表进行转发。本例中出隧道报文的处理过程与现有技术一致,不再赘述。
[0048]本例中将隧道虚拟化为对应的隧道端口,控制器通过指令端点设备创建隧道端口来建立隧道,通过下发隧道端口的属性来下发对应隧道的封装和路径信息,控制器在指令端点设备利用隧道转发时即可通过隧道端口来引用封装和路径信息,从而可以实现控制器对隧道创建、隧道转发路径的集中控制,为达到更好的流量控制奠定了基础。
[0049]进一步的,由于各种原因,控制器可能需要更改隧道在端点设备上的封装信息、物理出接口等。例如,当原来隧道的传输路径上发生链路故障时,需要更改传输路径以避免转发中断;再如,当原来隧道传输路径上流量过大时,也可以更改传输路径,这两种情况下可能都需要更改物理出接口。当变更隧道在端点设备上的封装信息和/或物理出接口时,控制器向端点设备下发该隧道对应的隧道端口的修改消息,在修改消息中携带变化后的封装信息和/或物理出接口。端点设备收到控制器下发的隧道端口的修改消息后,根据修改消息更新对应于该隧道端口的隧道表。这样,当后续匹配以该隧道端口为出接口的流表的原始报文到达端点设备时,将采用更新后的封装信息和/或物理出接口来进行该原始报文的封装和转发,避免了在隧道信息发生变化时更新流表,减少了控制器和交换机之间的流表更新报文,降低了流表更新对端点设备性能的影响。
[0050]当SDN网络中不再需要某个隧道时,控制器可以指令该隧道的端点设备删除该隧道。控制器向该隧道的端点设备下发对应的隧道端口的删除消息;端点设备收到隧道端口的删除消息后,删除该隧道端口对应的隧道表和以该隧道端口为出接口的流表。
[0051]本例中,控制器向端点设备下发的隧道端口创建消息、隧道端口修改消息和隧道端口删除消息可以采用自定义的格式,也可以采用现有SDN控制消息的扩展形式。例如,在Openflow(开放流)协议的SDN网络中,控制器可以采用Port Modificat1n Message(端口更改消息)来更改被管理设备上的端口属性,端口更改消息中Config字段的定义如下所示:
[0052]enum ofp—port—config{
[0053]0FPPC—PORT—DOWN = l〈〈0,/*Port is administratively down.*/
[0054]0FPPC—NO—RECV = l〈〈2,/*Drop all packets received by port.*/
[0055]0FPPC—NO—FWD = l〈〈5,/*Drop packets forwarded to port..*/
[0056]0FPPC—TUNNEL—CRE = 1?7, ACreate Tunnel Port.*/
[0057]0FPPC—TUNNEL—MODIFY = 1?8, AModify Tu
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1