上回说到了Flood & Learn存在着一些不足,所以,才有了后来的BGP EV**来实现VXLAN的control-plane。既然说到了这,让我们先看一张对比图:
这么看,是不是Flood&Learn与EV**之间的相同,不同之处就一目了然了?
BGP EV**可以做些什么?总结起来说,基本的也就是以下这几个功能:
- 通过MP-BGP宣告主机MAC/IP
- 通过MP-BGP实现VTEP Peer 自动发现和认证
- 分布式网关
- ARP 抑制
- 头端自动发现的入站复制
1、通过MP-BGP宣告主机MAC/IP:
学过MPLS V**的朋友一定对MP-BGP不陌生,这里其实可以把两个VTEP节点看成是两个PE设备。两个PE设备建立MP-BGP从而实现路由传递这样理解起来,是不是容易多了?
在VXLAN环境中,我们通常采用Spine-Leaf架构,然后通过BGP的update报文来传递路由:
既然,我们要使用BGP,那么,我们就不得不遵循BGP的规定:要么iBGP full mesh互连;要么使用RR(Route Reflector)。从成本的角度来说,肯定使用RR会更好一些。同时,考虑到冗余性、避免单点故障,我们通常使用双RR(当然,你要非抬杠说两个RR同时down了怎么办?那你可以再多配几个RR也行;那万一所有RR就这么巧,都同时down了怎么办呢?恭喜你,快去买彩票~)。
接下来,我们将其展开来看:
如上图所示,VTEP-1会将Host-1的信息(包括MAC、IP、VNI、VTEP)用EV** Type-2(L2V** EV** family中的MP-BGP Update)发送给RR,RR收到之后将其反射给其他VTEP节点。这样,VTEP-2,VTEP-3就知道了Host-1的信息。
EV** Type-2:MAC/IP路由。通过Type-2路由将主机MAC/IP信息传递至远端VTEP。
当主机移动时,又会是什么样呢?Let’s See:
2、通过MP-BGP实现VTEP Peer 自动发现和认证:
EV** Inclusive Multicast (IM) NLRI:
RD: Route Distingusher for the EV** instance
Ethernet Tag ID: VNI for the Bridge Domain
IP address Length: 1 Byte
Originating Router IP address: VTEP IP address of the advertising endpoint<<<<<<<<<<<通过这个字段实现VTEP Peer的发现
来看一个真实的NLRI报文:
EV** Type 3:Inclusive Multicast路由。该类路由在VXLAN控制平面中用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP EV**的对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。其中,【Originating Router IP Address】字段为本端VTEP IP。如果对端VTEP IP是三层路由可达,则建立一条VXLAN隧道。
3、分布式网关:
这个“分布式网关”名字看着挺玄的。。。其实,就是Distributed Anycast Gateway译文。是不是直接看Anycast Gateway会比较好理解一些?哈哈~
首先肯定是要做好VLAN与VNI的映射,然后将所有的VTEP上针对SVI(也就是interface VALN接口:主机或者虚拟主机的网关),都配置相同的anycast gateway虚拟IP和虚拟MAC,即可。
它主要好处简单说就是:无论主机或者虚拟连接到哪一个VTEP(leaf节点),主机或者虚拟主机的网关信息都不变。
4、ARP抑制:
这个其实,很好理解:Host-1想跟Host-2通信,Host-1就必须知道Host-2的ARP,怎么知道的?发ARP Request啊!VTEP-1收到了Host-1发来的ARP Request,VTEP-1不会着急忙慌的将这个ARP Request发出去。它会先查自己本地的缓存表,如果本地有Host-2的信息,则VTEP-1将这个ARP Request拦截并给Host-1回复一个Host-2的ARP信息。这就是ARP抑制!它无非就是避免广播流量在transit网络中大量传播,消耗资源。再通俗点说,自己能搞定的事,就别老麻烦别人了。。。
配置ARP抑制的方法:
5、头端复制(ingress replication):
还记得Flood & Learn吗?在Flood & Learn机制下,BUM(broadcast, unknown unicast and multicast)流量会通过Underlay组播的形式发送。那么,到了BGP EV**,就不需要了:
配置起来也很简单,如下图:
最后,关于VXLAN BGP EV**,基本的情况就是这样啦~那么,仅仅有这些,就真的足够了吗?如果需要和外部通信时,又该怎么办呢?什么又是对称IRB呢?和vPC混搭之后又是什么样呢?