[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
[vxlan] 二 什么是VXLAN的更多相关文章
- 关于VXLAN的认识-----ovs+vxlan多链路负载分担的实现方法
一.应用环境 目前大部分网关或服务器设备常采用双链路同时接入多条ISP链路的方式来满足网络的负载均衡和主备切换等,实现该功能常用的方法是利用策略路由技术,根据链路的网络状况和权重配置在路由时动态选择不 ...
- VXLAN 基础教程:VXLAN 协议原理介绍
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...
- OpenStack入门篇(二十一)之VXLAN原理
1.Vxlan的概念 VXLAN 全称 Virtual eXtensible Local Area Network.(虚拟扩展本地局域网)VXLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更 ...
- Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- 深入 理解vxlan
VXLAN RFC 文档 : https://tools.ietf.org/html/rfc7348 作为网络虚拟化的重要技术,VXLAN备受关注,该协议是如何运作的?如何通过数据与控制层面的分离实现 ...
- Vxlan——原理
1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有 ...
- [Virtualization][SDN] VXLAN到底是什么 [转]
写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房 ...
- 网络叠加模式VLAN、VxLAN、GRE
什么是叠加网络 1.一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装. 2.叠加网络就是使用这种所谓"包内之包"的技术安全地将一个网络隐藏在另一个 网络中 ...
- GRE与VXLAN
一 GRE 1.1 概念 GRE全称是Generic Routing Encapsulation,是一种协议封装的格式,具体格式内容见:https://tools.ietf.org/html/rfc2 ...
随机推荐
- div section article区分--20150227
div section article ,语义是从无到有,逐渐增强的.div 无任何语义,仅仅用作样式化或者脚本化的钩子(hook),对于一段主题性的内容,则就适用 section,而假如这段内容可以 ...
- MySQL的索引知识
一.什么是索引. 索引是用来加速查询的技术的选择之一,在通常情况下,造成查询速度差异 的因素就是索引是否使用得当.当我们没有对数据表的某一字段段或者多个 字段添加索引时,实际上执行的全表扫描操作,效率 ...
- The twelve Day-前端之html
前端知识之html内容 HTML介绍 1.web服务本质 import socket sk = socket.socket() sk.bind(()) sk.listen() while True: ...
- C语言之链接库
链接库是windows的术语,但对于Linux来说,其概念是一样的.我们通常会把一些相似或相近功能的程序生成链接库,这样的好处是: 1)便于共享,开发软件时如需要相同功能时,不需要将大量重复的代码整合 ...
- Ubuntu 15.04 Qt5 链接 mysql数据库
序 最近在Ubuntu15.04下做一个Linux-服务器-客户端通信项目,用到MySQL数据库.开始的时候,在数据库链接时遇到障碍,查找资料解决. 特此记录,分享于此. 环境配置 系统:Ubuntu ...
- AtCoder Beginner Contest 098 D - Xor Sum 2
D - Xor Sum 2 Time limit : 2sec / Memory limit : 1024MB Score : 500 points Problem Statement There i ...
- lucene segment的产生,flush, commit与es的refresh,flush
1 segment的产生 当索引一个文档时,如果存在空闲的segment(未被其他线程锁定),则取出空闲segment list中的最后一个segment(LIFO),并锁定,将文档索引至该segme ...
- CSS 如何让 height:100%; 起作用
当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果.你知道为什么height:100%不起作用吗? 按常理,当我们用 ...
- LOGMNR分析redo log和archive log教程
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- Leetcode 331.验证二叉树的前序序列化
验证二叉树的前序序列化 序列化二叉树的一种方法是使用前序遍历.当我们遇到一个非空节点时,我们可以记录下这个节点的值.如果它是一个空节点,我们可以使用一个标记值记录,例如#. 例如,上面的二叉树可以被序 ...