zoukankan      html  css  js  c++  java
  • [vxlan] 二 什么是VXLAN

    VXLAN是一种mac in UDP的技术。简单讲就是传统的二层帧被封装到了UDP的package中。通过UDP的IP网络发送到目的地然后再解封装。 VXLAN 跟VLAN对比,最重要的一个概念就是VNI。 VLAN中一个VLAN tag对应一个广播域, VXLAN中一个VNI对应一个广播域。

    传统VLAN中一次二层通信是这样的

    1. VM 发送 ARP-req 到交换机
    2. 交换机在VM对应的VLAN 端口内广播ARP-req, 同时记住 src_mac: switch_interface的映射
    3. dest VM 收到ARP-req,发送ARP-res
    4. 交换机收到ARP-res,记住 dst_mac:switch_interface,并发送ARP-res给 src VM
    5. src VM 和 dst VM接下来通过交换机记住的mac表来做交换
    

    而VXLAN中的一次二层通信是这样的

    首先看一下 拓扑
    
    src_vm - src_vtep - ... - dst_vtep - dst_vm
    
    1. src_VM 发送ARP-req 请求,首先到src_VTEP, 
    2. src_VTEP
        2.1 封装其为VXLAN包
        2.2 因为src_vtep 不知道 dst_vtep 的ip,所以封装后的dst_ip为一个组播地址。所有的vtep都应该加入该组播地址。(这里还有一种做法应该也合理,就是并非所有VTEP都属于同一个组播地址,而是部分VNI映射到同一个组播地址,这样ARP查询就不用发送给所有的VTEP)
    3. dst_vtep
        3.1 收到ARP包,解封装后,学习 src_mac : src_vtep_ip的映射
        3.2 发现其VNI在自己的管理范围内,于是进一步解封装转换成普通二层包,并在该二层内广播,ARP查询。
       
    4. dst_vm 发送ARP-res 到 dst_vtep
    
    5. dst_vtep 封装arp response,因为之前学习过src_mac:src_vtep_ip的映射,所以此时通过unicast的形式发送给src_vtep
    6. src_vtep 
        6.1 学习dst_mac: dst_vtep_ip
        6.2 解封装发现VNI在自己管理范围内,于是交给src_vm
    7. src_vm收到arp response
    

    在overlay的网络上,也就是寻找dst_vtep的时候,是组播。但是当dst_vtep收到vxlan包,解封装继续ARP查询的过程中。首先是根据vni转换成普通的二层包,然后在该二层内做广播查询。所以可见,vni是vxlan中的二层broadcast domain.

    上文提到了VTEP。 可以理解VTEP负担着两项工作
    1. 封装和解封装 VXLAN包
    2. 寻找目标vtep

    在VTEP 外,系统是不知道VXLAN的。

    上面是VXLAN在寻找目标VM的一次data flow。 下面看一下 vm to vm的unicast data flow

    拓扑还是如下:
    
    src_vm - src_vtep ... dst_vtep - dst_vm
    
    此时,src_vm 和 dst_vm 已经完成了ARP流程
    
    1. src_vm 发送二层帧到 src_vtep
    2. src_vtep
        2.1 封装成vni
        2.2 查看dst_mac:dst_vtep_ip 的映射
        3.3 转发给 dst_vtep
    3. dst_vtep
        解封装
        发送给vm
    4. vm收到 src 发送的二层帧
    

    到了这里,我们已经看了vxlan的单播和组播学习过程。其实现在可以回答之前的两个问题:

    为什么vxlan可以减少TOR负担

    之前 TOR中记录的信息如下:

    vm_mac1: interface1
    vm_mac2: interface2
    ...
    

    现在的TOR,要看vtep在哪里。如果 vtep在TOR上面,那么TOR还是会记录很多信息,但如果 VTEP是在机柜的每一台服务器上,那么TOR仅需要记录

    vtep_mac1: interface
    vtep_mac2: interface
    

    vtep 很显然会比vm少很多。

    为什么VXLAN中的vm可以跨dc

    因为vxlan的下面是ip网络。ip网络当然可以跨dc

  • 相关阅读:
    UVa 1364
    一个无向图博弈游戏
    poj 2777 Count Color (线段树)
    UVA 1660
    JS中的caller属性
    “给在读研究生+未来要读研同学们的一封受益匪浅的信”(摘录+整合)
    用cmd重命名.htaccess
    java Scoket的c\s结构聊天室
    log4j详解
    检查文本文件编码的Java程序
  • 原文地址:https://www.cnblogs.com/kramer/p/6769001.html
Copyright © 2011-2022 走看看