作者:Umberto Manferdini 译者:TF编译组
在数据中心内部,虚拟化正成为占据主导地位的技术。这带来了“虚拟网络”等一些新的管理要素。虚拟网络允许虚拟机在现有的underlay网络(IP Fabric)上,利用软件功能和overlay技术相互通信。
当然,即使在现代数据中心内部,虚拟化也不是唯一的信条。我们仍然有物理设备和裸金属服务器。而且,虚拟机和裸金属服务器通常不是孤立的世界,它们需要彼此集成。
这种集成可能意味着让虚拟机和BMS出现在同一子网中。此解决方案通常称为BMS集成。
原理
利用vRouter对EVPN原生的支持,同时与现有IP Fabric具备互操作性,就可以实现该目标。
与过去涉及附加元素(TSN节点)和协议(OVSDB)的解决方案不同,如今,我们仅依靠标准协议——EVPN。EVPN正在成为数据中心内部事实上的标准。由于SDN控制器可以轻松地与底层IP Fabric集成在一起,并且它们都使用BGP、EVPN和VXLAN,这带来了巨大的优势。
此外,使用标准的和众所周知的协议,可以避免供应商锁定,向多供应商的场景开放。
以终为始,这就是我们想要实现的目标:
一个经典的局域网!
实际上,在这种简单的网络模型背后,许多参与者都扮演着角色并发挥自己的作用。
这是真实的场景:
让我们一次解决一个问题。
首先,我们的DC具有标准IP Fabric。对于标准,我们是指使用VXLAN进行传输的基于BGP的结构。Overlay BGP用于交换EVPN路由。为了减少BGP会话的数量,将spine用作路由反射器,从而避免leaf-to-leaf的全连接。
Tungsten Fabric(注:原文为Contrail,本文以功能一致的Tungsten Fabric替换)部署在数据中心内。Tungsten Fabric overlay网络(通常称为Tungsten Fabric控制+数据网络)将映射到在Fabric上配置的VLAN(L2服务)。在RHOSP实现中,此网络通常映射到RHOSP租户网络。这意味着每个Tungsten Fabric节点将在此网络上有一个IP。具体来说,计算节点在该网络上将具有接口vhost0(VTEP接口)。
Tungsten Fabric控制+数据网络(在RHOSP环境中为Tenant网络)在Fabric上具有配置为IRB接口的网关。在这种情况下,IRB配置在spine上。这两个spine共享一个相同的IP地址,称为VGA,用作LAN网关。
在spine配置IRB的模型,称为中央路由桥接(CRB)。还有一种情况,我们可以将L3 GW功能(IRB接口)移到leaf上,这样该模型就称为边缘路由桥接(ERB)。CRB与ERB的比较不在本文讨论范围之内。
Tungsten Fabric控制节点与IP Fabric spine之间具有BGP会话,在此会话上交换EVPN路由。这使IP Fabric可以学习Tungsten Fabric EVPN路由,反之亦然。这是实现BMS集成的关键,因为我们需要BMS相关的EVPN路由才能到达Tungsten Fabric,同时需要Tungsten Fabric虚拟机EVPN路由才能到达与BMS连接的leaf。
裸金属服务器是多宿主到一对leaf,并映射到IP Fabric上的VLAN。
另一方面,虚拟机连接到由Tungsten Fabric管理的L2虚拟网络。
为了实现BMS集成,需要使用BMS所属的L2 VLAN来“缝合”L2虚拟网络。
这是通过利用Tungsten Fabric的EVPN原生支持以及其与IP Fabric的集成来实现的。稍后我们将进行详细介绍。
配置
IP Fabric必须正确配置。我们假设Tungsten Fabric集群已经启动并正在运行,那么Tungsten Fabric基础结构网络(RHOSP网络)已经就位。我们还假定Tungsten Fabric控制器已建立好启用了EVPN族的spine的BGP会话。
剩下的就是创建BMS VLAN和与EVPN相关的配置。
由于我们不希望在“扩展的2层网络”上使用网关,因此不需要设置IRB逻辑接口。其结果是,配置仅涉及BMS连接到的两个leaf。在这种情况下,spine将仅接收/通告EVPN路由并转发overlay流量(VXLAN数据包)。
两个leaf上的配置是相同的,因此我只演示一次。
首先,我们配置针对BMS的聚合接口:
这是带有一些额外“调整(tweaks)”的标准AE接口。我们定义了两个leaf上都必须匹配的ESI,为了使用EVPN管理多宿主这是必须的。然后,我们还需要两个leaf上的LACP系统ID匹配。这是“欺骗”BMS所必需的;如果在两个链接上的系统ID相同,即使实际上在另一侧有两个不同的设备(leaf),BMS也将假定它已连接到单个系统。同样,这是在启用EVPN的DC中配置多宿主的标准最佳实践。
接下来,我们转到EVPN部分。
我们需要一个新的VNI: