一种处理报文的方法、装置及数据中心网络的制作方法

文档序号:7551191阅读:175来源:国知局
专利名称:一种处理报文的方法、装置及数据中心网络的制作方法
技术领域
本发明涉及网络通信领域,特别涉及一种处理报文的方法、装置及数据中心网络。
背景技术
在数据中心网络中,需要通过不同的虚拟局域网(virtual local area network,VLAN)来隔离不同租户(tenant)的数据流,但传统的VLAN只有4094个,无法满足超过4K租户的隔离需求。由此产生了虚拟可扩展局域网(virtual extensible local area network,VxLAN)技术。VxLAN技术使同一个VxLAN中的多个虚拟机(virtual machine, VM)可以跨三层网络进行通信。在VxLAN技术中,每个租户对应一个虚拟叠加网(virtual overlay network),每个虚拟叠加网被认为是一个VxLAN网段(segment)并且通过一个24位的虚拟可扩展局域网网络标识符(VxLAN network identifier,VNI)标识。只有拥有相同VNI的VM之间才允许进行通信。每个管理域内能够定义多达1600万VNI,每个VNI最多可以包含4094个VLAN。因此使用VxLAN技术,有效突破了传统VLAN的4K租户的限制。发明人在研究过程中发现,当前情况下,VxLAN技术只支持属于同一 VxLAN的VMs之间的互通,不支持属于不同VxLAN网段的VMs的互通。但在现实中,又存在如下情况,某租户的分支机构I属于VxLANl,分支机构2属于VxLAN2,总部属于VxLAN3,分支机构I和分支机构2均需要和总部互通,即需要实现属于不同VxLAN的VM之间的互通。现有技术不能灵活高效地实现不同VxLAN网段中的虚拟机的互通。

发明内容
本发明的目的是提供一种处理报文的方法,装置及数据中心网络,能够灵活高效地实现不同VxLAN网段中的虚拟机的互通。本发明第一方面提供了一种处理报文的方法,包括:接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段;根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项;为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域;根据所述表项向核心网络设备发送所述VxLAN报文。在本发明第一方面的第一实现方式中,根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项,包括:当所述MAC表中不存在对应所述MAC地址的表项时,通过MAC学习获取对应所述MAC地址的表项。根据本发明第一方面的第一实现方式的第二实现方式中,所述通过MAC学习获取对应所述MAC地址的表项包括:
生成地址解析协议ARP请求,将所述ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发,所述ARP请求用于请求所述第二 VM的MAC地址;接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。本发明第二方面提供了另一种处理报文的方法,包括:接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码;对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文;获取所述第二 VM的VNI和VNI掩码;根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。在本发明第二方面的第一种实现方式中,所述所述根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第二方面的第二种实现方式中,所述根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第二方面的第三种实现方式中,所述根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第二方面的第四种实现方式中,所述根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。本发明第三方面提供一种处理报文的装置,包括:接收模块,用于接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段;
获取模块,用于根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项;封装模块,用于为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域;发送模块,用于根据所述表项向核心网络设备发送所述VxLAN报文。在根据本发明第三方面的第一种实现方式中,当所述MAC表中不存在对应所述MAC地址的表项时,所述获取模块用于通过MAC学习获取对应所述MAC地址的表项。在根据本发明第三方面的第一种实现方式的第二种实现方式中,所述获取模块包括:生成子模块,用于生成地址解析协议ARP请求,将所述ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发。所述ARP请求用于请求所述第二 VM的MAC地址;学习子模块,用于接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。本发明第四方面提供一种处理报文的装置,包括:接收模块,用于接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码;解封装模块,用于对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文;获取模块,用于获取所述第二 VM的VNI和VNI掩码;处理模块,用于根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。在本发明第四方面的第一种实现方式中,所述处理模块用于:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第四方面的第二种实现方式中,所述处理模块用于:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第四方面的第三种实现方式中,所述处理模块用于:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。在本发明第四方面的第四种实现方式中,所述处理模块用于:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。本发明第五方面提供了一种数据中心网络,包括第一虚拟可扩展局域网VxLAN网关和第二 VxLAN网关,所述第一 VxLAN网关包括上述第三方面所述的装置,所述第二 VxLAN网关包括上述第四方面所述的装置。本发明上述实施例中,第一 VM所属的VxLAN网关在转发报文时,将所述第一 VM的VNI和VNI掩码添加在封装后的VxLAN报文中,以便第二 VM所属的VxLAN网关根据所述VNI和VNI掩码判断所述第一 VM和第二 VM是否属于同一 VxLAN域,进而使同一 VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的数据中心网络的结构示意图;图2所示为本发明实施例提供的一种处理报文的方法流程示意图;图3所示为为现有技术中VxLAN头的结构示意图;图4所示为本发明实施例提供的一种VxLAN头的结构示意图;图5所示为本发明实施例提供的另一种处理报文的方法流程示意图;图6所示为本发明实施例提供的一种处理报文的装置的结构示意图;图7所示为本发明实施例提供的另一种处理报文的装置的结构示意图;图8所示为本发明实施例提供的另一种处理报文的装置的结构示意图;图9所示为本发明实施例提供的另一种处理报文的装置的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1所示,为本发明实施例提供的一种数据中心网络,包括至少两个VxLAN网关(如图中VxLAN网关21-23)。每个VxLAN网关管理一个或多个服务器(如图中服务器31-33),每个服务器上运行有至少一个虚拟机(如图中VM41-43)。所述数据中心网络还包括核心网络设备,用于在所述至少两个VxLAN网关之间转发VxLAN报文。在一个实施例中,所述至少两个VxLAN网关中的第一 VxLAN网关用于执行以下图2所示的方法。在另一个实施例中,所述至少两个VxLAN网关中的第二 VxLAN网关用于执行图5所示的方法。所述VxLAN网关,可以是虚拟机监视器,例如hypervisor,也可以是架顶交换机(Top ofRack, ToR)。
所述虚拟机VM41-43分别属于不同的VxLAN网段。本实施例中,假设VM41所属的第一 VxLAN网段对应的VNI为3.1.1,VM42所属的第二 VxLAN网段对应的VNI为3.1.2,VM43所属的第三VxLAN网段对应的VNI为3.1.3。需要第一 VxLAN网段中的VM和第二 VxLAN网段中的VM进行互通,第一 VxLAN网段中的VM和第三VxLAN网段中的VM进行互通,第二VxLAN网段中的VM和第三VxLAN网段中的VM进行隔离。每个VxLAN网关配置有掩码信息表,所述掩码信息表包括VM信息,VNI,以及VNI掩码的对应关系。所述VM信息为能够唯一确定一个VM的信息,可以是VM标识或VM的MAC地址等。所述VNI掩码为24位(bit),用于表示VM能够访问的VxLAN域。每个VxLAN域内的VM之间可以互通,每个VxLAN域内包括一个或多个VxLAN网段。例如,当掩码为111111111111111111110000时,表示VNI前20位相同的16个VxLAN网段中的VM可以互通,则该VxLAN域包括所述16个VxLAN网段。在一个实现中,所述第一关系表中的掩码可以为空。在一个实施例中,当VM信息为VM标识时,图1中VxLAN网关21上的掩码信息表中的一个表项为<VM41,3.1.1,3.1.0> ;VxLAN网关22上的掩码信息表中的一个表项为<VM42,3.1.2,Null〉;VxLAN网关23上的掩码信息表中的一个表项为<VM43,3.1.3,Null〉。其中,Null表示没有配置掩码,即掩码为空,在具体的实现中,Null也可以用其他表示没有配置掩码的信息代替。当第一 VxLAN网段中的第一 VM(可以是图1中VM41-43中的任意一个)需要主动和第二 VxLAN网段中的第二 VM(VM41-43中除第一 VM外的任意一个)通信时,第一 VxLAN网关用于执行如图2所示的处理报文的方法,所述方法包括:201、接收第一 VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址。所述第一 VM和第二 VM属于不同的VxLAN网段。202、根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项。
203、为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域。如图3所示,为现有技术中VxLAN头的结构示意图,该VxLAN头共8个字节(Byte),其中包括一个字节的标记(Flag)字段,其中I位置I用来表示合法的VNI,其他7位置0,为预留比特位。VNI占用了三个字节,另外的四个字节是预留字节。如图4所示,为本发明实施例提供的一种VxLAN头的结构示意图,本发明实施例建议采用图3所示VxLAN头中的预留字节中的三个字节来携带VNI掩码。这样,既能够实现本发明目的,又能够避免对现有VxLAN协议的较大改动。可选地,本领域技术人员也可以通过其他形式,例如,定义单独的选项,来携带VNI掩码。携带VNI掩码的方式,不构成对本发明的限制。在一个可选的方案中,所述第一 VxLAN网关存储有掩码信息表,所述掩码信息表中存储有所述VxLAN网关管理的所有VM的掩码信息表项。所述第一 VxLAN网关在为所述原始报文封装VxLAN头的时候,查找所述掩码信息表,获得所述第一 VM对应的掩码信息表项,从所述掩码信息表项中找到所述第一 VM的VNI和VNI掩码,封装到所述VxLAN报文中。204、根据所述MAC表项向核心网络设备发送所述VxLAN报文。在一种实现方式中,第一 VxLAN网关将本地第一 VM发送的所述原始报文通过修改后的VxLAN协议发送给核心网络设备。在所述步骤202中,根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项,具体包括:当所述MAC表中不存在对应所述MAC地址的表项时,通过MAC学习获取对应所述MAC地址的表项。所述通过MAC学习获取对应所述MAC地址的表项具体包括:2021、生成地址解析协议(Address Resolution Protocol, ARP)请求,将所述 ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发。所述ARP请求用于请求所述第二 VM的MAC地址。2022、接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。当第一 VM首次和第二 VM通信时,如果第一 VM所属的VxLAN网关上没有学习到对应所述第二 VM的MAC表项,则第一 VM所属的VxLAN网关无法将第一 VM的发送的报文转发给第二 VM,因此需要通过ARP协议进行MAC地址学习。本发明上述实施例中,第一 VM所属的VxLAN网关在转发报文时,将所述第一 VM的VNI和VNI掩码添加在封装后的VxLAN报文中,以便第二 VM所属的VxLAN网关根据所述VNI和VNI掩码判断所述第一 VM和第二 VM是否属于同一 VxLAN域,进而使同一 VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。此后,核心网络设备接收第一 VxLAN网关发送的封装了 VxLAN头的报文,向第二VxLAN网关转发所述报文。所述第二 VxLAN网关用于执行另一种处理报文的方法,如图5所示,所述方法包括。501、接收核心网络设备发送的VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一 VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段,所述VxLAN报文中还封装有所述第一 VM的VNI和VNI掩码。502、对所述封装了 VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文。503、获取所述第二 VM的VNI和VNI掩码。在一个实现方式中,所述第二 VxLAN网关上的掩码信息表中存储了其所管理的所有VM的掩码信息表项。当获得所述原始报文后,所述第二 VxLAN网关根据所述原始报文的目的MAC地址,即所述第二 VM的MAC地址,查找所述第二 VM对应的掩码信息表项,从所述掩码信息表项中获取所述第二 VM的VNI和VNI掩码。504、根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。其中,所述根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述第一报文进行处理包括以下几种情况:I)、所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时当,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与(AND)运算,当运算结果相同时,将所述原始报文发送给所述第二 VM;当运算结果不同时,丢弃所述原始报文。运算结果不同,表明第一 VM和第二 VM不属于同一个VxLAN域,因此不能互通,需要丢弃该原始报文。在第一 VM的VNI掩码和第二 VM的VNI掩码均不为空的情况下,优先使用第二 VM(即报文第二)的VNI掩码进行与运算。2)、当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与(AND)运算,当运算结果相同时,将所述原始报文发送给所述第二 VM;当运算结果不同时,丢弃所述原始报文。例如,当第一 VM为VM42,第二 VM为VM41时,VxLAN网关22上的掩码信息表中VM42的表项中没有VNI掩码,则VM42的VxLAN网关22在封装VxLAN报文的时候,也不会携带VM42的VNI掩码,这种情况下,即VM42的VNI掩码为空,VxLAN网关21在收到VxLAN报文后,从VxLAN报文中获取到VM42的VNI和原始报文后,然后,将本地掩码信息表中的表项<VM41,3.1.1,3.1.0> 中的掩码 3.1.0分别与¥1 41 的 VNI (3.1.1)和 VM42 的 VNI (3.1.2)进行与运算,以确定VM42和VM41是否属于相同的VxLAN域,本实施例中,由于运算结果相同,认定VM41和VM42属于同一个VxLAN域,VM2发送的原始报文被发送到VMl。3)、当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。例如,当第一 VM为VM41,第二 VM为VM42时,VM41在VxLAN网关21上的掩码信息表中有对应的VNI掩码,因此,VxLAN网关21在封装VxLAN头的时候,会将相应的VNI掩码携带在VxLAN报文中。但VxLAN网关22上的掩码信息表中的表项为<VM42,3.1.2,Null〉,VM42的VNI掩码为空,因此,VxLAN 网关22需要根据VxLAN网关21封装的VxLAN报文中的VNI掩码来进行与运算,确定VM42和VM41是否属于相同的VxLAN域。4)、当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。例如,当第一 VM为VM42,第二 VM为VM43时,由于VxLAN网关22和VxLAN网关23上的掩码信息表的表项中都没有相应的VNI掩码,因此,VxLAN网关23收到VM42发送的报文时,只需要比较VM42的VNI与VM43的VNI是否一致就可以确定是转发报文还是丢弃报文。本发明上述实施例中,第二 VM所属的VxLAN网关在接收到核心网络设备发送的VxLAN报文时,通过配置的掩码信息表,能够确定第一 VM和第二 VM是否属于相同VxLAN域,进而使同一 VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。如图6所示,为本发明实施例中提供的一种处理报文的装置的结构示意图,所述装置60包括:接收模块601,用于接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段。获取模块602,用于根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项。封装模块603,用于为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域。发送模块604,用于根据所述表项向核心网络设备发送所述VxLAN报文。在一个实施方式中,当所述MAC表中不存在对应所述MAC地址的表项时,所述获取模块602用于通过MAC学习获取对应所述MAC地址的表项。进一步地,所述获取模块602包括:生成子模块6021,用于生成地址解析协议(Address Resolution Protocol, ARP)请求,将所述ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发。所述ARP请求用于请求所述第二 VM的MAC地址。学习子模块6022,用于接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。如图7所示,为本发明实施例中提供的另一种处理报文的装置的结构示意图,如图所示,所述处理报文的装置70包括接收模块701、解析模块702、通信模块703和总线704。所述处理器701、存储器702和网络接口 703均与总线704连接。处理器701通过网络接口 703接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段;根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项;为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域;根据所述表项通过所述网络接口 703向核心网络设备发送所述VxLAN报文。其中,处理器701执行的上述处理过程通常是由一个或多个软件程序控制完成,所述一个或多个软件程序存放于存储器702中,当需要进行上述动作时,将所述一个或多个软件程序调入处理器701,由处理器701控制完成。当然,上述处理过程还可以是由硬件完成。上述图6和图7所示的装置均可以用来执行图2所示的方法。因此,对于图6和图7说明不够详尽的地方,可以参考对图2的说明。本发明上述实施例中的装置在转发第一 VM发送的报文时,将所述第一 VM的VNI和VNI掩码添加在封装后的VxLAN报文中,以便第二 VM所属的VxLAN网关根据所述VNI和VNI掩码判断所述第一 VM和第二 VM是否属于同一 VxLAN域,进而使同一 VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。如图8所示,为本发明实施例中提供的另一种处理报文的装置的结构示意图,所述装置80包括:接收模块801,用于接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码。解封装模块802,用于对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文。
获取模块803,用于获取所述第二 VM的VNI和VNI掩码。处理模块804,用于根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。可选地,所述处理模块804用于:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。可选地,所述处理模块804用于:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。可选地,所述处理模块804用于:当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。可选地,所述处理模块804用于:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。如图9所示,为本发明实施例中提供的另一种处理报文的装置的结构示意图,如图所示,所述处理报文的装置90包括接收模块901、解析模块902、通信模块903和总线904。所述处理器901、存储器902和网络接口 903均与总线904连接。处理器901通过网络接口 903接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码;对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文;获取所述第二 VM的VNI和VNI掩码;根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。其中,处理器901执行的上述处理过程通常是由一个或多个软件程序控制完成,所述一个或多个软件程序存放于存储器902中,当需要进行上述动作时,将所述一个或多个软件程序调入处理器901,由处理器901控制完成。当然,上述处理过程还可以是由硬件完成。上述图8和图9所示的装置均可以用来执行图5所示的方法。因此,对于图8和图9说明不够详尽的地方,可以参考对图5的说明。本发明上述实施例中,所述装置在接收到核心网络设备发送的VxLAN报文时,通过配置的掩码信息表,能够确定第一 VM和第二 VM是否属于相同VxLAN域,进而使同一VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种处理报文的方法,其特征在于,包括: 接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段; 根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项; 为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域; 根据所述表项向核心网络设备发送所述VxLAN报文。
2.根据权利要求1所述的方法, 其特征在于,根据所述第二VM的MAC地址查找MAC表,获取对应所述MAC地址的表项,包括:当所述MAC表中不存在对应所述MAC地址的表项时,通过MAC学习获取对应所述MAC地址的表项。
3.根据权利要求2所述的方法,其特征在于,所述通过MAC学习获取对应所述MAC地址的表项包括: 生成地址解析协议ARP请求,将所述ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发,所述ARP请求用于请求所述第二 VM的MAC地址; 接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。
4.一种处理报文的方法,其特征在于,包括: 接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码; 对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文; 获取所述第二 VM的VNI和VNI掩码; 根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括: 当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时,将所述第二VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
6.根据权利要求4所述的方法,其特征在于,所述根据所述第一VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括: 当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
7.根据权利要求4所述的方法,其特征在于,所述根据所述第一VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括: 当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
8.根据权利要求4所述的方法,其特征在于,所述根据所述第一VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理包括: 当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。
9.一种处理报文的装置,其特征在于,包括: 接收模块,用于接收第一虚拟机VM发送的原始报文,所述原始报文的目的MAC地址为第二 VM的MAC地址,所述第一 VM和第二 VM属于不同的虚拟可扩展局域网VxLAN网段; 获取模块,用于根据所述第二 VM的MAC地址查找MAC表,获取对应所述MAC地址的表项; 封装模块,用于为所述原始报文封装VxLAN头,得到VxLAN报文,所述VxLAN报文中包括所述第一 VM的VxLAN网络标识符VNI和VNI掩码,所述VNI掩码表示所述第一 VM能够访问的VxLAN域; 发送模块,用于根据所述表项向核心网络设备发送所述VxLAN报文。
10.根据权利要求9所述的装置,其特征在于,当所述MAC表中不存在对应所述MAC地址的表项时,所述获取模块用于通过MAC学习获取对应所述MAC地址的表项。
11.根据权利要求10 所述的装置,其特征在于,所述获取模块包括: 生成子模块,用于生成地址解析协议ARP请求,将所述ARP请求封装为VxLAN组播报文,根据VxLAN协议对所述VxLAN组播报文进行组播转发。所述ARP请求用于请求所述第二 VM的MAC地址; 学习子模块,用于接收所述第二 VM发送的ARP响应,根据所述ARP响应进行MAC地址学习,生成对应所述MAC地址的表项。
12.一种处理报文的装置,其特征在于, 接收模块,用于接收核心网络设备发送的虚拟可扩展局域网VxLAN报文,所述VxLAN报文中封装有原始报文,所述原始报文为第一虚拟机VM发往第二 VM的报文,所述第一 VM和第二 VM属于不同的VxLAN网段;所述VxLAN报文中还封装有所述第一 VM的VxLAN网络标识符VNI和VNI掩码; 解封装模块,用于对所述VxLAN报文进行解封装,获取所述第一 VM的VNI和VNI掩码以及所述原始报文; 获取模块,用于获取所述第二 VM的VNI和VNI掩码; 处理模块,用于根据所述第一 VM的VNI和VNI掩码,以及所述第二 VM的VNI和VNI掩码,对所述原始报文进行处理。
13.根据权利要求12所述的装置,其特征在于,所述处理模块用于: 当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码也不为空时,将所述第二VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
14.根据权利要求12所述的装置,其特征在于,所述处理模块用于:当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码不为空时,将所述第二 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
15.根据权利要求12所述的装置,其特征在于,所述处理模块用于: 当所述第一 VM的VNI掩码不为空,且所述第二 VM的VNI掩码为空时,将所述第一 VM的VNI掩码与所述第二 VM的VNI以及所述第一 VM的VNI分别进行与运算,当运算结果相同时,将所述原始报文发送给所述第二 VM ;当运算结果不同时,丢弃所述原始报文。
16.根据权利要求12所述的装置,其特征在于,所述处理模块用于: 当所述第一 VM的VNI掩码为空,且所述第二 VM的VNI掩码也为空时,比较所述第一 VM的VNI与所述第二 VM的VNI,当所述第一 VM的VNI与所述第二 VM的VNI相同时,将所述原始报文发送给所述第二 VM,否则,丢弃所述原始报文。
17.一种数据中心网络,包括第一虚拟可扩展局域网VxLAN网关和第二 VxLAN网关,其特征在于: 所述第一 VxLAN网关包括根据权利要求9-11任意一项所述的装置,所述第二 VxLAN网关包括根据权利要求12-16 任意一项所述的装置。
全文摘要
本发明提供了一种处理报文的方法,装置和数据中心网络。第二VM的VxLAN网关接收VxLAN报文,所述VxLAN报文中封装有第一虚拟机VM发往第二VM的原始报文,所述第一VM和第二VM属于不同的VxLAN网段;对所述VxLAN报文进行解封装,获取所述第一VM的VNI和VNI掩码以及所述原始报文;获取所述第二VM的VNI和VNI掩码;根据所述第一VM的VNI和VNI掩码,以及所述第二VM的VNI和VNI掩码,对所述原始报文进行处理。通过本发明能够确定第一VM和第二VM是否属于相同VxLAN域,进而使同一VxLAN域的VM能够互通,避免了现有技术中仅能使具有相同VNI的虚拟机互通所引起的不能灵活高效地满足不同VxLAN网段的虚拟机的互通需求的问题。
文档编号H04L12/46GK103095546SQ201310030188
公开日2013年5月8日 申请日期2013年1月28日 优先权日2013年1月28日
发明者于来凯 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1