VXLAN流量转发流程

因为一些原因vritual private network 缩写为VNP
本文介绍一下内容:

  • 同网内的单播转发流程;
  • 跨网段单播转发流程;
  • 双宿主机转发流程;

1. 网段内的单播转发

VXLAN流量转发流程_第1张图片
完成MAC/IP地址学习和通告后,会形成以下一张转发表:
VXLAN流量转发流程_第2张图片
转发表和BGP MAC/IP信息并不一定一致,因为需要将BGP收到的路由中的RT eport 和本地的RT import 比较,如果一致才会生成转发表。
同网段的转发过程已经在《VXLAN基本原理》中描述清楚,这里就不再赘述
https://blog.csdn.net/qq_43691045/article/details/103303191

2. 跨网段单播转发

VXLAN流量转发流程_第3张图片
如图: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会形成一张类似的转发表:
VXLAN流量转发流程_第4张图片
A和X,B通信过程如下:

  1. A 请求发送ARP请求,请求ARP网关MAC地址信息,即VTEP1上配置的分布式任播网关的MAC地址;
  2. VTEP1收到后,将host A的MAC,IP,L2VNI,L3VNP和下一跳通过BGP EVNP更新给其他邻居。前两步过程如图:
    VXLAN流量转发流程_第5张图片
  3. VTEP1使用任播的MAC IP回应ARP 请求;
  4. A发送数据包,源MAC为A的MAC地址,目的MAC为VTEP1,源IP为A的IP地址,目的IP为X的地址;
  5. VTEP1收到数据包后,发现目的地址为本身,查找VRF-A的路由表。如果目的地址在本地,直接转发到相应的出接口,无需进行VXLAN封装;如果目的地址为其他VTEP且位于不同子网的Y,返回VTEP2, L3VNI 50001;
  6. VTEP1对数据包进行封装,内层源MAC地址为VTEP1的路由器MAC地址,目的MAC地址为VTEP2的MAC地址。VTEP2的MAC地址通过BGP EVNP NIRI携带的的扩展团体属性获得。数据包封装如图,0200.0ade.de01 and 0200.0ade.de02
    correspond 分别指VTEP1和VTEP2的MAC地址
    VXLAN流量转发流程_第6张图片
  7. VTEP2 VXLAN数据包后,进行解封装,因为VNI50001属于VRF-A,需要在VRF-A中进行路由表查找,找到出接口后对源目的MAC地址进行重新后从相应的接口发出。

2.1 将流量路由到沉默的的主机

如图:Host A需要host Y 通信,VTEP1上还没有host y 的路由,只有网段路由,将经历以下过程:
VXLAN流量转发流程_第7张图片
VTEP1转发表信息如图,只有host Y 的网段信息,没有主机信息。
VXLAN流量转发流程_第8张图片

  1. A将数据包发送到VTEP1;
  2. VTEP1查找路由表,匹配到192.168.2.0/24,下一跳是VTEP2;使用VNI 50001封装,内层源MAC为VTEP1的MAC地址,目的MAC为VTEP2的MAC地址;
  3. 到达VTEP2后,VTEP进行解封装,vrf-A中查找路由表,找到匹配网段路由,但没找到主机路由
  4. VTEP2 发送ARP请求,本地向VLAN 20发送,同时使用VXLAN封装,VNI 为30002,目的地址为VNI30002的组播地址;
  5. VTEP2从本地收到回应,对MAC地址改写后发送给Host Y ;同时将Y的信息使用BGP update 更新给VXLAN网络;

双宿主转发

双宿主转发是指主机使用vPC连接到两个Leaf场景下的转发,如图,Host A通过vPC和VTEP1,VTEP2相连,VTEP1,VTEP2配置anycast IP ,Host A到Host B转发流程如下:
VXLAN流量转发流程_第9张图片

  1. Host A 通过哈希,将流量同时发往VTEP1,和VTEP2;
  2. VTEP1 和VTEP 2 查找IP/MAC表,发现Host B位于VTEP3,将数据包进行VXLAN封装。因为处于同一个网段,VNI使用Host A的VNI 30001;内层源MAC为A,目的MAC为B,内层源IP为A,内层目的IP为A;外层源IP为VTEP1,VTEP2的任播地址,外层目的IP为VTEP3;
  3. 数据包到达VTEP3后,进行接封装,在对应的VNI 内查找到host b的出接口,发送给B;
  4. VTEP 3收到B的回包后,将数据包进行封装,内层信息不变,VNI使用30001,源地址使用VTEP3地址,目的地址为任播地址
  5. 在underlay层面进行ECMP,数据包有可能到达VTEP1,VTEP2,VTEP1,VTEP2收到后,会对数据包进行解封装,最终到达host A。

如果主机只接了单边,有两种结局方案,一个是配置在peer link上配置vrf-lite ,为VRF配置一个子接口,另一个是配置advertise-pip特性。

你可能感兴趣的:(VXLAN)