一种虚拟可扩展局域网报文的转发方法和装置的制造方法

文档序号:10626693阅读:843来源:国知局
一种虚拟可扩展局域网报文的转发方法和装置的制造方法
【专利摘要】本发明实施方式提出一种虚拟可扩展局域网(VxLAN)报文的转发方法和装置。该方法应用于第一虚拟化开放流交换机(OVS),包括:从软件定义网络(SDN)控制器接收流表项,该流表项携带有VxLAN报文地址信息以及第一OVS上的第一上行链路(Uplink)端口,该流表项用于将从下挂在所述第一OVS上的源虚拟机接收到的、目的虚拟机下挂在第二OVS上的原始报文发送到第一OVS上的第一VxLAN端口,并由第一VxLAN端口为该原始报文附加包含VxLAN报文地址信息的VxLAN报文头以形成VxLAN报文,并用于通过第一Uplink端口发送VxLAN报文。
【专利说明】
一种虚拟可扩展局域网报文的转发方法和装置
技术领域
[0001] 本发明实施方式属于网络通信技术领域,特别是一种虚拟可扩展局域网(Virtual Extensible Local Area Network, VxLAN)报文的转发方法和装置。
【背景技术】
[0002] 软件定义网络(Software Defined Network,SDN)技术通过将网络设备的控制平 面与数据平面分离,从而实现网络流量的灵活控制。相应地,SDN架构包括SDN控制器和SDN 交换机,其中:SDN控制器和SDN交换机之间通过优选为开放流(OpenFlow)协议的SDN管 理通道进行通信,SDN控制器根据用户的配置或者动态运行的协议生成流表下发到SDN交 换机,SDN交换机依据SDN控制器下发的流表进行报文处理。
[0003] VxLAN是一种用三层协议封装二层报文的技术,可以对二层网络在三层网络内进 行扩展。它应用于数据中心内部,使虚拟机(Virtual Machine,VM)可以在互相连通的三层 网络范围内迀移,从而保证业务的连续性。VxLAN是实现重叠(Overlay)网络的热门技术之 一。通过在物理网络的边缘设置VxLAN隧道终端(VxLAN Tunnel End Point,VTEP),可以 实现虚拟网络与物理网络的隔离。
[0004] 虚拟化开放流交换机(Open vSwitch,0VS)是一个开源的虚拟交换机。0VS可以支 持VxLAN协议,以增加对Overlay网络的支持。目前,0VS已经可以对报文进行VxLAN的头 封装,从而使用VxLAN技术来支持Overlay网络部署。然而,在现有技术的VxLAN转发中, 源虚拟机发出的报文需要经过多次查表以及IP入协议栈和IP出协议栈的处理才可以由目 的虚拟机接收,实现流程复杂,从而降低了报文转发效率。

【发明内容】

