一种IP地址获取方法及VTEP节点与流程

文档序号:24119744发布日期:2021-02-27 16:15阅读:294来源:国知局
一种IP地址获取方法及VTEP节点与流程
一种ip地址获取方法及vtep节点
技术领域
[0001]
本发明涉及虚拟扩展局域网技术领域,具体涉及一种ip地址获取方法及vtep节点。


背景技术:

[0002]
在vxlan(virtual extensible lan,虚拟扩展局域网)网络中,对于以太虚拟专用网络(ethernet virtual private network,evpn)的组网场景下,叶子节点(leaf)1和leaf2为分布式网关,脊节点(spine)为三层网关,leaf1、leaf2和spine之间两两连接,且leaf1和leaf2之间的连接为边界网关协议(bordergateway protocol,bgp)邻居连接。spine连接于动态主机配置协议(dynamic hostconfiguration protocol,dhcp)服务器,leaf1或leaf2下挂客户端,且leaf1或leaf2可作为dhcp中继。以leaf1为例,leaf1下挂的客户端申请互联网协议(internet protocoladdress,ip)地址时,可向leaf1发送dhcp发现discover报文,然后leaf1作为dhcp中继向spine转发dhcp discover报文,然而,leaf1转发的dhcp discover报文的源地址为leaf1连接于客户端的接口的接口地址,所以后续dhcp服务器发送回复报文时,将以该接口地址作为目的地址。而leaf1和leaf2上相同虚拟交换接口(virtual switch interface,vsi)的接口地址相同,会导致本应被转发给leaf1的报文可能被转发至leaf2,导致leaf1下挂的客户端无法申请到ip地址。


技术实现要素:

[0003]
为此,本发明提供一种ip地址获取方法及vtep节点,以解决现有技术中由于leaf1和leaf2上相同虚拟交换接口的接口地址相同而导致的leaf1下挂的客户端无法申请到ip地址的问题。
[0004]
为了实现上述目的,本发明第一方面提供一种ip地址获取方法,应用于互为向后兼容mp-bgp对等体的虚拟扩展局域网隧道终端vtep节点,包括:
[0005]
当接收到动态主机配置协议dhcp服务器通过路由器发送的携带有ip地址和第一物理mac地址的dhcp提供offer报文时,获取其中携带的第一mac地址,其中,所述ip地址是所述dhcp服务器基于所述mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp发现discover报文分配的;
[0006]
若未在本地mac地址表中查询到所述第一mac地址,则向与本vtep节点互为mp-bgp对等体的其他vtep节点获取路由跳数;
[0007]
根据所述路由跳数修改所述dhcp offer报文中的ttl值,并将修改后的所述dhcp offer报文转发至所述mp-bgp对等体中的其他vtep节点,以使所述虚拟机连接的vtep节点向所述虚拟机转发所述dhcp offer报文。
[0008]
在一些实施例中,所述方法还包括:
[0009]
当接收到dhcp服务器通过路由器发送的dhcp确认ack报文时,获取其中携带的第二mac地址,其中,所述dhcp ack报文是所述dhcp服务器基于所述mp-bgp对等体中的vtep节
点所连接的虚拟机发送的dhcp请求request报文生成的;
[0010]
若在本地mac地址表中未查询到所述第二mac地址,则根据所述路由跳数修改所述dhcp ack报文中的ttl值,并将修改后的所述dhcp ack报文转发至所述其他vtep节点,以使所述虚拟机连接的vtep节点向所述虚拟机转发所述dhcp ack报文。
[0011]
在一些实施例中,所述方法还包括:
[0012]
当接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp offer报文时,获取其中携带的第三mac地址;
[0013]
若在本地mac地址表中查询到所述第三mac地址,则根据到所述第三mac地址对应的虚拟机的路由跳数修改所述dhcp offer报文中的ttl值,将修改后的所述dhcp offer报文转发至所述第三mac地址对应的虚拟机;
[0014]
若未在本地mac地址表中查询到所述第三mac地址且所述dhcp offer报文中的ttl值为0,则丢弃所述dhcp offer报文。
[0015]
在一些实施例中,所述方法还包括:
[0016]
当接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp ack报文时,获取其中携带的第四mac地址;
[0017]
若在本地mac地址表中查询到所述第四mac地址,则根据到所述第四mac地址对应的虚拟机的路由跳数修改所述dhcp ack报文中的ttl值,将修改后的所述dhcp ack报文转发至所述第四mac地址对应的虚拟机;
[0018]
若未在本地mac地址表中查询到所述第四mac地址且所述dhcp ack报文中的ttl值为0,则丢弃所述dhcp ack报文。
[0019]
在一些实施例中,所述方法还包括:
[0020]
接收本vtep节点连接的虚拟机发送的dhcp discover报文,获取其中携带的mac地址;
[0021]
将所述mac地址存储到本地mac地址表中。
[0022]
为了实现上述目的,本发明第二方面提供一种vtep节点,包括:
[0023]
接收模块,用于接收动态主机配置协议dhcp服务器通过路由器发送的携带有ip地址和第一物理mac地址的dhcp提供offer报文,其中,所述ip地址是所述dhcp服务器基于mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp发现discover报文分配的;
[0024]
获取模块,用于获取所述dhcp offer报文中携带的第一mac地址,以及用于若查询模块未在本地mac地址表中查询到所述第一mac地址,则向与本vtep节点互为mp-bgp对等体的其他vtep节点获取路由跳数;
[0025]
查询模块,用于在本地mac地址表中查询所述第一mac地址;
[0026]
转发模块,用于根据所述路由跳数修改所述dhcp offer报文中的ttl值,并将修改后的所述dhcp offer报文转发至所述mp-bgp对等体中的其他vtep节点,以使所述虚拟机连接的vtep节点向所述虚拟机转发所述dhcp offer报文。
[0027]
在一些实施例中,所述接收模块还用于,接收dhcp服务器通过路由器发送的dhcp确认ack报文;
[0028]
所述获取模块还用于,获取所述dhcp ack报文中携带的第二mac地址,其中,所述dhcp ack报文是所述dhcp服务器基于所述mp-bgp对等体中的vtep节点所连接的虚拟机发
送的dhcp请求request报文生成的;
[0029]
所述查询模块还用于,在本地mac地址表中查询所述第二mac地址;
[0030]
所述转发模块还用于,若所述查询模块在本地mac地址表中未查询到所述第二mac地址,则根据所述路由跳数修改所述dhcp ack报文中的ttl值,并将修改后的所述dhcp ack报文转发至所述其他vtep节点,以使所述虚拟机连接的vtep节点向所述虚拟机转发所述dhcp ack报文。
[0031]
在一些实施例中,所述接收模块还用于,接收与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp offer报文;
[0032]
所述获取模块还用于,获取所述dhcp offer报文中携带的第三mac地址;
[0033]
所述查询模块还用于,在本地mac地址表中查询所述第三mac地址;
[0034]
所述转发模块还用于,若所述查询模块在本地mac地址表中查询到所述第三mac地址,则根据到所述第三mac地址对应的虚拟机的路由跳数修改所述dhcp offer报文中的ttl值,将修改后的所述dhcp offer报文转发至所述第三mac地址对应的虚拟机;以及用于若所述查询模块未在本地mac地址表中查询到所述第三mac地址且所述dhcp offer报文中的ttl值为0,则丢弃所述dhcp offer报文。
[0035]
在一些实施例中,所述接收模块还用于,接收与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp ack报文;
[0036]
所述获取模块还用于,获取所述dhcp ack报文中携带的第四mac地址;
[0037]
所述查询模块还用于,在本地mac地址表中查询所述第四mac地址
[0038]
所述转发模块还用于,若所述查询模块在本地mac地址表中查询到所述第四mac地址,则根据到所述第四mac地址对应的虚拟机的路由跳数修改所述dhcp ack报文中的ttl值,将修改后的所述dhcp ack报文转发至所述第四mac地址对应的虚拟机;以及用于若所述查询模块未在本地mac地址表中查询到所述第四mac地址且所述dhcp ack报文中的ttl值为0,则丢弃所述dhcp ack报文。
[0039]
在一些实施例中,所述接收模块还用于,接收本vtep节点连接的虚拟机发送的dhcp discover报文;
[0040]
所述获取模块还用于,获取所述dhcp discover报文中携带的mac地址;
[0041]
所述vtep节点还包括存储模块,所述存储模块用于,将所述mac地址存储到本地mac地址表中。
[0042]
本发明具有如下优点:
[0043]
根据本发明实施例提供的ip地址获取方法,当出现路由器将dhcp offer报文发送给与发送相应dhcp discover报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况时,接收到dhcp offer报文的vtep节点可以向mp-bgp对等体中的其他vtep节点获取路由跳数,根据路由跳数修改dhcp offer报文中的ttl值,并将修改后的dhcp offer报文转发至mp-bgp对等体中的其他vtep节点,以使发送相应dhcp discover报文的虚拟机连接的vtep节点向虚拟机转发dhcp offer报文,从而确保虚拟机能够成功从dhcp服务器处获取ip地址。
附图说明
[0044]
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。
[0045]
图1为本发明实施例1提供的ip地址获取方法的流程示意图一;
[0046]
图2为本发明实施例2提供的ip地址获取方法的流程示意图二;
[0047]
图3为本发明实施例3提供的当vtep节点接收到其他vtep节点转发的dhcp offer报文时的流程示意图;
[0048]
图4为本发明实施例4提供的当vtep节点接收到其他vtep节点转发的dhcp ack报文时的流程示意图;
[0049]
图5为本发明实施例5提供的vtep节点存储虚拟机mac地址的流程示意图;
[0050]
图6为本发明实施例6提供的ip地址获取方法的具体流程示意图;
[0051]
图7为本发明实施例7提供的vtep节点的结构示意图。
具体实施方式
[0052]
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0053]
本发明实施例提供一种ip地址获取方法,应用于互为向后兼容mp-bgp对等体的vtep(vxlan tunnel end point,vxlan隧道终端)节点,如图1所示,可以包括以下步骤:
[0054]
步骤11,当接收到dhcp服务器通过路由器发送的携带有ip地址和第一物理mac地址的dhcp提供offer报文时,获取其中携带的第一mac地址。
[0055]
其中,所述ip地址是所述dhcp服务器基于所述mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp发现discover报文分配的。
[0056]
在本发明实施例中,路由器连接到dhcp服务器,虚拟机连接到互为mp-bgp对等体的多个vtep节点中的一个vtep节点。
[0057]
虚拟机开机后,将向其所连接的vtep节点发送dhcp discover报文,该vtep节点开启dhcp中继功能,将dhcp discover报文转发至路由器,由路由器再将dhcp discover报文转发至dhcp服务器。虚拟机发送dhcp discover报文用于向dhcp服务器获取ip地址,dhcp服务器接收dhcp discover报文后,将依次通过路由器和vtep节点向虚拟机返回dhcp offer报文。dhcp discover报文携带有虚拟机的mac地址,dhcp offer报文携带有该mac地址以及dhcp服务器为虚拟机分配的ip地址,当vtep节点接收到路由器转发的dhcp offer报文时,需要获取其中携带的第一mac地址。
[0058]
步骤12,若未在本地mac地址表中查询到第一mac地址,则向与本vtep节点互为mp-bgp对等体的其他vtep节点获取路由跳数。
[0059]
路由器接收到的dhcp discover报文的源地址是发送该报文的vtep节点的下联接口ip地址,接收到dhcp服务器返回的dhcp offer报文时,路由器将向该下联接口ip地址转发dhcp offer报文,但互为mp-bgp对等体的多个vtep节点为分布式网关,具有相同的下联接口ip地址,因此可能出现路由器将dhcp offer报文发送给与发送dhcp discover报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况。
[0060]
虚拟机向vtep节点发送dhcp discover报文后,该vtep节点会将dhcp discover报
文中携带的该虚拟机的mac地址、vni(vxlan network identifier,vxlan网络标识)和报文入接口(即二层子接口对应的物理接口)之间的对应关系存储到本地mac地址表中。因此,当接收到dhcp offer报文的vtep节点未在本地mac地址表中查询到第一mac地址时,说明第一mac地址对应的虚拟机不是连接到本vtep节点的虚拟机,出现了路由器将dhcp offer报文发送给了与发送dhcp discover报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况。此时接收到dhcp offer报文的vtep节点可以向与本vtep节点互为mp-bgp对等体的其他vtep节点发送跟踪路由traceroute消息以便获取路由跳数。
[0061]
举例来说,vtep1、vtep2和vtep3互为mp-bgp对等体,vm1为连接到vtep1的虚拟机,r1连接到vtep1、vtep2、vtep3以及dhcp服务器,vm1向vtep1发送dhcp discover报文,vtep1将dhcp discover报文转发至r1,r1将dhcp discover报文转发至dhcp服务器,dhcp服务器期望向vm1返回dhcp offer报文,首先将dhcp offer报文发送至r1,但由于vtep1、vtep2和vtep3具有相同的下联接口ip地址,r1可能会将dhcp offer报文发送给vtep2(或vtep3),而不是vtep1。当vtep2(或vtep3)接收到r1发送的dhcp offer报文但报文中携带的mac地址在本地mac地址表中不存在时,vtep2(或vtep3)可以向vtep1和vtep3(或vtep1和vtep2)获取路由跳数。
[0062]
步骤13,根据路由跳数修改dhcp offer报文中的ttl(time to live,生存时间)值,并将修改后的dhcp offer报文转发至mp-bgp对等体中的其他vtep节点,以使虚拟机连接的vtep节点向虚拟机转发dhcp offer报文。
[0063]
向与本vtep节点互为mp-bgp对等体的其他vtep节点获取到路由跳数后,本vtep节点可以修改dhcp offer报文中的ttl值使得该dhcp offer报文可以存活至到达其他vtep节点,并将修改后的dhcp offer报文转发至其他vtep节点。由于与本vtep节点互为mp-bgp对等体的其他vtep节点中必定包括虚拟机连接的vtep节点,本vtep节点向其他vtep节点转发修改后的dhcp offer报文后,虚拟机连接的vtep节点必定可以将dhcp offer报文发送给虚拟机,因此虚拟机能够成功从dhcp服务器获取到ip地址。
[0064]
仍以上述vtep1、vtep2和vtep3的情况为例,vtep2向vtep1和vtep3获取到路由跳数后,可以根据路由跳数修改dhcp offer报文中的ttl值,并将修改后的dhcp offer报文转发至vtep1和vtep3,由于vtep1即为vm1连接的vtep节点,vtep1必定可以将dhcp offer报文发送给虚拟机,虚拟机也就可以成功获取到ip地址。
[0065]
通过上述步骤11-13可以看出,根据本发明实施例提供的ip地址获取方法,当出现路由器将dhcp offer报文发送给与发送相应dhcp discover报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况时,接收到dhcp offer报文的vtep节点可以向mp-bgp对等体中的其他vtep节点获取路由跳数,根据路由跳数修改dhcp offer报文中的ttl值,并将修改后的dhcp offer报文转发至mp-bgp对等体中的其他vtep节点,以使发送相应dhcp discover报文的虚拟机连接的vtep节点向虚拟机转发dhcp offer报文,从而确保虚拟机能够成功从dhcp服务器处获取ip地址。
[0066]
在一些实施例中,本发明实施例提供的ip地址获取方法,如图2所示,还可以包括以下步骤:
[0067]
步骤21,当接收到dhcp服务器通过路由器发送的dhcp确认ack报文时,获取其中携带的第二mac地址。
[0068]
其中,所述dhcp ack报文是所述dhcp服务器基于所述mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp请求request报文生成的。
[0069]
由于虚拟机是向多个dhcp服务器发送dhcp discover报文以请求获得ip地址,虚拟机可能会接收到很多dhcp offer报文,其中均携带dhcp服务器为虚拟机分配的ip地址。虚拟机必须选择一个发送dhcp offer报文的dhcp服务器作为自己的目标服务器,并向该dhcp服务器发送一个dhcp request报文,请求使用该dhcp服务器所分配的ip地址,该dhcp服务器接收dhcp request报文后,期望向虚拟机返回dhcp ack报文,首先将dhcp ack报文发送至路由器,由路由器将dhcp ack报文转发至vtep节点。vtep节点接收到dhcp服务器通过路由器发送的dhcp ack报文时,需要获取其中携带的第二mac地址。
[0070]
步骤22,若在本地mac地址表中未查询到第二mac地址,则根据路由跳数修改dhcp ack报文中的ttl值,并将修改后的dhcp ack报文转发至其他vtep节点,以使虚拟机连接的vtep节点向虚拟机转发dhcp ack报文。
[0071]
路由器接收到的dhcp request报文的源地址是发送该报文的vtep节点的下联接口ip地址,接收到dhcp服务器返回的dhcp ack报文时,路由器将向该下联接口ip地址转发dhcp ack报文,但互为mp-bgp对等体的多个vtep节点为分布式网关,具有相同的下联接口ip地址,因此可能出现路由器将dhcp ack报文发送给与发送dhcp request报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况。
[0072]
当接收到dhcp ack报文的vtep节点未在本地mac地址表中查询到第二mac地址时,说明第二mac地址对应的虚拟机不是连接到本vtep节点的虚拟机,出现了路由器将dhcp ack报文发送给了与发送dhcp request报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况。此时接收到dhcp ack报文的vtep节点可以直接修改dhcp ack报文中的ttl值使得该dhcp ack报文可以存活至到达其他vtep节点,并将修改后的dhcp ack报文转发至其他vtep节点。由于与本vtep节点互为mp-bgp对等体的其他vtep节点中必定包括虚拟机连接的vtep节点,本vtep节点向其他vtep节点转发修改后的dhcp ack报文后,虚拟机连接的vtep节点必定可以将dhcp ack报文发送给虚拟机,因此虚拟机能够成功使用所选择的ip地址。
[0073]
通过上述步骤21-22可以看出,根据本发明实施例提供的ip地址获取方法,当出现路由器将dhcp ack报文发送给与发送相应dhcp request报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况时,接收到dhcp ack报文的vtep节点可以根据路由跳数修改dhcp ack报文中的ttl值,并将修改后的dhcp ack报文转发至mp-bgp对等体中的其他vtep节点,以使发送相应dhcp request报文的虚拟机连接的vtep节点向虚拟机转发dhcp ack报文,从而确保虚拟机能够成功使用所选择的dhcp服务器分配的ip地址。
[0074]
在一些实施例中,本发明实施例提供的ip地址获取方法,如图3所示,还可以包括以下步骤:
[0075]
步骤31,当接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp offer报文时,获取其中携带的第三mac地址。
[0076]
当本vtep节点接收到mp-bgp对等体中的其他vtep节点发送的dhcp offer报文时,说明出现了路由器将dhcp offer报文发送给了与发送相应dhcp discover报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况,该向本vtep节点发送dhcp offer报文的其他vtep节点并不是向路由器发送相应dhcp discover报文的vtep节点,而本vtep节点有可能
是向路由器发送相应dhcp discover报文的vtep节点,首先需要获取其中携带的第三mac地址。
[0077]
步骤32,若在本地mac地址表中查询到第三mac地址,则根据到第三mac地址对应的虚拟机的路由跳数修改dhcp offer报文中的ttl值,将修改后的dhcp offer报文转发至第三mac地址对应的虚拟机。
[0078]
当本vtep节点在本地mac地址表中查询到第三mac地址时,说明第三mac地址对应的虚拟机是连接到本vtep节点的虚拟机,也就是说,本vtep节点就是向路由器发送相应dhcp discover报文的vtep节点,此时本vtep节点可以直接根据到第三mac地址对应的虚拟机的路由跳数修改dhcp offer报文中的ttl值使得该dhcp offer报文可以存活至到达该虚拟机,并将修改后的dhcp offer报文转发至该虚拟机,使得该虚拟机可以成功从dhcp offer报文中获取ip地址。
[0079]
步骤33,若未在本地mac地址表中查询到第三mac地址且dhcp offer报文中的ttl值为0,则丢弃dhcp offer报文。
[0080]
本vtep节点接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp offer报文,说明该其他vtep节点不是向路由器发送相应dhcp discover报文的vtep节点,本vtep节点未在本地mac地址表中查询到第三mac地址且dhcp offer报文中的ttl值为0,说明本vtep节点也不是向路由器发送相应dhcp discover报文的vtep节点。但因为该向本vtep节点发送dhcp offer报文的vtep节点是将dhcp offer报文转发至mp-bgp对等体中的所有其他vtep节点,因此必定还存在其他能够在本地mac地址表中查询到第三mac地址的vtep节点,此时本vtep节点可以直接将dhcp discover报文丢弃。
[0081]
在一些实施例中,本发明实施例提供的ip地址获取方法,如图4所示,还可以包括以下步骤:
[0082]
步骤41,当接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp ack报文时,获取其中携带的第四mac地址。
[0083]
当本vtep节点接收到mp-bgp对等体中的其他vtep节点发送的dhcp ack报文时,说明出现了路由器将dhcp ack报文发送给了与发送相应dhcp request报文的vtep节点互为mp-bgp对等体的其他vtep节点的情况,该向本vtep节点发送dhcp ack报文的其他vtep节点并不是向路由器发送相应dhcp request报文的vtep节点,而本vtep节点有可能是向路由器发送相应dhcp request报文的vtep节点,首先需要获取其中携带的第四mac地址。
[0084]
步骤42,若在本地mac地址表中查询到第四mac地址,则根据到第四mac地址对应的虚拟机的路由跳数修改dhcp ack报文中的ttl值,将修改后的dhcp ack报文转发至第四mac地址对应的虚拟机。
[0085]
当本vtep节点在本地mac地址表中查询到第四mac地址时,说明第四mac地址对应的虚拟机是连接到本vtep节点的虚拟机,也就是说,本vtep节点就是向路由器发送相应dhcp request报文的vtep节点,此时本vtep节点可以直接根据到第四mac地址对应的虚拟机的路由跳数修改dhcp ack报文中的ttl值使得该dhcp ack报文可以存活至到达该虚拟机,并将修改后的dhcp ack报文转发至该虚拟机,使得该虚拟机可以成功使用所选择的dhcp服务器分配的ip地址。
[0086]
步骤43,若未在本地mac地址表中查询到第四mac地址且dhcp ack报文中的ttl值
为0,则丢弃dhcp ack报文。
[0087]
本vtep节点接收到与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp ack报文,说明该其他vtep节点不是向路由器发送相应dhcp request报文的vtep节点,本vtep节点未在本地mac地址表中查询到第四mac地址且dhcp ack报文中的ttl值为0,说明本vtep节点也不是向路由器发送相应dhcp request报文的vtep节点。但因为该向本vtep节点发送dhcp ack报文的vtep节点是将dhcp ack报文转发至mp-bgp对等体中的所有其他vtep节点,因此必定还存在其他能够在本地mac地址表中查询到第四mac地址的vtep节点,此时本vtep节点可以直接将dhcp ack报文丢弃。
[0088]
在一些实施例中,本发明实施例提供的ip地址获取方法,如图5所示,还可以包括以下步骤:
[0089]
步骤51,接收本vtep节点连接的虚拟机发送的dhcp discover报文,获取其中携带的mac地址。
[0090]
步骤52,将mac地址存储到本地mac地址表中。
[0091]
连接到本vtep节点的虚拟机在开机后将向本vtep节点发送携带有虚拟机的mac地址的dhcp discover报文,以便通过本vtep节点、路由器向dhcp服务器请求获取ip地址,此时本vtep节点可以保存dhcp discover报文中携带的虚拟机的mac地址。具体的,vtep节点可以将dhcp discover报文中携带的该虚拟机的mac地址、vni和报文入接口(即二层子接口对应的物理接口)之间的对应关系存储到本地mac地址表中。
[0092]
以下结合一个具体的实施例来对本发明提供的ip地址获取方法进行简要描述。
[0093]
vtep1、vtep2和vtep3是分布式网关,vtep1、vtep2和vtep3之间通过mp-bgp建立对等体,建立vxlan隧道,vtep1、vtep2和vtep3的下联接口ip地址是相同的。vm1上联到vtep1,r1是vxlan中的路由器,r1连接到dhcp服务器。如图6所示,本实施例提供的ip地址获取方法可以包括以下步骤:
[0094]
步骤61,vm1开机后向vtep1发送dhcp discover报文。
[0095]
步骤62,vtep1将dhcp discover报文中携带的vm1的mac地址、vni和报文入接口(即二层子接口对应的物理接口)的对应关系存储到本地mac表中。
[0096]
步骤63,vtep1开启dhcp中继功能,向r1转发dhcp discover报文。
[0097]
步骤64,r1向dhcp服务器转发dhcp discover报文。
[0098]
步骤65,dhcp服务器基于dhcp discover报文为vm1分配ip地址,并向r1发送携带有vm1的mac地址和ip地址的dhcp offer报文。
[0099]
步骤66,r1将dhcp offer报文发送给vtep2。
[0100]
r1接收的dhcp discover报文的源地址是vtep1的下联接口ip地址,而vtep1、vtep2和vtep3为分布式网关,下联接口ip地址是相同的,因此r1可能把dhcp offer报文发送给vtep2。
[0101]
步骤67,vtep2获取dhcp offer报文中携带的mac地址,未在本地mac地址表中查询到该mac地址。
[0102]
步骤68,vtep2向vtep1和vtep3发送traceroute消息获取路由跳数。
[0103]
步骤69,vtep2根据路由跳数修改dhcp offer报文中的ttl值,并将修改后的dhcp offer报文发送至vtep1和vtep3。
[0104]
步骤70,vtep3获取dhcp offer报文中携带的mac地址,未在本地mac地址表中查询到该mac地址,且判断出dhcp offer报文中的ttl值为0,丢弃报文。
[0105]
步骤71,vtep1获取dhcp offer报文中携带的mac地址,在本地mac地址表中查询到该mac地址。
[0106]
步骤72,vtep1将dhcp offer报文中的ttl值修改为正常值,将修改后的dhcp offer报文发送给vm1。
[0107]
步骤73,vm1从dhcp offer报文中获得ip地址后向vtep1发送dhcp request报文。
[0108]
步骤74,vtep1转发dhcp request报文给r1。
[0109]
步骤75,r1将dhcp request报文发送给dhcp服务器。
[0110]
步骤76,dhcp服务器发送dhcp ack报文给r1。
[0111]
步骤77,r1将dhcp ack报文发送给vtep2。
[0112]
r1接收的dhcp request报文的源地址是vtep1的下联接口ip地址,而vtep1、vtep2和vtep3为分布式网关,下联接口ip地址是相同的,因此r1可能把dhcp ack报文发送给vtep2。
[0113]
步骤78,vtep2获取dhcp ack报文中携带的mac地址,未在本地mac地址表中查询到该mac地址。
[0114]
步骤79,vtep2根据路由跳数修改dhcp ack报文中的ttl值,并将修改后的dhcp ack报文发送至vtep1和vtep3。
[0115]
步骤80,vtep3获取dhcp ack报文中携带的mac地址,未在本地mac地址表中查询到该mac地址,且判断出dhcp ack报文中的ttl值为0,丢弃报文。
[0116]
步骤81,vtep1获取dhcp ack报文中携带的mac地址,在本地mac地址表中查询到该mac地址。
[0117]
步骤82,将dhcp ack报文中的ttl值修改为正常值,将修改后的dhcp ack报文发送给vm1。
[0118]
基于相同的技术构思,本发明实施例还提供一种vtep节点,如图7所示,可以包括:
[0119]
接收模块101,用于接收动态主机配置协议dhcp服务器通过路由器发送的携带有ip地址和第一物理mac地址的dhcp提供offer报文,其中,所述ip地址是所述dhcp服务器基于mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp发现discover报文分配的。
[0120]
获取模块102,用于获取所述dhcp offer报文中携带的第一mac地址,以及用于若查询模块未在本地mac地址表中查询到所述第一mac地址,则向与本vtep节点互为mp-bgp对等体的其他vtep节点获取路由跳数。
[0121]
查询模块103,用于在本地mac地址表中查询所述第一mac地址。
[0122]
转发模块104,用于根据所述路由跳数修改所述dhcp offer报文中的ttl值,并将修改后的所述dhcp offer报文转发至所述mp-bgp对等体中的其他vtep节点,以使所述虚拟机连接的vtep节点向所述虚拟机转发所述dhcp offer报文。
[0123]
在一些实施例中,接收模块101还用于,接收dhcp服务器通过路由器发送的dhcp ack报文。
[0124]
获取模块102还用于,获取dhcp ack报文中携带的第二mac地址,其中,dhcp ack报文是dhcp服务器基于mp-bgp对等体中的vtep节点所连接的虚拟机发送的dhcp request报
文生成的。
[0125]
查询模块103还用于,在本地mac地址表中查询所述第二mac地址。
[0126]
转发模块104还用于,若查询模块在本地mac地址表中未查询到第二mac地址,则根据路由跳数修改dhcp ack报文中的ttl值,并将修改后的dhcp ack报文转发至其他vtep节点,以使虚拟机连接的vtep节点向虚拟机转发dhcp ack报文。
[0127]
在一些实施例中,接收模块101还用于,接收与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp offer报文。
[0128]
获取模块102还用于,获取dhcp offer报文中携带的第三mac地址。
[0129]
查询模块103还用于,在本地mac地址表中查询第三mac地址。
[0130]
转发模块104还用于,若查询模块在本地mac地址表中查询到第三mac地址,则根据到第三mac地址对应的虚拟机的路由跳数修改dhcp offer报文中的ttl值,将修改后的dhcp offer报文转发至第三mac地址对应的虚拟机;以及用于若查询模块未在本地mac地址表中查询到第三mac地址且dhcp offer报文中的ttl值为0,则丢弃dhcp offer报文。
[0131]
在一些实施例中,接收模块101还用于,接收与本vtep节点互为mp-bgp对等体的其他vtep节点发送的dhcp ack报文。
[0132]
获取模块102还用于,获取dhcp ack报文中携带的第四mac地址。
[0133]
查询模块103还用于,在本地mac地址表中查询第四mac地址。
[0134]
转发模块104还用于,若查询模块在本地mac地址表中查询到第四mac地址,则根据到第四mac地址对应的虚拟机的路由跳数修改dhcp ack报文中的ttl值,将修改后的dhcp ack报文转发至第四mac地址对应的虚拟机;以及用于若查询模块未在本地mac地址表中查询到第四mac地址且dhcp ack报文中的ttl值为0,则丢弃dhcp ack报文。
[0135]
在一些实施例中,接收模块101还用于,接收本vtep节点连接的虚拟机发送的dhcp discover报文。
[0136]
获取模块102还用于,获取dhcp discover报文中携带的mac地址。
[0137]
vtep节点还可以包括存储模块,存储模块用于,将mac地址存储到本地mac地址表中。
[0138]
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1