第十六章 EVPN在数据中心
16.1 为什么EVPN会流行
EVPN是一项成熟的技术,已经在MPLS网络中使用了一段时间。它使用BGP作为控制协议来交换虚拟网络的可达性信息。简而言之,EVPN已经有能力作为基于控制器的VXLAN解决方案的替代方案。
成熟技术(VXLAN和EVPN)的融合很好地结合了对商家交换芯片的支持,允许部署具有网络虚拟化支持的生产质量数据中心。这就是今天数据中心的EVPN相关的原因。
16.2 网络虚拟化控制平面必须解决的问题
Overlay的网络虚拟化控制平面必须解决以下问题:
提供内部地址到外部地址的映射
标识内部地址所属的虚拟网络
标识给定可以有多个可用的封装
除此之外,VXLAN还需要知道哪些VTEPs对哪些虚拟网络工作感兴趣,因此多目标帧,如广播、未知单播和多播(BUM)流量只能传输到感兴趣的端点。
EVPN将会更进一步,并对以下内容提供了支持:
ARP/ND抑制
路由
多宿主节点
L3组播
除此之外,您还需要执行特定于设备的单独配置,例如:
创建一个VTEP
将VXLAN虚拟网络与其虚拟网络的本地版本相关联,通常是VLAN,
指定处理多目标帧的方法:入口复制(也称为头端复制)或多播
处理与使用多播相关联的配置
16.3 VTEP的驻点在哪?
VTEP,是网络虚拟覆盖的边缘,非虚拟网络与虚拟网络相遇的地方;数据包在进入Overlay时被封装,在离开Overlay时被解封的地方。VTEP功能越接近端点,网络的核心就越能不受网络虚拟化状态变化的影响。将主机端点作为vtep允许组成Clos拓扑的路由器与路由器一样运行。
一些使用EVPN的私有云解决方案正在使用FRR从主机启动EVPN。
在Clos拓扑的情况下,除了宿主之外,VTEP的下一个理想位置是Leaf。在Spine或Super Spine上做VTEP没有意义,因为EVPN连接了由路由底层分隔的虚拟L2网络段,而在两层Clos网络中,L2网络终止于Leaf。Leaf VTEPs是数据中心中最常见的EVPN部署模型。
16.4 一种协议负责全部,或者?
如前所述,NVO3由两个部分组成:一个路由的Underlay和Overlay。我们讨论了如何使用OSPF和BGP作为路由协议来构建路由的底层。BGP,特别是eBGP,在数据中心远比OSPF更受欢迎。然而,当涉及到EVPN时,考虑到它在服务提供商世界中作为VPN解决方案的使用,传统的供应商正在寻求一种看起来类似于它在服务提供商世界中部署的解决方案。其中,OSPF(或IS-IS)用于构建路由的Underlay,iBGP用于交换虚拟网络信息。
正如FRR通过无编号的BGP创新了BGP的配置一样,它也是第一个使用单个eBGP会话来构建路由底层和虚拟网络信息交换的配置。换句话说,交换MAC地址就像在BGP中启用另一个AFI/SAFI,比如IPv6一样简单。
16.4.1 iBGP特征
iBGP对等体通常发生在由路由网络分隔的对等体之间。这与eBGP对等体非常不同,后者几乎总是在物理链接两侧的对等体之间。两个独立的解决方案解决iBGP全互联的问题:BGP联盟和路由反射器(RRs)。在这两种方法中,RR是迄今为止最流行的解决方案,也是人们考虑使用NVO3部署iBGP的方式。
RR遵循一个hub-and-spoke模型,其中所有的iBGP宣告者连接到一组中央RR路由器。RR的工作是计算一条路由的最佳路径,并向每个RR客户端做通告。然而,与eBGP不同的是,RR不会修改路由的下一跳网络地址;相反,它保留了RR收到的通告中的任何值。
为了说明这一点,请考虑图16-1,它说明了eBGP和iBGP在下一跳中的传播与学习路线的不同。在eBGP的情况下,下一跳总是被修改为通告路由器。这被称为next-hop-self。如果是iBGP,当向对等站点发布通告时,与路由关联的下一跳不会被修改。在所示的示例中,A可以选择完全绕过B到例如10.1.1.0/24的数据路径。如果您假设B为RR,那么它只卸载计算重复和实现iBGP宣告者之间的全互联。因此,发现计算节点作为RR的功能并不少见。如果有多个RRs,RRs甚至不必相互通信来完成他们作为RR的工作。如图16-2所示,这意味着您可以仅仅使用Clos网络作为一个连接层;
图16-1 eBGP与iBGP相对于下一跳传播的行为
图16-2 RRs作为服务器和纯L3的Underlay
在更典型的部署中,Clos拓扑中的Spine充当RRs。Spine是底层的一部分,对虚拟网络没有任何了解。它们也是所有Leaf连接到的节点。所以这似乎很自然地适合Spine作为RRs的功能。唯一的要求是,所有Spine都可以作为RRs,以确保所有Spine共享相同的性能特性,并且RRs的故障特性与底层和包转发保持相同。
16.4.2 单独的Underlay和Overlay协议
传统的网络供应商在Underlay使用IS-IS或者OSPF,Overlay使用iBGP,Spine通常用作iBGP-RR。这种方式的缺点如下:
如果已经在Underlay使用了EBGP,那想要去替换是很具有破坏性的。
更多的协议意味着更复杂,当出现问题时更难排除。
为了解决第一个问题,一个供应商提倡使用eBGP作为路由Underlay和iBGP为Overlay。大多数路由器运行单个的BGP进程来同时处理eBGP和iBGP会话。因此,这在Leaf和Spine之间增加了额外的BGP会话,几乎没有什么额外的好处。单独的会话意味着两个会话之间的事情仍然可能不同步。
一个供应商提倡使用两个eBGP会话:一个在Underlay的接口IP地址上,另一个在Overlay的Leaf和Spine的环背之间。尽管他们的官方声称这更稳健,但我从内部消息来源听到,因为一个错误的实现,会导致较长的收敛时间。
16.4.3 只使用EBGP
首先在FRR中实现的另一种方法是使用单个eBGP会话来交换Underlay和Overlay路由信息。在我自己看来,在与许多BGP专家交谈后,这个选项是数据中心的Clos拓扑的更简单、更优雅的解决方案。
为了简化同时传输Underlay和Overlay信息的eBGP会话的配置,FRR会自动避免修改虚拟网络路由的下一跳地址,同时继续对Underlay路由修改下一跳地址。
Spine上的BGP过程需要保留它收到的关于Underlay和Overlay的信息。它使用Underlay信息来构建Underlay数据包转发表。它需要保留从Leaf接收的Overlay信息,将其传递给其他Leaf(类似RR)。然而,这些Spine对虚拟网络一无所知,除非另有指示,否则它们会删除关于它们的信息。当FRR识别到相同的会话用于携带Underlay和Overlay路线时,它会自动使Spine保留这些信息。在其他支持单个eBGP会话模型的供应商实现中,可能需要添加其他配置。
16.5 BGP构建以支持虚拟网络路由
BGP支持通告虚拟网络路由。首先出现在服务提供商网络中的MPLS L3 vpn的背景下。第一个问题是AFI/SAFI将使用什么。EVPN使用l2vpn/evpn的AFI/SAFI。这是因为EVPN被认为是一种L2VPN。接下来,BGP必须处理允许跨虚拟网络复制地址的模型。
每个BGP实现都维护两种路由表:全局表和每个虚拟网络。BGP在全局表上运行最佳路径算法,选择一条路径为每个前缀发布到其对等点。因为RD对每个发起者都是唯一的,所以一个路线的所有副本都将被通告给邻居。要将路由安装到虚拟网络的路由表中,BGP首先使用导入RT子句从全局表中选择特定的要导入到该虚拟网络中的候选路由。然后,它再次在导入的候选路由上运行最佳路径算法,但这次是在虚拟网络的路由表的上下文中。如果使用多个RT宣传同一地址,最佳路径算法将选择最好的一个。可以将多个RTs导入到单个虚拟网络路由表中。
16.5.1 RD
如前一节所述,RD是一个8字节的值,它被添加到每个虚拟网络地址中,以保持该地址的全局唯一性。RFC4364的第4.2节定义了RD及其格式及其用途。有三种不同的RD格式。EVPN中使用的RD格式由RFC7432定义,如图16-3所示。
图16-3 用于EVPN的RD格式
如果您想知道虚拟网络实例(VNI)如何有三个字节长,但可以在RD的两个字节空间中编码,这不是问题,因为假定实际上VTEP不会托管超过64,000个VNi。目前,大多数交换机硬件都不支持一个设备上的这么多vni。即使他们可以或确实支持,在单个设备上支持这很多vni也被认为是不可接受的,因为将受到设备故障影响的客户数量。是路由器的IPv4环回地址和VNI的组合,使RD在整个网络中是唯一的。因此,RD的VNI特定部分的值是VNI的设备本地编码,而不一定是VNI的绝对值。
由于路由器的环回IP地址是RD的一部分,因此具有相同虚拟网络的两个节点最终会有不同的RD。这就解决了区分具有相同IP地址的源的问题。
RD在MP_REACH_NLRI和MP_UN-REACH_NLRI属性中被编码为NLRI的一部分。
16.5.2 RT
RT是添加到虚拟网络NLRI中的一个附加路径属性。如前所述,RT对它所属的虚拟网络进行编码。一个宣传虚拟网络及其地址的BGP宣告者使用一种称为导出RT的特定RT。接收和使用通告的BGP宣告者使用此RT来决定将路由添加到哪个本地虚拟网络。这被称为导入RT。在典型的VPN配置中,网络管理员必须同时配置导入和导出rt。
RT的定义和使用在RFC4364的第4.3.1节中都有规定。EVPN与VXLAN