当前位置: 首页 > Linux

BGPEVPN路由模型(一)

时间:2023-04-06 22:40:27 Linux

inter-subnetRouting在EVPN中实现不同子网(vlan)之间的路由(也叫cross-vlanrouting)有很多模型。这些模型之间的差异来自以下因素:是每个VTEP都执行第3层路由还是只有少数指定的VTEP执行路由?布线是仅在输入VTEP侧执行还是同时在输入和输出VTEP执行?基于以上两个维度,有以下三种模型:集中式路由:指定若干个特定的VTEP作为三层网关,进行跨子网的三层路由。其他VTEP仅执行第2层FDB转发。分布式非对称路由:所有VTEP都参与跨子网路由,只有输入VTEP进行路由,输出VTEP只进行FDB转发。分布式对称路由:所有VTEP都参与跨子网路由,输入和输出VTEP都被路由。在部署分布式路由时,需要在VTEP上为每个子网配置一对任播IP/MAC地址作为网关的IP地址和MAC地址。此外,同一子网的不同VTEP上的任播IP/MAC地址对必须相同。这样做的好处是,当一个主机/VM被迁移(从一个VTEP到另一个VTEP)时,不需要更改被迁移的HOST/VM的配置。FRR在Linux上支持以上三种模型。所有路由都发生在VRF上下文中。在配置期间,每个租户都将配置一个VRF。租户的每个子网都需要关联对应的VRF(在Linux中,这是通过将每个子网的svi接口从属于对应的vrf设备来实现的)。跨子网路由发生在租户的VRF中,从而隔离不同租户之间的路由和转发信息。注意:使用vxlan路由功能时,建议开启arp一致性或arp代理功能,因为分布式路由的出现,每个子网在所有vteps上都有相同的anycastIP/MAC对,当host/vm时查询网关的mac地址,head-endreplication会导致所有vteps收到arprequest报文,这会导致sourcehost/vm收到多个arpresponse。集中式路由在集中式路由模型中,特定的VTEP被指定为特定子网中所有主机(这些主机可以分布在不同的vtep中)的默认网关。更常见的模型是使用双活模式将VTEP集群配置为集中式网关。在集中网关VTEPS上,需要为整个数据中心的所有子网配置默认网关。当一台主机要与另一个子网中的主机通信时,它发送的报文的目的mac是其对应的子网网关的mac地址(集中网关VTEP上的mac地址)。进入VTEP(附在主机上的VTEP)通过vxlan隧道通过FDB表将报文转发给集中式网关VTEP,网关进行目的路由查询。路由后,将报文的目的MAC改为目的主机的mac,通过vxlan隧道将报文传送到目的主机所在的VTEP,目的主机所在的VTEP再将报文发送到目的主机通过二层转发。通告默认网关要启用集中路由,必须使用advertise-default-gw命令使网关设备通告网关IP/MAC地址对信息。routerbgp65000address-familyl2vpnevpnadvertise-default-gwexit-address-family集中式路由可以在VNI层面,也就是说部署的时候可以指定部分VNI使用集中式路由,而其他子网使用分布式路由用来。此混搭模型也受支持,但不推荐。使用集中式路由时,当跨子网的源主机和目的主机在同一个VTEP上时,它们之间的通信也会先转发到网关VTEP,再转发回来。如上图所示:server和server2在同一个VTEP(leaf1)上,需要相互通信,这就需要使用三层集中式网关集群(spine1和spine2)。分布式非对称路由在分布式非对称路由模型中,每个VTEP充当第3层转发器,为连接到它的主机路由和转发跨子网流量。在这种模式下,只有源主机所在的VTEP进行路由,目的主机所在的VTEP进行二层转发。源VTEP进行路由后,会直接将报文的目的mac填写为目的主机的mac,然后使用目的主机所在子网的vni封装vxlan报文发送给目的地VTEP。目标VTEP执行到目标主机的mac转发。分布式非对称路由模式非常容易部署。与集中式和分布式对称路由方式相比,无需额外配置。分布式非对称模型要求在所有VTEP上配置所有子网的所有VNI。即使本地VTEP没有这个子网的主机,也需要配置这样一个VNI。