CN109167731B - 报文发送方法及装置 - Google Patents
报文发送方法及装置 Download PDFInfo
- Publication number
- CN109167731B CN109167731B CN201811007624.0A CN201811007624A CN109167731B CN 109167731 B CN109167731 B CN 109167731B CN 201811007624 A CN201811007624 A CN 201811007624A CN 109167731 B CN109167731 B CN 109167731B
- Authority
- CN
- China
- Prior art keywords
- vtep
- multicast group
- message
- initial
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供一种报文发送方法及装置,该方法包括:根据泛洪报文携带的目的地址和预先设置的VXLAN组播映射表,获取泛洪报文映射的VTEP组播组地址,并判断是否有与VTEP组播组地址对应的VTEP组播组表项。若存在,则对泛洪报文进行封装,得到第一封装报文,并根据第一封装报文中的VTEP组播组地址和VTEP组播组表项中的出接口,发送第一封装报文。当VTEP设备包括对应的VTEP组播组表项时,可以根据VTEP组播组表项中所记录的出接口,对第一封装报文进行发送,使得接收第一封装报文的远端VTEP设备可以向对应服务器的虚拟机转发泛洪报文,避免了远端VTEP设备接收第一封装报文后没有可以接收泛洪报文的虚拟机的情况,减少了VTEP设备发送第一封装报文所占用的带宽,提高了带宽利用率。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种报文发送方法及装置。
背景技术
在发送报文的过程中,通常需要根据报文中的MAC(Media Access Control,媒体接入控制)地址对报文进行转发。但是,随着虚拟机数量的不断增加,而MAC表中各个MAC地址的数目并未发生变化,使得虚拟机的数量受到限制。因此,基于IP(Intemet Protocol,互联网协议)网络,产生了采用了MAC in UDP(User Datagram Protocol,用户数据报协议)技术的VXLAN(Virtual eXtensible Local Area Network,可扩展虚拟局域网)。
相关技术中,若采用VXLAN组播路由的方式对泛洪报文进行发送,则在同一个VXLAN中的各个VTEP(VXLAN Tunnel End Point,VXLAN隧道端点)设备均需要加入相同的组播组,而位于IP(Internet Protocol,互联网协议)核心网络中,与各个VTEP设备连接的核心设备则可以建立该组播组的组播转发表项。
若第一VTEP设备对应的一个服务器中的任意一个虚拟机,向第一VTEP设备发送了泛洪报文,则第一VTEP设备可以接收该泛洪报文,并根据该泛洪报文所属的VXLAN,对该泛洪报文进行封装,向IP核心网络的核心设备发送封装后的报文,核心设备在接收封装后的报文后,可以根据已建立的组播转发表项,向VXLAN中的除第一VTEP设备之外的其他各个VTEP设备转发复制后的报文。相应的,其他各个VTEP设备可以接收核心设备复制并转发的报文,并对该报文进行解封,向相对应的各个服务器中属于相同VXLAN内的各个虚拟机发送解封后的报文。
但是,如果某个VTEP设备对应的服务器中不存在属于相同VXLAN的虚拟机,则VTEP设备会丢弃接收的报文,而VTEP设备在接收被丢弃的报文的过程中,接收报文所占用的带宽就被浪费,使得带宽的利用率较低。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种报文发送方法及装置。
本发明的目的之一提供一种报文发送方法,所述方法包括:
根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址;
判断是否有与所述VTEP组播组地址对应的VTEP组播组表项;
若存在与所述VTEP组播组地址对应的VTEP组播组表项,对所述泛洪报文进行封装,得到第一封装报文,所述第一封装报文包括所述VTEP组播组地址;
根据所述第一封装报文中的VTEP组播组地址和所述VTEP组播组表项中的出接口,发送所述第一封装报文。
进一步地,在所述根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址之前,所述方法还包括:
接收协议报文,所述协议报文包括待加入组播地址;
根据所述待加入组播地址和预设映射规则进行映射,得到所述协议报文映射后的初始VTEP组播组地址;
判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果;
根据所述判断结果,对所述初始VTEP组播组表项进行更新。
进一步地,所述协议报文的报文类型包括:组播组加入报文和组播组退出报文;
在所述判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果之前,所述方法还包括:
确定所述协议报文的报文类型;
所述根据所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新。
进一步地,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组加入报文、且不存在所述初始VTEP组播组表项,则根据所述待加入组播地址、所述初始VTEP组播组地址、与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,建立所述初始VTEP组播组表项;
向核心设备发送新增信息,所述新增信息用于指示所述核心设备加入所述初始VTEP组播组地址对应的组播组、并建立所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
进一步地,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组加入报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项是否包括与所述协议报文对应的报文接收接口相一致的出接口;
若包括,则在所述初始VTEP组播组表项中,将与所述协议报文对应的主机地址,添加为与所述出接口对应的主机地址;
若不包括,则将与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,添加至所述初始VTEP组播组表项中。
进一步地,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组退出报文、且不存在所述初始VTEP组播组表项,则丢弃所述协议报文;
若所述协议报文的报文类型为组播组退出报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项中,是否包括与所述协议报文对应的报文接收接口相一致的出接口;
若所述初始VTEP组播组表项中,不包括与所述协议报文对应的报文接收接口相一致的出接口,则丢弃所述协议报文;
若所述初始VTEP组播组表项中,包括与所述协议报文对应的报文接收接口相一致的出接口,则判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址。
进一步地,在所述判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址之后,所述方法还包括:
若所述出接口对应的主机地址并非仅包括所述协议报文对应的主机地址,则删除所述协议报文对应的主机地址;
若所述出接口对应的主机地址仅包括所述协议报文对应的主机地址,则判断所述出接口是否为所述初始VTEP组播组表项中的唯一出接口;
若所述出接口并不是所述初始VTEP组播组表项中的唯一出接口,则删除所述出接口;
若所述出接口是所述初始VTEP组播组表项中的唯一出接口,则删除所述初始VTEP组播组表项;
并向核心设备发送删除信息,所述删除信息用于指示所述核心设备退出所述初始VTEP组播组地址对应的组播组,并删除所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
进一步地,在所述建立所述初始VTEP组播组表项之后,所述方法还包括:
获取所述初始VTEP组播组表项中的协议报文对应的主机地址和初始VTEP组播组地址;
建立所述协议报文对应的主机地址和所述初始VTEP组播组地址之间的映射关系;
根据所述映射关系对所述VXLAN组播映射表进行更新。
进一步地,所述方法还包括:
接收远端VTEP设备发送的第二封装报文;
确定所述第二封装报文的报文类型;
根据所述第二封装报文的报文类型发送所述第二封装报文。
进一步地,所述第二封装报文的报文类型包括:组播数据报文、协议报文、广播报文和未知单播数据报文;
所述根据所述第二封装报文的报文类型发送所述第二封装报文,包括:
若所述第二封装报文的报文类型为组播数据报文,根据目标VTEP组播组表项中的至少一个出接口,发送所述第二封装报文,所述目标VTEP组播组表项为与所述第二封装报文相对应的组播组表项;
若所述第二封装报文的报文类型为协议报文、广播报文或未知单播数据报文,根据预先设置的发送规则,对所述第二封装报文进行发送。
本发明的另一目的在于提供一种报文发送装置,所述装置包括:
第一获取模块,用于根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址;
第一判断模块,用于判断是否有与所述VTEP组播组地址对应的VTEP组播组表项;
封装模块,用于若存在与所述VTEP组播组地址对应的VTEP组播组表项,对所述泛洪报文进行封装,得到第一封装报文,所述第一封装报文包括所述VTEP组播组地址;
第一发送模块,用于根据所述第一封装报文中的VTEP组播组地址和所述VTEP组播组表项中的出接口,发送所述第一封装报文。
进一步地,所述装置还包括:
第一接收模块,用于接收协议报文,所述协议报文包括待加入组播地址;
映射模块,用于根据所述待加入组播地址和预设映射规则进行映射,得到所述协议报文映射后的初始VTEP组播组地址;
第二判断模块,用于判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果;
第一更新模块,用于根据所述判断结果,对所述初始VTEP组播组表项进行更新。
进一步地,所述协议报文的报文类型包括:组播组加入报文和组播组退出报文;
所述装置还包括:
第一确定模块,用于确定所述协议报文的报文类型;
所述第一更新模块,具体用于根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新。
进一步地,所述第一更新模块,具体用于若所述协议报文的报文类型为组播组加入报文、且不存在所述初始VTEP组播组表项,则根据所述待加入组播地址、所述初始VTEP组播组地址、与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,建立所述初始VTEP组播组表项;向核心设备发送新增信息,所述新增信息用于指示所述核心设备加入所述初始VTEP组播组地址对应的组播组、并建立所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
进一步地,所述第一更新模块,具体用于若所述协议报文的报文类型为组播组加入报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项是否包括与所述协议报文对应的报文接收接口相一致的出接口;若包括,则在所述初始VTEP组播组表项中,将与所述协议报文对应的主机地址,添加为与所述出接口对应的主机地址;若不包括,则将与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,添加至所述初始VTEP组播组表项中。
进一步地,所述装置还包括:
所述第一更新模块,具体用于若所述协议报文的报文类型为组播组退出报文、且不存在所述初始VTEP组播组表项,则丢弃所述协议报文;若所述协议报文的报文类型为组播组退出报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项中,是否包括与所述协议报文对应的报文接收接口相一致的出接口;
丢弃模块,用于若所述初始VTEP组播组表项中,不包括与所述协议报文对应的报文接收接口相一致的出接口,则丢弃所述协议报文;
第三判断模块,用于若所述初始VTEP组播组表项中,包括与所述协议报文对应的报文接收接口相一致的出接口,则判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址。
进一步地,所述装置还包括:
第一删除模块,用于若所述出接口对应的主机地址并非仅包括所述协议报文对应的主机地址,则删除所述协议报文对应的主机地址;
第四判断模块,用于若所述出接口对应的主机地址仅包括所述协议报文对应的主机地址,则判断所述出接口是否为所述初始VTEP组播组表项中的唯一出接口;
第二删除模块,用于若所述出接口并不是所述初始VTEP组播组表项中的唯一出接口,则删除所述出接口;
第三删除模块,用于若所述出接口是所述初始VTEP组播组表项中的唯一出接口,则删除所述初始VTEP组播组表项;
第二发送模块,用于并向核心设备发送删除信息,所述删除信息用于指示所述核心设备退出所述初始VTEP组播组地址对应的组播组,并删除所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
进一步地,所述装置还包括:
第二获取模块,用于获取所述初始VTEP组播组表项中的协议报文对应的主机地址和初始VTEP组播组地址;
建立模块,用于建立所述协议报文对应的主机地址和所述初始VTEP组播组地址之间的映射关系;
第二更新模块,用于根据所述映射关系对所述VXLAN组播映射表进行更新。
进一步地,所述装置还包括:
第二接收模块,用于接收远端VTEP设备发送的第二封装报文;
第二确定模块,用于确定所述第二封装报文的报文类型;
第三发送模块,用于根据所述第二封装报文的报文类型发送所述第二封装报文。
进一步地,所述第二封装报文的报文类型包括:组播数据报文、协议报文、广播报文和未知单播数据报文;
所述第三发送模块,具体用于若所述第二封装报文的报文类型为组播数据报文,根据目标VTEP组播组表项中的至少一个出接口,发送所述第二封装报文,所述目标VTEP组播组表项为与所述第二封装报文相对应的组播组表项;若所述第二封装报文的报文类型为协议报文、广播报文或未知单播数据报文,根据预先设置的发送规则,对所述第二封装报文进行发送。
本发明的有益效果是:
本发明实施例提供的报文发送方法及装置,通过获取泛洪报文的VTEP组播组地址,并判断VTEP设备是否包括与VTEP组播组地址对应的VTEP组播组表项。当VTEP设备包括对应的VTEP组播组表项时,可以根据VTEP组播组表项中所记录的出接口,对第一封装报文进行发送,使得接收第一封装报文的远端VTEP设备可以向对应服务器的虚拟机转发泛洪报文,避免了远端VTEP设备接收第一封装报文后没有可以接收泛洪报文的虚拟机的情况,减少了VTEP设备发送第一封装报文所占用的带宽,提高了带宽利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明提供的一种报文发送方法所涉及的VXLAN网络的示意图;
图2为本发明一实施例提供的报文发送方法的流程示意图;
图3为本发明另一实施例提供的报文发送方法的流程示意图;
图4为本发明一实施例提供的报文发送装置的示意图;
图5为本发明另一实施例提供的报文发送装置的示意图;
图6为本发明又一实施例提供的报文发送装置的示意图;
图7为本发明又一实施例提供的报文发送装置的示意图;
图8为本发明又一实施例提供的报文发送装置的示意图;
图9为本发明又一实施例提供的报文发送装置的示意图;
图10为本发明又一实施例提供的报文发送装置的示意图;
图11为本发明又一实施例提供的报文发送装置的示意图;
图12为本发明实施例提供的报文发送装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
图1为本申请提供的一种报文发送方法所涉及的VXLAN网络的示意图,如图1所示,该VXLAN网络可以包括:核心设备101、至少一个VTEP设备102、每个VTEP设备102对应的至少一个服务器103、以及每个服务器103所包括的至少一个虚拟机。
其中,各个VTEP设备102之间可以设置有VXLAN隧道,且核心设备101与每个VTEP设备102链路连接,而每个VTEP设备102与至少一个服务器103链路连接。
具体地,虚拟机可以向所属服务器103对应的VTEP设备102发送包括目的地址的泛洪报文。
VTEP设备102接收该泛洪报文后,则可以根据目的地址和预先设置的VXLAN组播映射表,得到泛洪报文映射的VTEP组播组地址,VTEP设备102可以根据该VTEP组播组地址进行查找,判断VTEP设备102是否存储有与该VTEP组播组地址对应的VTEP组播组表项。
若VTEP设备102存储有与该VTEP组播组地址对应的VTEP组播组表项,则说明VXLAN网络中存在可以接收该泛洪报文的VTEP设备102和虚拟机,则可以将该泛洪报文进行封装,并根据封装后的报文中的VTEP组播组地址、以及VTEP组播组表项对应的出接口,通过VXLAN隧道向远端VTEP设备102发送该封装后的泛洪报文。
远端VTEP设备102则可以接收封装后的泛洪报文,并确定泛洪报文的报文类型,若泛洪报文为组播数据报文,则可以在解封装该报文后,通过远端VTEP设备102中相应的组播组表项,根据该泛洪报文对应的出接口向相应的虚拟机所属的服务器103发送解封装后的报文,并通过服务器103向对应的虚拟机发送该泛洪报文。
需要说明的是,VXLAN组播映射表可以包括用户地址和VTEP组播组地址,其中,用户地址可以包括协议对应组播地址、用户组播组地址和广播地址。
另外,VTEP组播组表项可以包括映射前地址、映射后组播地址、出接口、老化时间和发送协议报文的主机地址,其中,映射前地址可以包括协议报文使用环回地址、未知泛洪报文使用一个所有VTEP公认的特殊单播地址、组播报文用组播地址、广播报文用广播地址。
图2为本发明一实施例提供的报文发送方法的流程示意图,应用于如图1所示的VTEP设备中,该方法可以包括:
步骤201,根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址。
在VTEP设备发送泛洪报文的过程中,需要根据接收该泛洪报文的虚拟机的地址,对该泛洪报文进行封装,以便VTEP设备能够准确地向相应的远端VTEP设备发送该泛洪报文。
因此,在对泛洪报文进行封装发送之前,需要根据该泛洪报文中的目的地址、以及预先设置的VXLAN组播映射表进行映射,得到该泛洪报文映射的VTEP组播组地址,以便在后续步骤中,VTEP设备可以根据该VTEP组播组地址对泛洪报文进行封装。
具体地,VTEP设备可以接收由服务器转发的虚拟机发送的泛洪报文,并根据泛洪报文中携带的目的地址,以及预先设置的VXLAN组播映射表,在该VXLAN组播映射表中查找与该目的地址相一致的用户地址,在查找到与该目的地址相一致的用户地址后,则可以将VXLAN组播映射表中该用户地址对应的组播地址,作为泛洪报文映射的VTEP组播组地址。
需要说明的是,VTEP设备可以预先存储VTEP组播映射表,并在VTEP设备建立VTEP组播组表项后,根据新建的VTEP组播组表项对VTEP组播映射表进行更新,在VTEP组播组表项中添加新增的用户地址与组播地址之间的对应关系。
而且,VTEP组播映射表中一个组播地址可以对应多个用户地址,本发明实施例对此不做限定。
步骤202,判断是否有与VTEP组播组地址对应的VTEP组播组表项。
VTEP设备在获取泛洪报文映射的VTEP组播组地址后,可以根据该组播组地址进行查找,判断VTEP设备是否存储有与该VTEP组播组地址对应的组播组表项,以便在后续步骤中根据该判断结果,确定是否对泛洪报文进行封装和发送。
具体地,VTEP设备可以根据该VTEP组播组地址,在存储的多个VTEP组播组表项中进行查找,判断各个VTEP组播组表项中的任意一个VTEP组播组表项的映射后地址是否与本次映射得到的VTEP组播组地址一致。
若各个VTEP组播组表项中某个VTEP组播组映射表包括与VTEP组播组地址一致的映射后地址,说明VTEP设备存储有与VTEP组播组地址对应的VTEP组播组表项,也即是,说明VTEP设备已经建立了与该VTEP组播组地址对应的VTEP组播组表项,在VTEP所属的VXLAN网络中已经建立好了泛洪报文的组播转发路径,则可以在后续步骤中对泛洪报文进行封装和转发。
但是,若每个VTEP组播组表项中均不包括与VTEP组播组地址一致的映射后地址,则说明VTEP设备并未存储有与VTEP组播组地址对应的VTEP组播组表项,也即是,说明VTEP设备尚未建立与该VTEP组播组地址对应的VTEP组播组表项,在VTEP所属的VXLAN网络中尚未建立泛洪报文的组播转发路径,因此可以根据PIM(Protocol Independent Multicast,协议无关组播)协议对泛洪报文进行处理。
步骤203,若存在与VTEP组播组地址对应的VTEP组播组表项,对泛洪报文进行封装,得到第一封装报文。
其中,该第一封装报文可以包括VTEP组播组地址。
VTEP设备在确定存在与VTEP组播组地址对应的VTEP组播组表项后,可以根据VTEP组播组表项对泛洪报文进行封装,以便在后续步骤中,VTEP设备可以根据该VTEP组播组表项对封装后的第一封装报文进行转发。
具体地,VTEP设备可以在泛洪报文的基础上,对泛洪报文进行封装,例如可以为该泛洪报文添加VXLAN报文头,从而完成对泛洪报文的封装,得到封装后的第一封装报文。
其中,该VXLAN报文头可以包括目的IP地址和目的MAC地址,该目的IP地址即为VTEP组播组表项中的映射后地址,也即是映射得到的VTEP组播组地址,而该MAC地址可以根据目的IP地址映射得到。
步骤204,根据第一封装报文中的VTEP组播组地址和VTEP组播组表项中的出接口,发送第一封装报文。
VTEP设备在对泛洪报文进行封装后,则可以根据VTEP组播组表项中与泛洪报文对应的出接口,通过各个VTEP设备之间的VXLAN隧道,对第一封装报文进行转发,从而向远端VTEP设备发送该第一封装报文。
相应的,远端VTEP设备接收第一封装报文后,则可以对第一封装报文进行解封装,并根据泛洪报文的报文类型,向虚拟机所在的服务器发送泛洪报文,从而完成对泛洪报文的转发。
由于VTEP设备可以包括多个出接口,而第一封装报文仅能通过多个出接口中的一个出接口进行发送,因此,可以根据VTEP组播组表项确定与该泛洪报文对应的出接口,以便根据确定的出接口发送第一封装报文。
需要说明的是,VTEP设备不但可以向远端VTEP设备发送封装后的报文,还可以接收远端VTEP设备发送的封装后的报文,并采用上述远端VTEP设备解封装并转发报文的方式,对接收的报文进行处理,从而向对应服务器的各个虚拟机发送接收的报文。
综上所述,本发明实施例提供的报文发送方法,通过获取泛洪报文的VTEP组播组地址,并判断VTEP设备是否包括与VTEP组播组地址对应的VTEP组播组表项。当VTEP设备包括对应的VTEP组播组表项时,可以根据VTEP组播组表项中所记录的出接口,对第一封装报文进行发送,使得接收第一封装报文的远端VTEP设备可以向对应服务器的虚拟机转发泛洪报文,避免了远端VTEP设备接收第一封装报文后没有可以接收泛洪报文的虚拟机的情况,减少了VTEP设备发送第一封装报文所占用的带宽,提高了带宽利用率。
图3为本发明另一实施例提供的报文发送方法的流程示意图,应用于如图1所示的VTEP设备中,该方法可以包括:
步骤301,接收协议报文。
其中,该协议报文可以包括待加入组播地址,且该协议报文的报文类型可以包括:组播组加入报文和组播组退出报文。
VTEP设备在根据VTEP组播组表项发送泛洪报文之前,需要根据虚拟机发送的协议报文,将虚拟机加入或者退出某个组播组。因此,VTEP设备可以监听协议报文,以便在后续步骤中,根据协议报文对VTEP组播组表项进行更新。
其中,协议报文可以为IGMP(Internet Control Message Protocol,网际控制信息协议)协议报文,还可以为其他类型的报文,本发明实施例对此不做限定。
步骤302,根据待加入组播地址和预设映射规则进行映射,得到协议报文映射后的初始VTEP组播组地址。
VTEP设备在接收协议报文后,可以根据协议报文携带的待加入组播地址,按照预先设置的预设映射规则进行映射,得到映射后的初始VTEP组播组地址,以便在后续步骤中,VTEP设备可以根据初始VTEP组播组地址对VTEP组播组表项进行更新。
具体地,VTEP设备在接收到协议报文后,可以获取协议报文中的待加入组播地址,并根据预设映射规则,对待加入组播地址中指定位置的地址信息进行替换,得到映射后的初始VTEP组播组地址。
例如,协议报文中的待加入组播地址为255.13.6.199,则可以根据预设映射规则,对待加入组播地址的前三位地址信息进行替换,将255.13.6.199替换为226.13.6.199,从而得到映射后的初始VTEP组播组地址。
需要说明的是,由于VTEP设备可以接收不同类型的报文,例如,VTEP设备可以接收组播数据报文、协议报文、广播报文和未知单播泛洪报文多种类型的报文。因此,VTEP设备可以根据接收的报文的类型,为不同类型的报文分配不同的初始VTEP组播组地址。
例如,可以将IPV4(Internet Protocol Version 4,网际协议版本4)中226.0.0.1~226.129.255.255的IP地址段作为组播IP地址段,并为不同类型的报文分配不同的组播IP地址段:可以将226.128.255.1~226.128.255.255的IP地址段作为协议报文对应的组播IP地址段,将226.129.255.1~226.129.255.255的IP地址段作为广播报文和/或未知单播泛洪报文对应的组播IP地址段,再将226.0.0.1~226.127.255.255作为组播数据报文对应的组播IP地址段。
而且,当VTEP设备接收的报文为组播数据报文时,VTEP设备可以根据预设映射规则,自动映射得到组播数据报文映射后的VTEP组播组地址。但是,当VTEP设备接收的报文为协议报文、广播报文或未知单播泛洪报文时,则需要根据预设映射规则,通过人工分配的方式,为接收的报文分配映射后的VTEP组播组地址。
步骤303,判断是否有与初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果。
本步骤303中判断是否有与初始VTEP组播组地址对应的初始VTEP组播组表项的过程,与步骤202中判断是否有与VTEP组播组地址对应的VTEP组播组表项的过程类似,在此不再赘述。
步骤304,确定协议报文的报文类型。
与步骤301相对应的,协议报文的报文类型可以包括:组播组加入报文和组播组退出报文。
当协议报文的报文类型为组播组加入报文时,说明发送该协议报文的虚拟机需要加入待加入组播地址对应的组播组,但是,若协议报文的报文类型为组播组退出报文,则说明发送该协议报文的虚拟机需要退出待加入组播地址对应的组播组。
当协议报文的报文类型不同时,VTEP设备需要根据不同的报文类型,对初始VTEP组播组表项执行不同的更新操作。因此,在对初始VTEP组播组表项进行更新之前,VTEP设备需要确定协议报文的报文类型。
步骤305,根据协议报文的报文类型和判断结果,对初始VTEP组播组表项进行更新。
VTEP设备可以根据判断结果,确定是否有与初始VTEP组播组地址对应的初始VTEP组播组表项,从而根据该判断结果执行相应的更新操作。因此,VTEP设备可以根据判断结果,对初始VTEP组播组表项进行更新。
进一步地,由于协议报文的类型不同,针对不同类型的协议报文,VTEP设备可以在判断结果的基础上,结合协议报文的报文类型,对初始VTEP组播组表项执行不同的更新操作。
因此,步骤305可以包括步骤3051、步骤3052、步骤3053和步骤3054中的至少一个:
步骤3051,若协议报文的报文类型为组播组加入报文、且不存在初始VTEP组播组表项,则根据待加入组播地址、初始VTEP组播组地址、与协议报文对应的报文接收接口、以及与协议报文对应的主机地址,建立初始VTEP组播组表项。
若协议报文的报文类型为组播组加入报文、且不存在初始VTEP组播组表项,说明VTEP设备并未建立与初始VTEP组播组地址对应的初始VTEP组播组表项,则VTEP设备需要建立初始VTEP组播组表项。
具体地,VTEP设备可以获取协议报文的待加入组播地址、初始VTEP组播组地址、与协议报文对应的报文接收接口、以及与协议报文对应的主机地址,并将待加入组播地址作为映射前地址、将初始VTEP组播组地址作为映射后组播地址、将与协议报文对应的报文接收接口作为出接口、以及将与协议报文对应的主机地址作为发送IGMP报告报文的主机地址,从而根据得到的映射前地址、映射后组播地址、出接口和发送IGMP报告报文的主机地址,建立初始VTEP组播组表项。
需要说明的是,VTEP设备在建立初始VTEP组播组表项后,可以通知VXLAN网络中的核心设备,核心设备则可以加入初始VTEP组播组地址对应的组播组,并建立初始VTEP组播组表项中初始VTEP组播组地址对应的组播转发路径。
可选的,VTEP设备可以向核心设备发送新增信息,该新增信息用于指示核心设备加入初始VTEP组播组地址对应的组播组、并建立初始VTEP组播组表项中初始VTEP组播组地址对应的组播转发路径。
其中,核心设备可以根据PIM协议建立初始VTEP组播组表项中初始VTEP组播组地址对应的组播转发路径。
步骤3052,若协议报文的报文类型为组播组加入报文、且存在初始VTEP组播组表项,则判断初始VTEP组播组表项是否包括与协议报文对应的报文接收接口相一致的出接口,根据判断结果对初始VTEP组播组表项进行更新。
如果VTEP设备中存储有初始VTEP组播组表项,则无需建立初始VTEP组播组表项,但是VTEP设备需要进一步判断初始VTEP组播组表项中,是否包括与协议报文对应的报文接收接口相一致的出接口,以便根据判断结果对初始VTEP组播组表项中的出接口和主机地址进行更新。
可选的,若初始VTEP组播组表项包括与协议报文对应的报文接收接口相一致的出接口,则可以在初始VTEP组播组表项中,将与协议报文对应的主机地址,添加为与该出接口对应的主机地址;但是,若不包括,则可以将与协议报文对应的报文接收接口、以及与协议报文对应的主机地址,添加至初始VTEP组播组表项中。
步骤3053,若协议报文的报文类型为组播组退出报文、且不存在初始VTEP组播组表项,则丢弃协议报文。
如果协议报文的报文类型为组播组退出报文,且VTEP设备不存在初始VTEP组播组表项,则说明VTEP设备并未存储初始VTEP组播组表项,也即是,发送协议报文的虚拟机并未加入相应的组播组,无需退出组播组。因此,VTEP设备可以丢弃协议报文。
步骤3054,若协议报文的报文类型为组播组退出报文、且存在初始VTEP组播组表项,则判断初始VTEP组播组表项中,是否包括与协议报文对应的报文接收接口相一致的出接口。
如果VTEP设备中存在初始VTEP组播组表项,且协议报文的报文类型为组播组退出报文,则说明发送协议报文的虚拟机确实加入了组播组,也需要退出协议报文中待加入组播地址对应的组播组。
但是,初始VTEP组播组表项中可能包括多个出接口,多个出接口中可能包括与协议报文对应的报文接收接口相一致的出接口,也有可能不包括与协议报文对应的报文接收接口相一致的出接口。
因此,VTEP设备需要对初始VTEP组播组表项中的各个出接口进行判断,则步骤3054可以包括步骤3054a和步骤3054b:
步骤3054a,若初始VTEP组播组表项中,不包括与协议报文对应的报文接收接口相一致的出接口,则丢弃协议报文。
若初始VTEP组播组表项中不包括相对应的出接口,则说明发送协议报文的虚拟机并未加入相应的组播组,也无需退出组播组。因此,VTEP设备可以丢弃该协议报文。
步骤3054b,若初始VTEP组播组表项中,包括与协议报文对应的报文接收接口相一致的出接口,则判断该出接口对应的主机地址是否仅包括协议报文对应的主机地址。
但是,若初始VTEP组播组表项中包括相对应的出接口,则需要进一步根据该出接口对应的主机地址进行判断,确定该出接口对应的主机地址是否仅包括协议报文对应的主机地址,以便根据判断结果对初始VTEP组播组表项进行更新。
可选的,若出接口对应的主机地址并非仅包括协议报文对应的主机地址,则VTEP设备可以删除协议报文对应的主机地址。如果出接口对应多个主机地址,而协议报文对应的主机地址仅是多个主机地址中的一个,则VTEP设备可以删除协议报文对应的主机地址,完成对初始VTEP组播组表项的更新。
但是,若出接口对应的主机地址仅包括协议报文对应的主机地址,则VTEP设备可以判断出接口是否为初始VTEP组播组表项中的唯一出接口,以便VTEP设备可以根据判断结果对该出接口或者初始VTEP组播组表项进行删除。
如果出接口并不是初始VTEP组播组表项中的唯一出接口,则VTEP设备在删除该出接口后,该初始VTEP组播组表项中仍然包括其他接口,其他虚拟机发送的报文可以根据该初始VTEP组播组表项进行转发。
但是,如果出接口是初始VTEP组播组表项中的唯一出接口,则VTEP设备在删除该出接口后,该初始VTEP组播组表项中不包括其他接口,该初始VTEP组播组表项不能再用于报文转发,则需要删除该初始VTEP组播组表项。
因此,若出接口并不是初始VTEP组播组表项中的唯一出接口,则VTEP设备可以删除出接口;但是,若出接口是初始VTEP组播组表项中的唯一出接口,则VTEP设备可以删除初始VTEP组播组表项。
需要说明的是,VTEP设备可以向核心设备发送删除信息,该删除信息用于指示核心设备退出初始VTEP组播组地址对应的组播组,并删除初始VTEP组播组表项中初始VTEP组播组地址对应的组播转发路径。
步骤306,对VXLAN组播映射表进行更新。
如果VTEP设备新增了初始VTEP组播组表项,则说明新增了用户地址与VTEP组播组地址之间的映射关系,可以根据新建的初始VTEP组播组表项,对VXLAN组播映射表进行更新。
可选的,VTEP设备可以获取初始VTEP组播组表项中的协议报文对应的主机地址和初始VTEP组播组地址,建立协议报文对应的主机地址和初始VTEP组播组地址之间的映射关系,根据映射关系对VXLAN组播映射表进行更新。
具体地,若VTEP设备新增了初始VTEP组播组表项,则VTEP设备可以获取初始VTEP组播组表项中的协议报文对应的主机地址和初始VTEP组播组地址,并将协议报文对应的主机地址作为VXLAN组播映射表中的用户地址,并将初始VTEP组播组地址作为VXLAN组播映射表中的VTEP组播组地址,从而建立协议报文对应的主机地址和初始VTEP组播组地址之间的映射关系,完成对VXLAN组播映射表的更新。
需要说明的是,VTEP设备可以采用其他方式对VXLAN组播映射表进行更新,例如,若报文类型为非组播数据报文,也即是,报文类型为协议报文、广播报文或未知单播泛洪报文时,VTEP设备可以采用UDP(User Datagram Protocol,用户数据报协议)Hello(问候)报文对VXLAN组播映射表进行更新。
具体地,可以根据各个VTEP设备的优先级高低,在多个VTEP设备选举出优先级最高的VTEP设备统一分配映射关系。其中,高优先级的VTEP设备可以通过UDP Hello报文进行映射关系的同步,而低优先级的VTEP设备可以从收到的UDP Hello报文里获取统一的映射关系进行保存,以便根据保存的映射关系进行地址映射。
另外,若网络中的用户使用的普通组播IP地址较多,则VXLAN组播映射地址的地址段也可以相应扩大,为了方便对映射后的地址进行管理,也可以采用上述UDP Hello报文的方式对VXLAN组播映射表进行更新。
步骤307,根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址。
步骤308,判断是否有与VTEP组播组地址对应的VTEP组播组表项。
步骤309,若存在与VTEP组播组地址对应的VTEP组播组表项,对泛洪报文进行封装,得到第一封装报文。
其中,该第一封装报文可以包括VTEP组播组地址。
步骤310,根据第一封装报文中的VTEP组播组地址和VTEP组播组表项中的出接口,发送第一封装报文。
步骤307至步骤310的过程,与步骤201至步骤204的过程类似,在此不再赘述。
步骤311,接收远端VTEP设备发送的第二封装报文。
VTEP设备不但可以向远端VTEP设备发送封装后的报文,还可以接收远端VTEP设备发送的封装后的报文,以便VTEP设备可以向对应服务器的虚拟机发送接收的报文。
因此,VTEP设备也可以通过VXLAN隧道接收远端VTEP设备发送的第二封装报文,以便在后续步骤中,VTEP设备可以对第二封装报文进行解封装和转发。
步骤312,确定第二封装报文的报文类型。
其中,该第二封装报文的报文类型可以包括:组播数据报文、协议报文、广播报文和未知单播数据报文。
由于泛洪报文包括多种类型,针对不同类型的泛洪报文,VTEP设备可以采用不同的处理方式对第二封装报文进行处理。因此,VTEP设备在对第二封装报文进行处理之前,需要确定第二封装报文的报文类型。
例如,VTEP设备可以根据报文中的指定位置的字段进行判断,确定第二封装报文的报文类型,当然,还可以采用其他方式确定第二封装报文的报文类型,本发明实施例对此不做限定。
步骤313,根据第二封装报文的报文类型发送第二封装报文。
VTEP设备在确定第二封装报文的报文类型后,可以根据该报文类型,采用与该报文类型对应的发送方式,对第二封装报文进行解封装,发送解封装后的泛洪报文。
可选的,若第二封装报文的报文类型为组播数据报文,VTEP设备可以根据目标VTEP组播组表项中的至少一个出接口,发送第二封装报文;若第二封装报文的报文类型为协议报文、广播报文或未知单播数据报文,VTEP设备可以根据预先设置的发送规则,对第二封装报文进行发送。
其中,该目标VTEP组播组表项为与第二封装报文相对应的组播组表项。
具体地,当第二封装报文的报文类型为组播数据报文时,则说明第二封装报文是用于传输数据的报文,则可以对第二封装报文进行解封装,并根据对应的目标VTEP组播组表项中的出接口,通过对应的出接口向服务器发送解封装的泛洪报文,使得服务器可以向虚拟机发送解封装的泛洪报文。
但是,若第二封装报文的报文类型为协议报文、广播报文或未知单播数据报文,则说明第二封装报文用于传输命令或指令,则VTEP设备可以根据预先设置的发送规则,对不同报文类型的报文进行处理。
例如,当第二封装报文的报文类型为协议报文时,VTEP设备可以解封装第二封装报文,并向VTEP所属硬件设备的CPU发送解封装后的泛洪报文。
当然,VTEP设备还可以根据发送规则,对第二封装报文执行丢弃或者解封装并转发至虚拟机的操作,本发明实施例对此不做限定。
综上所述,本发明实施例提供的报文发送方法,通过获取泛洪报文的VTEP组播组地址,并判断VTEP设备是否包括与VTEP组播组地址对应的VTEP组播组表项。当VTEP设备包括对应的VTEP组播组表项时,可以根据VTEP组播组表项中所记录的出接口,对第一封装报文进行发送,使得接收第一封装报文的远端VTEP设备可以向对应服务器的虚拟机转发泛洪报文,避免了远端VTEP设备接收第一封装报文后没有可以接收泛洪报文的虚拟机的情况,减少了VTEP设备发送第一封装报文所占用的带宽,提高了带宽利用率。
进一步地,通过接收协议报文,并根据协议报文中的待加入组播地址进行映射,查找与映射后的初始VTEP组播组地址相对应的初始VTEP组播组表项,并根据查找结果对初始VTEP组播组表项进行更新,完成对各个VTEP组播组表项和初始VTEP组播组地址对应的组播转发路径的新建、删除和维护,使得VTEP设备在接收到泛洪报文后,可以根据及时更新的VTEP组播组表项和初始VTEP组播组地址对应的组播转发路径,能够准确地向远端VTEP设备转发泛洪报文,避免了远端VTEP设备接收泛洪报文后丢弃泛洪报文的情况,节省了VTEP设备转发泛洪报文所占用的带宽,提高了VTEP设备转发泛洪报文的准确度。
图4为本发明一实施例提供的报文发送装置的示意图,如图4所示,该装置具体可以包括:
第一获取模块401,用于根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取该泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址;
第一判断模块402,用于判断是否有与该VTEP组播组地址对应的VTEP组播组表项;
封装模块403,用于若存在与该VTEP组播组地址对应的VTEP组播组表项,对该泛洪报文进行封装,得到第一封装报文,该第一封装报文包括该VTEP组播组地址;
第一发送模块404,用于根据该第一封装报文中的VTEP组播组地址和该VTEP组播组表项中的出接口,发送该第一封装报文。
可选地,参照图5,该装置还可以包括:
第一接收模块405,用于接收协议报文,该协议报文包括待加入组播地址;
映射模块406,用于根据该待加入组播地址和预设映射规则进行映射,得到该协议报文映射后的初始VTEP组播组地址;
第二判断模块407,用于判断是否有与该初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果;
第一更新模块408,用于根据该判断结果,对该初始VTEP组播组表项进行更新。
可选地,该协议报文的报文类型包括:组播组加入报文和组播组退出报文;
参照图6,该装置还可以包括:
第一确定模块409,用于确定该协议报文的报文类型;
该第一更新模块408,具体用于根据该协议报文的报文类型和该判断结果,对该初始VTEP组播组表项进行更新。
可选地,该第一更新模块408,具体用于若该协议报文的报文类型为组播组加入报文、且不存在该初始VTEP组播组表项,则根据该待加入组播地址、该初始VTEP组播组地址、与该协议报文对应的报文接收接口、以及与该协议报文对应的主机地址,建立该初始VTEP组播组表项;向核心设备发送新增信息,该新增信息用于指示该核心设备加入该初始VTEP组播组地址对应的组播组、并建立该初始VTEP组播组表项中该初始VTEP组播组地址对应的组播转发路径。
可选地,该第一更新模块408,具体用于若该协议报文的报文类型为组播组加入报文、且存在该初始VTEP组播组表项,则判断该初始VTEP组播组表项是否包括与该协议报文对应的报文接收接口相一致的出接口;若包括,则在该初始VTEP组播组表项中,将与该协议报文对应的主机地址,添加为与该出接口对应的主机地址;若不包括,则将与该协议报文对应的报文接收接口、以及与该协议报文对应的主机地址,添加至该初始VTEP组播组表项中。
可选地,该第一更新模块408,具体用于若该协议报文的报文类型为组播组退出报文、且不存在该初始VTEP组播组表项,则丢弃该协议报文;若该协议报文的报文类型为组播组退出报文、且存在该初始VTEP组播组表项,则判断该初始VTEP组播组表项中,是否包括与该协议报文对应的报文接收接口相一致的出接口。
可选地,参照图7,该装置还可以包括:
丢弃模块410,用于若该初始VTEP组播组表项中,不包括与该协议报文对应的报文接收接口相一致的出接口,则丢弃该协议报文;
第三判断模块411,用于若该初始VTEP组播组表项中,包括与该协议报文对应的报文接收接口相一致的出接口,则判断该出接口对应的主机地址是否仅包括该协议报文对应的主机地址。
可选地,参照图8,该装置还可以包括:
第一删除模块412,用于若该出接口对应的主机地址并非仅包括该协议报文对应的主机地址,则删除该协议报文对应的主机地址;
第四判断模块413,用于若该出接口对应的主机地址仅包括该协议报文对应的主机地址,则判断该出接口是否为该初始VTEP组播组表项中的唯一出接口。
可选地,参照图9,该装置还可以包括:
第二删除模块414,用于若该出接口并不是该初始VTEP组播组表项中的唯一出接口,则删除该出接口;
第三删除模块415,用于若该出接口是该初始VTEP组播组表项中的唯一出接口,则删除该初始VTEP组播组表项;
第二发送模块416,用于并向核心设备发送删除信息,该删除信息用于指示该核心设备退出该初始VTEP组播组地址对应的组播组,并删除该初始VTEP组播组表项中该初始VTEP组播组地址对应的组播转发路径。
可选地,参照图10,该装置还可以包括:
第二获取模块417,用于获取该初始VTEP组播组表项中的协议报文对应的主机地址和初始VTEP组播组地址;
建立模块418,用于建立该协议报文对应的主机地址和该初始VTEP组播组地址之间的映射关系;
第二更新模块419,用于根据该映射关系对该VXLAN组播映射表进行更新。
可选地,参照图11,该装置还可以包括:
第二接收模块420,用于接收远端VTEP设备发送的第二封装报文;
第二确定模块421,用于确定该第二封装报文的报文类型;
第三发送模块422,用于根据该第二封装报文的报文类型发送该第二封装报文。
可选地,该第二封装报文的报文类型包括:组播数据报文、协议报文、广播报文和未知单播数据报文;
该第三发送模块422,具体用于若该第二封装报文的报文类型为组播数据报文,根据目标VTEP组播组表项中的至少一个出接口,发送该第二封装报文,该目标VTEP组播组表项为与该第二封装报文相对应的组播组表项;若该第二封装报文的报文类型为协议报文、广播报文或未知单播数据报文,根据预先设置的发送规则,对该第二封装报文进行发送。
综上所述,本发明实施例提供的报文发送装置,通过获取泛洪报s文的VTEP组播组地址,并判断VTEP设备是否包括与VTEP组播组地址对应的VTEP组播组表项。当VTEP设备包括对应的VTEP组播组表项时,可以根据VTEP组播组表项中所记录的出接口,对第一封装报文进行发送,使得接收第一封装报文的远端VTEP设备可以向对应服务器的虚拟机转发泛洪报文,避免了远端VTEP设备接收第一封装报文后没有可以接收泛洪报文的虚拟机的情况,减少了VTEP设备发送第一封装报文所占用的带宽,提高了带宽利用率。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图12为本发明实施例提供的报文发送装置的示意图,该装置可以集成于终端设备或者终端设备的芯片,该终端可以是具备图像处理功能的计算设备。
该装置包括:存储器1201、处理器1202。
存储器1201用于存储程序,处理器1202调用存储器1201存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (14)
1.一种报文发送方法,其特征在于,所述方法包括:
根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址;
判断是否有与所述VTEP组播组地址对应的VTEP组播组表项;
若存在与所述VTEP组播组地址对应的VTEP组播组表项,对所述泛洪报文进行封装,得到第一封装报文,所述第一封装报文包括所述VTEP组播组地址;
根据所述第一封装报文中的VTEP组播组地址和所述VTEP组播组表项中的出接口,发送所述第一封装报文。
2.根据权利要求1所述的方法,其特征在于,在所述根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址之前,所述方法还包括:
接收协议报文,所述协议报文包括待加入组播地址;
根据所述待加入组播地址和预设映射规则进行映射,得到所述协议报文映射后的初始VTEP组播组地址;
判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果;
根据所述判断结果,对所述初始VTEP组播组表项进行更新。
3.根据权利要求2所述的方法,其特征在于,所述协议报文的报文类型包括:组播组加入报文和组播组退出报文;
在所述判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果之前,所述方法还包括:
确定所述协议报文的报文类型;
所述根据所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新。
4.根据权利要求3所述的方法,其特征在于,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组加入报文、且不存在所述初始VTEP组播组表项,则根据所述待加入组播地址、所述初始VTEP组播组地址、与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,建立所述初始VTEP组播组表项;
向核心设备发送新增信息,所述新增信息用于指示所述核心设备加入所述初始VTEP组播组地址对应的组播组、并建立所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
5.根据权利要求3所述的方法,其特征在于,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组加入报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项是否包括与所述协议报文对应的报文接收接口相一致的出接口;
若包括,则在所述初始VTEP组播组表项中,将与所述协议报文对应的主机地址,添加为与所述出接口对应的主机地址;
若不包括,则将与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,添加至所述初始VTEP组播组表项中。
6.根据权利要求3所述的方法,其特征在于,所述根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新,包括:
若所述协议报文的报文类型为组播组退出报文、且不存在所述初始VTEP组播组表项,则丢弃所述协议报文;
若所述协议报文的报文类型为组播组退出报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项中,是否包括与所述协议报文对应的报文接收接口相一致的出接口;
若所述初始VTEP组播组表项中,不包括与所述协议报文对应的报文接收接口相一致的出接口,则丢弃所述协议报文;
若所述初始VTEP组播组表项中,包括与所述协议报文对应的报文接收接口相一致的出接口,则判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址;
若所述出接口对应的主机地址仅包括所述协议报文对应的主机地址,则判断所述出接口是否为所述初始VTEP组播组表项中的唯一出接口;
若所述出接口并不是所述初始VTEP组播组表项中的唯一出接口,则删除所述出接口;
若所述出接口是所述初始VTEP组播组表项中的唯一出接口,则删除所述初始VTEP组播组表项;
并向核心设备发送删除信息,所述删除信息用于指示所述核心设备退出所述初始VTEP组播组地址对应的组播组,并删除所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
7.根据权利要求6所述的方法,其特征在于,在所述判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址之后,所述方法还包括:
若所述出接口对应的主机地址并非仅包括所述协议报文对应的主机地址,则删除所述协议报文对应的主机地址。
8.一种报文发送装置,其特征在于,所述装置包括:
第一获取模块,用于根据泛洪报文携带的目的地址和预先设置的可扩展虚拟局域网VXLAN组播映射表,获取所述泛洪报文映射的可扩展虚拟局域网隧道端点VTEP组播组地址;
第一判断模块,用于判断是否有与所述VTEP组播组地址对应的VTEP组播组表项;
封装模块,用于若存在与所述VTEP组播组地址对应的VTEP组播组表项,对所述泛洪报文进行封装,得到第一封装报文,所述第一封装报文包括所述VTEP组播组地址;
第一发送模块,用于根据所述第一封装报文中的VTEP组播组地址和所述VTEP组播组表项中的出接口,发送所述第一封装报文。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一接收模块,用于接收协议报文,所述协议报文包括待加入组播地址;
映射模块,用于根据所述待加入组播地址和预设映射规则进行映射,得到所述协议报文映射后的初始VTEP组播组地址;
第二判断模块,用于判断是否有与所述初始VTEP组播组地址对应的初始VTEP组播组表项,得到判断结果;
第一更新模块,用于根据所述判断结果,对所述初始VTEP组播组表项进行更新。
10.根据权利要求9所述的装置,其特征在于,所述协议报文的报文类型包括:组播组加入报文和组播组退出报文;
所述装置还包括:
第一确定模块,用于确定所述协议报文的报文类型;
所述第一更新模块,具体用于根据所述协议报文的报文类型和所述判断结果,对所述初始VTEP组播组表项进行更新。
11.根据权利要求10所述的装置,其特征在于,所述第一更新模块,具体用于若所述协议报文的报文类型为组播组加入报文、且不存在所述初始VTEP组播组表项,则根据所述待加入组播地址、所述初始VTEP组播组地址、与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,建立所述初始VTEP组播组表项;向核心设备发送新增信息,所述新增信息用于指示所述核心设备加入所述初始VTEP组播组地址对应的组播组、并建立所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
12.根据权利要求10所述的装置,其特征在于,所述第一更新模块,具体用于若所述协议报文的报文类型为组播组加入报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项是否包括与所述协议报文对应的报文接收接口相一致的出接口;若包括,则在所述初始VTEP组播组表项中,将与所述协议报文对应的主机地址,添加为与所述出接口对应的主机地址;若不包括,则将与所述协议报文对应的报文接收接口、以及与所述协议报文对应的主机地址,添加至所述初始VTEP组播组表项中。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
所述第一更新模块,具体用于若所述协议报文的报文类型为组播组退出报文、且不存在所述初始VTEP组播组表项,则丢弃所述协议报文;若所述协议报文的报文类型为组播组退出报文、且存在所述初始VTEP组播组表项,则判断所述初始VTEP组播组表项中,是否包括与所述协议报文对应的报文接收接口相一致的出接口;
丢弃模块,用于若所述初始VTEP组播组表项中,不包括与所述协议报文对应的报文接收接口相一致的出接口,则丢弃所述协议报文;
第三判断模块,用于若所述初始VTEP组播组表项中,包括与所述协议报文对应的报文接收接口相一致的出接口,则判断所述出接口对应的主机地址是否仅包括所述协议报文对应的主机地址;
所述装置还包括:第四判断模块,用于若所述出接口对应的主机地址仅包括所述协议报文对应的主机地址,则判断所述出接口是否为所述初始VTEP组播组表项中的唯一出接口;
第二删除模块,用于若所述出接口并不是所述初始VTEP组播组表项中的唯一出接口,则删除所述出接口;
第三删除模块,用于若所述出接口是所述初始VTEP组播组表项中的唯一出接口,则删除所述初始VTEP组播组表项;
第二发送模块,用于并向核心设备发送删除信息,所述删除信息用于指示所述核心设备退出所述初始VTEP组播组地址对应的组播组,并删除所述初始VTEP组播组表项中所述初始VTEP组播组地址对应的组播转发路径。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第一删除模块,用于若所述出接口对应的主机地址并非仅包括所述协议报文对应的主机地址,则删除所述协议报文对应的主机地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811007624.0A CN109167731B (zh) | 2018-08-30 | 2018-08-30 | 报文发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811007624.0A CN109167731B (zh) | 2018-08-30 | 2018-08-30 | 报文发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109167731A CN109167731A (zh) | 2019-01-08 |
CN109167731B true CN109167731B (zh) | 2021-06-08 |
Family
ID=64893542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811007624.0A Active CN109167731B (zh) | 2018-08-30 | 2018-08-30 | 报文发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109167731B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103841028A (zh) * | 2014-03-24 | 2014-06-04 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
CN104243269A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟扩展局域网报文的处理方法及装置 |
CN104954218A (zh) * | 2014-03-24 | 2015-09-30 | 杭州华三通信技术有限公司 | 分布式虚拟交换装置及转发方法 |
CN105227471A (zh) * | 2014-05-29 | 2016-01-06 | 杭州华三通信技术有限公司 | 一种evi网络中建立组播转发表项的方法和边缘设备 |
CN106130819A (zh) * | 2016-07-04 | 2016-11-16 | 锐捷网络股份有限公司 | Vtep异常的检测方法及装置 |
CN106161259A (zh) * | 2015-03-27 | 2016-11-23 | 杭州华三通信技术有限公司 | 虚拟扩展局域网vxlan的组播数据报文转发方法和设备 |
CN106385354A (zh) * | 2016-08-30 | 2017-02-08 | 锐捷网络股份有限公司 | 报文转发方法及装置 |
CN106656722A (zh) * | 2016-12-12 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种vxlan组播方法和装置 |
US9692698B2 (en) * | 2014-06-30 | 2017-06-27 | Nicira, Inc. | Methods and systems to offload overlay network packet encapsulation to hardware |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9325636B2 (en) * | 2013-06-14 | 2016-04-26 | Cisco Technology, Inc. | Scaling interconnected IP fabric data centers |
-
2018
- 2018-08-30 CN CN201811007624.0A patent/CN109167731B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103841028A (zh) * | 2014-03-24 | 2014-06-04 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
CN104954218A (zh) * | 2014-03-24 | 2015-09-30 | 杭州华三通信技术有限公司 | 分布式虚拟交换装置及转发方法 |
CN105227471A (zh) * | 2014-05-29 | 2016-01-06 | 杭州华三通信技术有限公司 | 一种evi网络中建立组播转发表项的方法和边缘设备 |
US9692698B2 (en) * | 2014-06-30 | 2017-06-27 | Nicira, Inc. | Methods and systems to offload overlay network packet encapsulation to hardware |
CN104243269A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟扩展局域网报文的处理方法及装置 |
CN106161259A (zh) * | 2015-03-27 | 2016-11-23 | 杭州华三通信技术有限公司 | 虚拟扩展局域网vxlan的组播数据报文转发方法和设备 |
CN106130819A (zh) * | 2016-07-04 | 2016-11-16 | 锐捷网络股份有限公司 | Vtep异常的检测方法及装置 |
CN106385354A (zh) * | 2016-08-30 | 2017-02-08 | 锐捷网络股份有限公司 | 报文转发方法及装置 |
CN106656722A (zh) * | 2016-12-12 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种vxlan组播方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109167731A (zh) | 2019-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11831526B2 (en) | Service chain fault detection method and apparatus | |
EP3142310B1 (en) | Method, device, and system for configuring flow entries | |
US11374857B2 (en) | Network device management method and apparatus, and system for indicating a network device to perform management operation | |
US10397126B2 (en) | VXLAN packet transmission | |
CN108429680B (zh) | 一种基于虚拟私有云的路由配置方法、系统、介质及设备 | |
US10652142B2 (en) | SDN-based ARP implementation method and apparatus | |
WO2022062506A1 (zh) | 一种数据处理方法、装置、存储介质及电子装置 | |
WO2017054576A1 (zh) | 单播隧道建立方法、装置和系统 | |
US9900238B2 (en) | Overlay network-based original packet flow mapping apparatus and method therefor | |
EP3179687B1 (en) | Network flow information statistics method and apparatus | |
CN106921578B (zh) | 一种转发表项的生成方法和装置 | |
CN107547346B (zh) | 一种报文传输方法和装置 | |
CN112134776B (zh) | 生成组播转发表项的方法和接入网关 | |
CN113132202B (zh) | 一种报文传输方法及相关设备 | |
US20170104669A1 (en) | Multicast message translation in a network device | |
US20240106751A1 (en) | Method and apparatus for processing detnet data packet | |
CN111193756B (zh) | 一种vxlan隧道负载均衡方法及相关设备 | |
EP4131870A1 (en) | Service processing method and apparatus, and device and storage medium | |
US20220393908A1 (en) | Message Encapsulation Method and Apparatus, and Message Decapsulation Method and Apparatus | |
US20220210036A1 (en) | Network Measurement System And Method, Device, And Storage Medium | |
CN106992918B (zh) | 报文转发方法和装置 | |
CN110022263B (zh) | 一种数据传输的方法及相关装置 | |
CN115242892B (zh) | 一种流标识获取方法、装置、设备及介质 | |
CN113765809A (zh) | Bier组播流量的统计方法、设备以及系统 | |
CN109167731B (zh) | 报文发送方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |