MP-BGP EVPN的路由和MP-BGP十分类似,都会有一个名为MP_REACH_NLRI和MP_UNREACH_NLRI的path attribute,MP_UNREACH_NLRI用于发送撤销路由,MP_REACH_NLRI用于发送更新路由,该属性中的NLRI字段用于存放EVPN的具体路由信息,在该属性中携带next hop network address信息,其内容为产生该路由的设备VTEP IP,同时每个路由更新信息中都会携带扩展团体属性(extended communities)用于存放RT或其他信息。

Type2的路由,称为MAC advertisement route,用于传递主机的MAC或MAC&IP的路由信息,设备通过该路由可以完成相关的转发表的建立,Type2的NLRI信息如下:

Vxlan IRB vxlan irb路由_macos


RD为BD中配置的RD;Ethernet Segment Identifier用来在多个PE之间标识连接相同的CE,在VXLAN环境中不需要使用,固定为全0;Ethernet Tag ID由于华为仅支持一个BD对应一个EVI,不支持多个BD绑定同一个EVI所以该字段只能为0;MAC Address Length固定为48;MAC Address为主机的MAC地址,可以通过BD对应的MAC地址表获取或ARP中获取;IP Address Length固定为32;IP Address为主机的IP地址,从ARP表中获取;MPLS Label1为L2 VNI从BD中获取;MPLS Label2为L3 VNI从VRF中获取。

Type2的路由中Ethernet Segmentation id,Ethernet Tag ID,MAC Address Length,MAC Address,IP Address Length,IP Address可以作为路由前缀信息,其他信息作为路由的属性存在。

Type2扩展团体属性包含如下:多个配置在BD中的RT(export RT),Encapsulation(固定为VXLAN),一个未知的子类型(用于存放router’s mac,不一定携带),和一个mac mobility属性(用于存放sticky/static信息和sequence number,不一定携带)

华为将Type2的路由分为三种:

MAC地址路由

Vxlan IRB vxlan irb路由_网络协议_02


MAC地址路由是将BD的MAC地址表中从本地学习到的条目,转变为Type2的路由发送至EVPN邻居,只包含RD、MAC Length、MAC、L2 VNI信息,next hop network address携带VTEP IP。

扩展团体属性中包含RT(route-target)和encapsulation EVPN用于VXLAN场景时该值固定为8表示VXLAN。

ARP通告路由

Vxlan IRB vxlan irb路由_网络_03


ARP通告路由是主要在集中式网关场景用来实现ARP广播抑制和分布式网关场景的VM迁移使用,需要获取设备中与BD相关的ARP表的信息,转变为Type2的路由发送至EVPN邻居,比MAC地址路由增加了IP Address Length和IP Address信息。

扩展团体属性的MAC Mobility字段中包含两个重要字段Sticky/Static和Sequence Number,当生成某个Type2路由的转发表的某条表项为Static类型,即静态写入时,此时Type2的路由中会携带MAC Mobility字段,并且将其中的Sticky/Static值为1,Sequence Number的值为0。收到路由的设备认为不应该从别的交换机或本地产生相同的路由信息,如果收到相同的路由信息会直接丢弃。Sequence number的值会用来记录相同的路由在EVPN网络中更新了几次,一个设备在将一个路由信息发布之前会在本地的EVPN数据库中查看是否已经从别的设备收到过相同的路由,如果没有任何记录且产生该路由的转发表项类型不是为static的话,则在发布时不携带MAC Mobility字段;如果收到的路由没有携带MAC Mobility属性,则设备直接认为sequence number为0。

扩展团体属性在分布式网关场景的VM迁移时,迁移的目的端交换机会在团体属性中会携带一种MAC Mobility字段,在其中的squence number的值会对原来的值加1。收到路由的设备会比对sequence number与之前本地EVPN路由表中的哪个更大,如果新收到的更大则认为该路由更新。对于原产生该路由的设备收到该路由会发送ARP探测,如果未能收到回复,则更新MAC和IP转发表,并同时更新EVPN路由表,之后会发出withdraw路由通知所有的EVPN邻居撤销原路由;如果检测到有回复,则认为是地址冲突,会将sequence number再加1,发送至所有EVPN邻居,其他设备则会继续使用原设备的路由。对于非原产生相同路由的设备收到新路由会用来更新MAC和IP转发表,但并不会更新EVPN路由表,直到收到原始设备发出的撤销路由才会更新EVPN路由表。

IRB类型路由

Vxlan IRB vxlan irb路由_macos_04


IRB类型路由用于分布式Anycast网关场景可以通过该IRB类型的路由实现对称式路由,比ARP路由多了L3 VPN,并且扩展团体属性中增加了一个router’s MAC,而这两个信息加IP Address就是实现对称式路由的关键了。

L3 VNI为每个VRF分配,而router’s mac每个设备一个(NVE的MAC),路由前缀和ARP路由类型同样是通过感知ARP表的变化,之后提取对应BD中的RD和export RT信息(RT一般有两个,其中一个和某个VRF的RT相同),转变为EVPN路由发送至其他EVPN邻居,其他设备收到后会将通过携带的两个RT,将MAC信息放入BD的转发表,将IP信息放入VRF路由表中。

某一终端在发出跨3层访问的数据包时,到了Leaf设备,Leaf设备会查询对应的VRF的路由表,找到主机明细路由,下一跳为对端VTEP IP出接口为VXLAN;数据包发出时会先将原始数据帧的源MAC替换为自己的Gateway MAC,目的MAC替换为对端设备的router’s MAC,再封装L3 VNI之后封装Underlay信息并发出。