因为一些原因vritual private network 缩写为VNP
本文介绍一下内容:
- 同网内的单播转发流程;
- 跨网段单播转发流程;
- 双宿主机转发流程;
1. 网段内的单播转发
完成MAC/IP地址学习和通告后,会形成以下一张转发表:
转发表和BGP MAC/IP信息并不一定一致,因为需要将BGP收到的路由中的RT eport 和本地的RT import 比较,如果一致才会生成转发表。
同网段的转发过程已经在《VXLAN基本原理》中描述清楚,这里就不再赘述
https://blog.csdn.net/qq_43691045/article/details/103303191
2. 跨网段单播转发
如图:4台主机都位于VRF A中,VNI为50001;VNI 30001和网段192.168.1/0/24关联,host A,host B位于该网段中;VNI30002和192.168.2.0/24关联,host x, y 位于该网段。
在控制平面收敛后,VTEP1和VTEP2会形成一张类似的转发表:
A和X,B通信过程如下:
- A 请求发送ARP请求,请求ARP网关MAC地址信息,即VTEP1上配置的分布式任播网关的MAC地址;
- VTEP1收到后,将host A的MAC,IP,L2VNI,L3v*n和下一跳通过BGP EVNP更新给其他邻居。前两步过程如图:
- VTEP1使用任播的MAC IP回应ARP 请求;
- A发送数据包,源MAC为A的MAC地址,目的MAC为VTEP1,源IP为A的IP地址,目的IP为X的地址;
- VTEP1收到数据包后,发现目的地址为本身,查找VRF-A的路由表。如果目的地址在本地,直接转发到相应的出接口,无需进行VXLAN封装;如果目的地址为其他VTEP且位于不同子网的Y,返回VTEP2, L3VNI 50001;
- VTEP1对数据包进行封装,内层源MAC地址为VTEP1的路由器MAC地址,目的MAC地址为VTEP2的MAC地址。VTEP2的MAC地址通过BGP EVNP NIRI携带的的扩展团体属性获得。数据包封装如图,0200.0ade.de01 and 0200.0ade.de02
correspond 分别指VTEP1和VTEP2的MAC地址 - VTEP2 VXLAN数据包后,进行解封装,因为VNI50001属于VRF-A,需要在VRF-A中进行路由表查找,找到出接口后对源目的MAC地址进行重新后从相应的接口发出。
2.1 将流量路由到沉默的的主机
如图:Host A需要host Y 通信,VTEP1上还没有host y 的路由,只有网段路由,将经历以下过程:、
VTEP1转发表信息如图,只有host Y 的网段信息,没有主机信息。
- A将数据包发送到VTEP1;
- VTEP1查找路由表,匹配到192.168.2.0/24,下一跳是VTEP2;使用VNI 50001封装,内层源MAC为VTEP1的MAC地址,目的MAC为VTEP2的MAC地址;
- 到达VTEP2后,VTEP进行解封装,vrf-A中查找路由表,找到匹配网段路由,但没找到主机路由
- VTEP2 发送ARP请求,本地向VLAN 20发送,同时使用VXLAN封装,VNI 为30002,目的地址为VNI30002的组播地址;
- VTEP2从本地收到回应,对MAC地址改写后发送给Host Y ;同时将Y的信息使用BGP update 更新给VXLAN网络;