[0005] 本发明实施方式提出一种VxLAN报文的转发方法和装置,从而提高报文转发效 率。
[0006] 本发明实施方式的技术方案如下:
[0007] 本发明实施方式一方面提出了一种VxLAN报文的转发方法,所述方法应用于第一 0VS,该方法包括:
[0008] 从SDN控制器接收流表项,所述流表项携带有VxLAN报文地址信息以及所述第一 0VS上的第一上行链路Uplink端口,所述流表项用于将从下挂在所述第一 0VS上的源虚拟 机接收到的、目的虚拟机下挂在第二0VS上的原始报文发送到所述第一 0VS上的第一 VxLAN 端口,并由所述第一 VxLAN端口为该原始报文附加包含所述VxLAN报文地址信息的VxLAN 报文头以形成VxLAN报文,并用于通过所述第一 Uplink端口发送所述VxLAN报文。
[0009] 优选地,所述VxLAN报文地址信息包括下挂在所述第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在所述第二0VS上的第二VxLAN隧道终端的MAC地址以及所述第二 VxLAN隧道终端的IP地址。
[0010] 优选地,所述流表项包括匹配项和动作,其中所述匹配项包括源虚拟机的MAC地 址、目的虚拟机的MAC地址、源虚拟机的IP地址和目的虚拟机的IP地址,动作包括指定第 一 VxLAN端口为第一顺序出端口、携带VxLAN报文地址信息和指定所述第一 Uplink端口为 第二顺序出端口。
[0011] 本发明实施方式另一方面提出了一种VxLAN报文的转发方法,所述方法应用于第 二0VS,该方法包括:
[0012] 通过第二0VS上的第二上行链路Uplink端口接收第一 0VS上的第一 Uplink端口 发送的VxLAN报文,所述VxLAN报文是第一 0VS上的第一 VxLAN端口将原始报文附加包含 VxLAN报文地址信息的VxLAN报文头所形成的,其中所述原始报文由下挂在所述第一 0VS上 的源虚拟机发出;
[0013] 在所述第二Upl ink端口上剥离所述VxLAN报文头以恢复所述原始报文,将所述原 始报文发送到第二0VS上的第二VxLAN端口;
[0014] 在所述第二VxLAN端口,将所述原始报文发送到目的虚拟机。
[0015] 优选地,所述VxLAN报文地址信息包括下挂在所述第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在所述第二0VS上的第二VxLAN隧道终端的MAC地址以及所述第二 VxLAN隧道终端的IP地址。
[0016] 本发明实施方式一方面提出了一种VxLAN报文的转发装置,所述装置应用于第一 0VS,该装置包括:
[0017] 流表项接收模块,用于从SDN控制器接收流表项,所述流表项携带有VxLAN报文地 址信息以及所述第一 0VS上的第一 Uplink端口,所述流表项用于将从下挂在所述第一 0VS 上的源虚拟机接收到的、目的虚拟机下挂在第二0VS上的原始报文发送到所述第一 0VS上 的第一 VxLAN端口,并由所述第一 VxLAN端口为该原始报文附加包含所述VxLAN报文地址 信息的VxLAN报文头以形成VxLAN报文,并用于通过所述第一 Uplink端口发送所述VxLAN 报文。
[0018] 优选地,所述VxLAN报文地址信息包括下挂在所述第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在所述第二0VS上的第二VxLAN隧道终端的MAC地址以及所述第二 VxLAN隧道终端的IP地址。
[0019] 所述流表项包括匹配项和动作,其中匹配项包括源虚拟机的MAC地址、目的虚拟 机的MAC地址、源虚拟机的IP地址和目的虚拟机的IP地址,动作包括指定第一 VxLAN端口 为第一顺序出端口、携带VxLAN报文地址信息和指定所述第一 Uplink端口为第二顺序出端 □ 〇
[0020] 本发明实施方式一方面提出了一种VxLAN报文的转发装置,所述装置应用于第二 0VS,该装置包括:
[0021] VxLAN报文接收模块,用于通过第二0VS上的第二上行链路Uplink端口接收第一 0VS上的第一 Uplink端口发送的VxLAN报文,所述VxLAN报文是第一 0VS上的第一 VxLAN 端口将原始报文附加包含VxLAN报文地址信息的VxLAN报文头所形成的,其中所述原始报 文由下挂在所述第一 0VS上的源虚拟机发出;
[0022] 报文头剥离模块,用于在所述第二Uplink端口上剥离所述VxLAN报文头以恢复所 述原始报文,将所述原始报文发送到第二0VS上的第二VxLAN端口;
[0023] 报文发送模块,用于在所述第二VxLAN端口,将所述原始报文发送到所述目的虚 拟机。
[0024] 优选地,所述VxLAN报文地址信息包括下挂在所述第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在所述第二0VS上的第二VxLAN隧道终端的MAC地址以及所述第二 VxLAN隧道终端的IP地址。
[0025] 由此可见,本发明实施方式中,SDN控制器向0VS下发携带VxLAN报文地址信息和 指定出端口的流表项,从而0VS在执行VxLAN转发时可以在VxLAN端口自行封装包含VxLAN 报文地址信息的VxLAN报文头,并由指定出端口发送VxLAN报文,优化了 0VS支持VxLAN报 文的接收和发送流程,提高了 VxLAN报文的整体发送性能,有益于提高整个Overlay网络的 用户体验。
【附图说明】
[0026] 图1为现有技术中0VS支持VxLAN报文转发的示意图;
[0027] 图2为根据本发明实施方式,在源虚拟机所下挂的0VS侧的VxLAN报文转发方法 流程图;
[0028] 图3为VxLAN报文封装示意图;
[0029] 图4为根据本发明实施方式,在目的虚拟机所下挂的0VS侧的VxLAN报文转发方 法流程图;
[0030] 图5为根据本发明实施方式0VS支持VxLAN报文发送的示范性示意图;
[0031] 图6为图5中VxLAN报文发送的流程图;
[0032] 图7为根据本发明实施方式0VS支持VxLAN报文接收的示范性示意图;
[0033] 图8为图7中VxLAN报文接收的流程图;
[0034] 图9为根据本发明实施方式0VS支持VxLAN报文转发的示意图;
[0035] 图10为根据本发明实施方式,在源虚拟机所下挂的0VS侧的VxLAN报文的转发装 置结构图;
[0036] 图11为根据本发明实施方式,在目的虚拟机所下挂的0VS侧的VxLAN报文的转发 装置结构图。
【具体实施方式】
[0037] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步 的详细描述。
[0038] 图1为现有技术中0VS支持VxLAN报文转发的示意图。
[0039] 以图1中下挂在第一 0VS上的VM1与下挂在第二0VS上的VM3之间的通讯过程为 例,说明现有技术中0VS支持VxLAN报文转发的示范过程。
[0040] 在图1中:
[0041] 第一 0VS部署在主机1上,而且第一 0VS的端口 3为本地VxLAN端口,可称为 VxLanl端口;第一 0VS的端口 2为本地Uplink端口;第一 0VS的端口 1为本地VTEP的内部 (Internal)端口,该 Internal 端口的 MAC 地址:00-00-00-00-10-01,IP 地址:100. 1. 1. 1。
[0042] 第二0VS部署在主机2上,而且第二0VS的端口 3为本地VxLAN端口,可称为 VxLan2端口;第二0VS的端口 2为本地Uplink端口;第二0VS的端口 1为本地VTEP的 Internal 端口。该 Internal 端口的 MAC 地址:00-00-00-00-10-02, IP 地址:100. 1· 1· 2。
[0043] VM1 的 MAC 地址:00-00-00-00-00-01 ;VM1 的 IP 地址:192. 168. 1· 1。VM1 在第一 OVS 上的端口为端口 4。VM3 的 MAC地址:00-00-00-00-00-02 ;VM3 的 IP地址:192. 168. L 2 ; VM3在第二0VS上的端口为端口 4。
[0044] 在主机1侧,如图1的虚线11所示,第一 0VS从VM1接收到目的虚拟机为VM3的 原始报文,第一 0VS基于SDN控制器所下发的流表项1将原始报文发送到本地VxLanl端 口(即第一 0VS的端口 3)。然后,如图1的虚线12所示,该VxLanl端口为原始报文封装 VxLAN头,并将封装后的报文发到本地Internal端口(MAC地址:00-00-00-00-10-01 ;IP地 址:100. 1. 1. 1 ;端口为主机1的端口 1)。接着,如图1的虚线13所示,本地Internal端口 使能Linux本地协议栈(即IP入协议栈)为封装后的报文继续添加二层头以形成VxLAN 报文,并基于SDN控制器所下发的流表项2,将VxLAN报文发送到主机1的Uplink端口。
[0045] 在主机2侧,如图1的虚线14所示,主机2的Uplink端口从主机1的Uplink端 口接收VxLAN报文,并基于SDN控制器所下发的流表项3,将VxLAN报文发送到主机2的 Internal 口(MAC 地址:00-00-00-00-10-02 ; IP 地址:100. 1. 1. 2 ;端口 为主机 2 的端口 1)。 然后,如图1的虚线15所示,主机2的Internal 口使能Linux本地协议栈(即IP出协议 栈)剥掉VxLAN报文的二层头,再将剥离二层头后的报文发送给VxLan2端口。接着,如图 1的虚线16所示,VxLan2端口针对剥离二层头后报文继续剥离VxLAN头以获取原始报文, 并基于SDN控制器所下发的流表项4,将原始报文发送给VM3。
[0046] 表1为流表项1、流表项2、流表项3和流表项4的结构表。
[0047] 表 1
[0048]
[0049] 图3为VxLAN报文封装示意图。
[0050] 由图3可见,VxLAN报文包括原始报文和VxLAN报文头,VxLAN报文头包括二层 头和VxLAN头。二层头包括外部MAC目的地址、外部MAC源地址以及可选的802. 1Q字段。 VxLAN报文头包括外部IP目的地址、外部IP源地址和可选的VxLAN ID。具体地,在第一 0VS的VxLanl端口对原始报文封装VxLAN头;在第一 0VS的本地Internal端口为封装后 的报文继续添加二层头以形成VxLAN报文。当VxLAN报文发送到第二0VS时,第二0VS的 Internal端口从VxLAN报文中剥离二层头,并将剥离二层头后的报文发送到第二0VS的 VxLan2端口,第二OVS的VxLan2端口继续剥离VxLAN头以恢复原始报文,最后将原始报文 发送到目的虚拟机。
[0051] 从上述分析可见,在现有技术中,从VM1发出的报文需要经过四次0VS查表匹配以 及一次IP入协议栈处理和一次IP出协议栈处理才可以发送到VM3,实现流程复杂,降低了 报文转发效率。
[0052] 在本发明实施方式中,源虚拟机所下挂的0VS无需将原始报文转发到本地的 Internal端口以基于IP入协议栈处理添加二层头,而是直接在本地的VxLAN端口自行封装 包含二层头的VxLAN报文头,从而显著提升对VxLAN报文的发送性能。
[0053] 而且,在本发明实施方式中,接收VxLAN报文的0VS无需将VxLAN报文转发到本地 Internal端口以基于IP出协议栈处理剥离二层头,而是直接在本地的VxLAN端口剥离包含 二层头的VxLAN报文头,从而显著提升对VxLAN报文的接收性能。
[0054] 在本发明实施方式中,SDN控制器通过监控Overlay网络的ARP报文、邻居信息收 集、SSH登录到所管理的主机以获取VTEP IP的默认路由信息等多种方式,可以明确计算出 VxLAN发送时到不同的对端VTEP所需要的VxLAN报文地址信息(包括二层头中的MAC信息 以及对端VTEP地址信息)。因此,SDN控制器可以通过向0VS下发流表的方式,下发VxLAN 报文地址信息和指定出端口,从而0VS在执行VxLAN转发时就可以在VxLAN端口自行封装 包含二层头的VxLAN报文头,并由指定出端口发送VxLAN报文。
[0055] 图2为根据本发明实施方式,在源虚拟机所下挂的0VS侧的VxLAN报文转发方法 流程图。
[0056] 如图2所示,该方法包括:
[0057] 步骤201 :第一 0VS从SDN控制器接收流表项,该流表项携带有VxLAN报文地址信 息以及第一 0VS上的第一 Uplink端口,该流表项用于将从下挂在第一 0VS上的源虚拟机接 收到的、目的虚拟机下挂在第二0VS上的原始报文发送到第一 0VS上的第一 VxLAN端口, 并由第一 VxLAN端口为该原始报文附加包含VxLAN报文地址信息的VxLAN报文头以形成 VxLAN报文,并用于通过第一 Uplink端口发送VxLAN报文。
[0058] 在一个实施方式中,该流表项包括匹配项和动作,其中匹配项包括源虚拟机的MAC 地址、目的虚拟机的MAC地址、源虚拟机的IP地址和目的虚拟机的IP地址,动作包括指定 第一 VxLAN端口为第一顺序出端口、携带VxLAN报文地址信息和指定第一 Uplink端口为第 二顺序出端口。
[0059] 具体地,第一 0VS从源虚拟机接收到原始报文时,首先判断原始报文中携带的源 虚拟机的MAC地址、目的虚拟机的MAC地址、源虚拟机的IP地址和目的虚拟机的IP地址是 否与流表项的匹配项相匹配,当判定相匹配时,首先将原始报文转发到作为第一顺序出端 口的第一 VxLAN端口,并在第一 VxLAN端口封装包括VxLAN报文地址信息的VxLAN报文头 以形成VxLAN报文,再将VxLAN报文发送到作为第二顺序出端口的第一 Uplink端口,并由 第一 Uplink端口发送VxLAN报文。
[0060] 在这里,第一 0VS从SDN控制器接收到流表项后,可以从流表项中获取VxLAN报文 地址信息。在一个实施方式中,VxLAN报文地址信息包括下挂在第一 0VS上的第一 VTEP的 MAC地址(对应于图3中的外部MAC源地址)、下挂在第二0VS上的第二VTEP的MAC地址 (对应于图3中的外部MAC源地址)以及第二VTEP的IP地址(对应于图3中的外部IP目 的地址)。因此,第一 OVS可以在第一 VxLAN端口上,基于下挂在第一 OVS上的第一 VTEP的 MAC地址和下挂在第二0VS上的第二VTEP的MAC地址构建二层头。而且,由于在第一 0VS中 预先保存有下挂在第一 0VS上的第一 VTEP的IP地址(对应于图3中的外部IP源地址), 第一 0VS可以在第一 VxLAN端口上,基于从VxLAN报文地址信息中获取的第二VTEP的IP 地址(对应于图3中的外部IP目的地址)、下挂在第一 OVS上的第一 VTEP的IP地址、UDP 信息和可选的VxLAN ID构建VxLAN头。
[0061] 因此,当原始报文的目的虚拟机下挂在不同于第一 OVS的第二OVS上时,第一 OVS 可以为原始报文附加包含二层头和VxLAN头的VxLAN报文头,从而最终形成VxLAN报文,并 通过第一 Uplink端口发送VxLAN报文。
[0062] 步骤202 :第二0VS上的第二Uplink端口接收VxLAN报文并从VxLAN报文中剥离 VxLAN报文头以恢复原始报文,将原始报文发送到第二0VS上的第二VxLAN端口,并由第二 VxLAN端口将原始报文发送到目的虚拟机。
[0063] 在这里,第二0VS上的第二Uplink端口接收VxLAN报文后,直接从VxLAN报文中 剥离VxLAN报文头以恢复原始报文,并将原始报文发送到第二0VS上的第二VxLAN端口,从 而由第二VxLAN端口将原始报文发送到目的虚拟机。
[0064] 在一个实施方式中,当原始报文的目的虚拟机下挂在第一 0VS上时,不需要将原 始报文发送到第一 0VS上的VxLAN端口,而是直接将原始报文转发到第一 0VS上的非VxLAN 端口。具体地,包括:从SDN控制器接收转发非VxLAN报文的流表项,该转发非VxLAN报文 的流表项用于将从下挂在第一 0VS上的源虚拟机接收到的、目的虚拟机下挂在第一 0VS上 的原始报文发送到第一 0VS上的非VxLAN端口。
[0065] 基于上述分析,本发明还提出了一种在目的虚拟机所下挂的0VS侧的VxLAN报文 转发方法。
[0066] 图4为根据本发明实施方式,在目的虚拟机所下挂的0VS侧的VxLAN报文转发方 法流程图。
[0067] 如图4所示,该方法包括:
[0068] 步骤401 :第二0VS上的第二Up link端口接收第一 0VS上的第一 Up link端口发送 的VxLAN报文。该VxLAN报文是第一 0VS上的第一 VxLAN端口将原始报文附加包含VxLAN 报文地址信息的VxLAN报文头所形成的,其中原始报文由下挂在第一 0VS上的源虚拟机发 出。
[0069] 步骤402 :在第二Uplink端口上剥离VxLAN报文头以恢复原始报文,将原始报文 发送到第二0VS上的第二VxLAN端口。
[0070] 步骤403 :在第二VxLAN端口,基于从SDN控制器接收的流表项,将原始报文发送 到目的虚拟机。优选地,该流表项的匹配项包括原始报文的源地址和目的地址,动作包括指 定出端口为原始报文的目的虚拟机下挂在第二0VS上的端口。
[0071 ] 在一个实施方式中,VxLAN报文地址信息包括下挂在第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在第二0VS上的第二VxLAN隧道终端的MAC地址以及第二VxLAN隧 道终端的IP地址。
[0072] 在一个实施方式中,该方法还包括:
[0073] 第二0VS从SDN控制器接收用于转发非VxLAN报文的流表项。第二Up 1 ink端口从 第一 Uplink端口接收到非VxLAN报文时,第二OVS基于该用于转发非VxLAN报文的流表项 转发非VxLAN报文。优选地,用于转发非VxLAN报文的流表项的匹配项包括非VxLAN报文 的源地址和目的地址,动作包括指定出端口为非VxLAN报文的目的虚拟机下挂在第二0VS 上的端口。
[0074] 下面结合实例,详细说明根据本发明实施方式0VS支持VxLAN报文发送的过程。
[0075] 图5为根据本发明实施方式0VS支持VxLAN报文发送的示范性示意图。
[0076] 如图5所示:
[0077] 第一 0VS部署在主机1上,而且第一 0VS的端口 3为本地VxLAN端口,可称为 VxLanl端口;第一 0VS的端口 2为本地Uplink端口;第一 0VS的端口 1为本地VTEP的 Internal 端口,该 Internal 端口的 MAC 地址:00-00-00-00-10-01, IP 地址:100. 1. 1. 1。 VM1在第一 0VS上的接入端口为端口 4。
[0078] 第一 0VS从SDN控制器接收流表项1,该流表项1携带有VxLAN报文地址信息以 及第一 0VS的Uplink端口。具体地,参考图5及图7, VxLAN报文地址信息包括下挂在第一 0VS 上的第一 VTEP 的 MAC 地址(即 Internal 端口的 MAC 地址:00-00-00-00-10-01)、下挂 在第二0VS 上的第二 VTEP 的MAC地址(即 Internal 端口的MAC地址:00-00-00-00-10-02) 以及第二VTEP的IP地址(即IP地址:100. 1. 1. 2)。
[0079] 在主机1侧,如图5的虚线11所示,当第一 0VS从VM1接收原始报文,而且该原始 报文的目的虚拟机下挂在不同于第一 0VS的其它0VS上时,第一 0VS基于SDN控制器所下 发的流表项1将原始报文发送到本地VxLanl端口(即第一 0VS的端口 3)。然后,如图5的 虚线12所示,该VxLanl端口基于流表项1所携带的VxLAN报文地址信息,为该原始报文附 加包含VxLAN报文地址信息的VxLAN报文头以形成VxLAN报文。而且,该VxLanl端口还基 于流表项1,将VxLAN报文发送到第一 0VS的Uplink端口,从而由第一 0VS的Uplink端口 发送VxLAN报文。
[0080] 可见,相比现有技术VxLAN报文发送流程,本发明的VxLAN报文发送过程减少了一 次IP协议栈发送流程以及一次0VS查表转发过程。
[0081 ] 图6为图5中发送VxLAN报文的流程图。
[0082] 如图6所示,该方法包括:
[0083] 步骤601 :第一 0VS从VM1接收原始报文。
[0084] 步骤602 :第一 0VS判断该原始报文的出端口是否为VxLAN 口,如果是则执行步骤 604及其后续步骤,如果不是则执行步骤603。
[0085] 步骤603 :发送该原始报文,并结束本流程。
[0086] 步骤604 :在VxLAN 口,为原始报文封装VxLAN头。
[0087] 步骤605 :在VxLAN 口,为封装VxLAN头的报文继续封装二层头,从而形成VxLAN报 文。
[0088] 步骤606 :在Uplink端口发送VxLAN报文。
[0089] 下面结合实例,详细说明根据本发明实施方式0VS支持VxLAN报文接收的过程。
[0090] 图7为根据本发明实施方式0VS支持VxLAN报文接收的示范性示意图。
[0091] 如图7所示:
[0092] 第二0VS部署在主机2上,而且第二0VS的端口 3为本地VxLAN端口,可称为 VxLan2端口;第二OVS的端口 2为本地Uplink端口;第二OVS的端口 1为本地VTEP的 Internal 端口。该 Internal 端口的 MAC 地址:00-00-00-00-10-02, IP 地址:100. 1. 1. 2。 VM3 的 MAC 地址:00-00-00-00-00-02 ;VM3 的 IP 地址:192. 168. 1. 2 ;VM3 在第二 0VS 上的接 入端口为端口 4。
[0093] 在主机2侧,如图7的虚线13所示,主机2的Uplink端口从其它0VS的Uplink 端口接收VxLAN报文,从VxLAN报文中剥离VxLAN报文头以恢复原始报文,将原始报文发送 到第二0VS上的VxLAN端口。第二0VS上的VxLAN端口基于SDN控制器下发的流表项2,将 原始报文发送到目的虚拟机(比如VM3)。可见,相比现有技术流程,本发明的VxLAN报文接 收过程减少了一次IP协议栈接收流程以及一次0VS查表转发流程。
[0094] 图8为图7中接收VxLAN报文的流程图。
[0095] 如图8所示,该方法包括:
[0096] 步骤801 :第二0VS通过Uplink端口,从其它0VS接收到报文。
[0097] 步骤802 :第二0VS判断该接收到的报文是否为VxLAN报文,如果是则执行步骤 804及其后续步骤,如果不是则执行步骤803并结束本流程。
[0098] 步骤803 :转发该接收到的报文,并结束本流程。
[0099] 步骤804 :在Uplink端口,剥离VxLAN报文头,并将剥离VxLAN报文头的原始报文 发送到VxLAN 口。
[0100] 步骤805 :在VxLAN 口,转发该原始报文。
[0101] 表2为流表项1和流表项2的示范性结构表。
[0102] 表 2
[0103]
[0104] 图9为根据本发明实施方式0VS支持VxLAN报文转发的整体示意图,在图9中整 体合并了图5和图7。
[0105] 结合图9以及从上述详细分析可见,在本发明中,从VM1发出的报文只需经过两次 0VS查表匹配即可以发送到VM3,无需再执行IP入协议栈处理和IP出协议栈处理,因此本 发明降低了实现流程复杂,提高了报文转发效率。经过试验数据采集发现,本发明优化后的 性能指标比优化前的性能指标可以有30%以上的提升。
[0106] 基于上述详细分析,本发明实施方式还提出了在源虚拟机所下挂的0VS侧的 VxLAN报文的转发装置。
[0107] 图10为根据本发明实施方式,在源虚拟机所下挂的0VS侧的VxLAN报文的转发装 置结构图。
[0108] 如图10所示,该装置1000应用于第一 0VS(即源虚拟机所下挂的0VS),该装置 1000包括:
[0109] 流表项接收模块1001,用于从SDN控制器接收流表项,该流表项携带有VxLAN报文 地址信息以及第一 0VS上的第一上行链路Uplink端口;
[0110] 该流表项用于将从下挂在第一 0VS上的源虚拟机接收到的、目的虚拟机下挂在第 二0VS上的原始报文发送到第一 0VS上的第一 VxLAN端口,并由第一 VxLAN端口为该原始 报文附加包含VxLAN报文地址信息的VxLAN报文头以形成VxLAN报文,并用于通过第一 Up 1 ink端口发送VxLAN报文。
[0111] 在一个实施方式中,VxLAN报文地址信息包括下挂在第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在第二0VS上的第二VxLAN隧道终端的MAC地址以及第二VxLAN隧 道终端的IP地址。
[0112] 在一个实施方式中,流表项包括匹配项和动作,其中匹配项包括源虚拟机的MAC 地址、目的虚拟机的MAC地址、源虚拟机的IP地址和目的虚拟机的IP地址,动作包括指定 第一 VxLAN端口为第一顺序出端口、携带VxLAN报文地址信息和指定第一 Uplink端口为第 二顺序出端口。
[0113] 在一个实施方式中:
[0114] 流表项接收模块1001,还用于从SDN控制器接收用于转发非VxLAN报文的流表项, 该用于转发非VxLAN报文的流表项用于将从下挂在第一 0VS上的源虚拟机接收到的、目的 虚拟机下挂在第一 0VS上的原始报文发送到第一 0VS上的非VxLAN端口。
[0115] 基于上述详细分析,本发明实施方式还提出了在目的虚拟机所下挂的0VS侧的 VxLAN报文的转发装置。
[0116] 图11为根据本发明实施方式,在目的虚拟机所下挂的0VS侧的VxLAN报文的转发 装置结构图,该装置应用于第二0VS(即目的虚拟机所下挂的0VS)。
[0117] 如图11所示,该装置1100包括:
[0118] VxLAN报文接收模块1101,用于通过第二0VS上的第二Uplink端口接收第一 0VS 上的第一 Uplink端口发送的VxLAN报文,VxLAN报文是第一 0VS上的第一 VxLAN端口将原 始报文附加包含VxLAN报文地址信息的VxLAN报文头所形成的,其中原始报文由下挂在第 一 0VS上的源虚拟机发出;
[0119] 报文头剥离模块1102,用于在第二Upl ink端口上剥离VxLAN报文头以恢复原始报 文,将原始报文发送到第二0VS上的第二VxLAN端口;
[0120] 报文发送模块1103,用于在第二VxLAN端口,基于从SDN控制器接收的流表项,将 原始报文发送到所述目的虚拟机。
[0121] 在一个实施方式中,该流表项的匹配项包括原始报文的源地址和目的地址,动作 包括指定出端口为原始报文的目的虚拟机下挂在第二ovs上的端口。
[0122] 在一个实施方式中,VxLAN报文地址信息包括下挂在第一 0VS上的第一 VxLAN隧道 终端的MAC地址、下挂在第二0VS上的第二VxLAN隧道终端的MAC地址以及第二VxLAN隧 道终端的IP地址。
[0123] 在一个实施方式中,该装置1100还包括:
[0124] 非VxLAN报文接收模块1104,用于通过第二Uplink端口,从第一 0VS上的第一 Uplink端口接收非VxLAN报文;
[0125] 报文发送模块1103,还用于基于从SDN控制器接收的用于转发非VxLAN报文的流 表项转发非VxLAN报文。
[0126] 在一个实施方式中,用于转发非VxLAN报文的流表项的匹配项包括非VxLAN报文 的源地址和目的地址,动作包括指定出端口为非VxLAN报文的目的虚拟机下挂在第二0VS 上的端口。
[0127] 综上所述,本发明实施方式中,SDN控制器通过向0VS下发流表项的方式,可以向 0VS提供VxLAN报文地址信息和指定出端口,0VS在执行VxLAN转发时可以在VxLAN端口 自行封装包含二层头的VxLAN报文头,并由指定出端口发送VxLAN报文,从而优化了 0VS 支持VxLAN报文的接收和发送流程,提高了 VxLAN报文的整体发送性能,有益于提高整个 Overlay网络的用户体验。
[0128] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。
【主权项】
1. 一种虚拟可扩展局域网VxLAN报文的转发方法,其特征在于,所述方法应用于第一 虚拟化开放流交换机OVS,该方法包括: 从软件定义网络SDN控制器接收流表项,所述流表项携带有VxLAN报文地址信息以及 所述第一 OVS上的第一上行链路Uplink端口; 所述流表项用于将从下挂在所述第一 OVS上的源虚拟机接收到的、目的虚拟机下挂在 第二OVS上的原始报文发送到所述第一 OVS上的第一 VxLAN端口,并由所述第一 VxLAN端 口为该原始报文附加包含所述VxLAN报文地址信息的VxLAN报文头以形成VxLAN报文,并 用于通过所述第一 Uplink端口发送所述VxLAN报文。2. 根据权利要求1所述的VxLAN报文的转发方法,其特征在于,所述VxLAN报文地址信 息包括下挂在所述第一 OVS上的第一 VxLAN隧道终端的媒体访问控制MAC地址、下挂在所 述第二OVS上的第二VxLAN隧道终端的MAC地址以及所述第二VxLAN隧道终端的IP地址。3. 根据权利要求1所述的VxLAN报文的转发方法,其特征在于,所述流表项包括匹配项 和动作,其中所述匹配项包括源虚拟机的MAC地址、目的虚拟机的MAC地址、源虚拟机的IP 地址和目的虚拟机的IP地址,动作包括指定第一VxLAN端口为第一顺序出端口、携带VxLAN 报文地址信息和指定所述第一 Uplink端口为第二顺序出端口。4. 一种虚拟可扩展局域网VxLAN报文的转发方法,其特征在于,所述方法应用于第二 虚拟化开放流交换机OVS,该方法包括: 通过第二OVS上的第二上行链路Uplink端口接收第一 OVS上的第一 Uplink端口发送 的VxLAN报文,所述VxLAN报文是第一 OVS上的第一 VxLAN端口将原始报文附加包含VxLAN 报文地址信息的VxLAN报文头所形成的,其中所述原始报文由下挂在所述第一 OVS上的源 虚拟机发出; 在所述第二Uplink端口上剥离所述VxLAN报文头以恢复所述原始报文,将所述原始 报文发送到第二0VS上的第二VxLAN端口; 在所述第二VxLAN端口,将所述原始报文发送到目的虚拟机。5. 权利要求1所述的VxLAN报文的转发方法,其特征在于,所述VxLAN报文地址信息包 括下挂在所述第一 0VS上的第一 VxLAN隧道终端的MAC地址、下挂在所述第二0VS上的第 二VxLAN隧道终端的MAC地址以及所述第二VxLAN隧道终端的IP地址。6. -种虚拟可扩展局域网VxLAN报文的转发装置,其特征在于,所述装置应用于第一 虚拟化开放流交换机0VS,该装置包括: 流表项接收模块,用于从SDN控制器接收流表项,所述流表项携带有VxLAN报文地址 信息以及所述第一 0VS上的第一上行链路Uplink端口,所述流表项用于将从下挂在所述第 一 0VS上的源虚拟机接收到的、目的虚拟机下挂在第二0VS上的原始报文发送到所述第一 0VS上的第一 VxLAN端口,并由所述第一 VxLAN端口为该原始报文附加包含所述VxLAN报 文地址信息的VxLAN报文头以形成VxLAN报文,并用于通过所述第一 Up 1 ink端口发送所述 VxLAN报文。7. 根据权利要求6所述的VxLAN报文的转发装置,其特征在于,所述VxLAN报文地址信 息包括下挂在所述第一 0VS上的第一 VxLAN隧道终端的MAC地址、下挂在所述第二0VS上 的第二VxLAN隧道终端的MAC地址以及所述第二VxLAN隧道终端的IP地址。8. 根据权利要求6所述的VxLAN报文的转发装置,其特征在于,所述流表项包括匹配项 和动作,其中匹配项包括源虚拟机的MAC地址、目的虚拟机的MAC地址、源虚拟机的IP地址 和目的虚拟机的IP地址,动作包括指定第一 VxLAN端口为第一顺序出端口、携带VxLAN报 文地址信息和指定所述第一 Uplink端口为第二顺序出端口。9. 一种虚拟可扩展局域网VxLAN报文的转发装置,其特征在于,所述装置应用于第二 虚拟化开放流交换机OVS,该装置包括: VxLAN报文接收模块,用于通过第二OVS上的第二上行链路Uplink端口接收第一 OVS 上的第一 Uplink端口发送的VxLAN报文,所述VxLAN报文是第一 OVS上的第一 VxLAN端口 将原始报文附加包含VxLAN报文地址信息的VxLAN报文头所形成的,其中所述原始报文由 下挂在所述第一 OVS上的源虚拟机发出; 报文头剥离模块,用于在所述第二Upl ink端口上剥离所述VxLAN报文头以恢复所述原 始报文,将所述原始报文发送到第二OVS上的第二VxLAN端口; 报文发送模块,用于在所述第二VxLAN端口,将所述原始报文发送到目的虚拟机。10. 权利要求9所述的VxLAN报文的转发装置,其特征在于,所述VxLAN报文地址信息 包括下挂在所述第一 OVS上的第一 VxLAN隧道终端的MAC地址、下挂在所述第二OVS上的 第二VxLAN隧道终端的MAC地址以及所述第二VxLAN隧道终端的IP地址。
【文档编号】H04L12/46GK105991389SQ201510070865
【公开日】2016年10月5日
【申请日】2015年2月11日
【发明人】张寅飞, 林涛, 温涛, 任维春, 张广辉
【申请人】杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1