数据中心网络(1)-VXLAN

想写个DC系列的文章,站在传统路由交换网络基础上谈谈数据中心网络,一方面是给自己的学习做下总结,另一方面也想分享一些东西。
谈到数据中心网络,能想到的东西无非就VXLAN、SDN、NFV、EVPN这些概念。先从基础协议开始再谈整体架构,才疏学浅,有不对的地方请评论告知。首先针对性地抛出几个问题:
1、为什么用VXLAN?使用场景有哪些?
在传统网络中分二层三层。随着云计算的普及,云主机无缝迁移的需求成了常态。为解决云主机跨三层网络的迁移,并且要满足迁移后云内网络架构包括云主机IP地址不能发生改变的要求孕育了大二层技术。要实现跨三层的二层网络通信实际上就要用到隧道技术。隧道技术的解决方案也有很多,其中包括本文要讲的VXLAN,还有NVGRE、STT、TRILL、VPLS等。NVGRE是由微软提出的,只支持服务器使用。STT是Nicira这家公司提出的,Nicira已经被VMWARE收购,STT也不支持交换机使用。提到Nicira,除了STT最大的成就就是开发了Open vSwitch和Neutron(Openstack的网络组件),而TRILL和VPLS仅仅交换机支持。所以用VXLAN解决大二层问题最为合理,而且还符合IETF标准。
很多人在刚接触云平台架构的时候会有个疑问,拿Openstack举例来说,在Neutron组件中可以启用VXLAN,那这里与交换机的VXLAN有什么关系?前面说到VXLAN是通用协议,可以在网络设备上使用,也可以在服务器上使用。先假设这个世界还没有Openstack等云架构,那么一台虚拟机要实现大二层迁移,怎么办?这个时候VXLAN是做在上层交换设备上。那么Neutron组建的VXLAN功能有什么用?有些云网络中,可以借助Neutron的VXLAN功能实现大二层需求满足云主机迁移和互访,然后用另一张网卡实现互联网的访问,如图1。阿里云飞天架构大二层网络也是用VXLAN实现,封装与解封装均在服务器侧,不同的是出公网的方式采用的是在一台服务器解封装后做了NAT转换的形式。
图1 Openstack VXLAN网络

实际上一般较大型的数据中心架构,云主机依靠VLAN进行隔离,不,准确的来说是租户标识。拿Openstack来说,Neutron使用了VLAN功能,而上千个VLAN号对应租户量已经足够使用。云主机带着VLAN TAG出来后,再由交换机根据不同的VLAN TAG进行VXLAN封装隧道来实现大二层,如图2。这里专门映射VXLAN和VLAN的对应关系称为桥接域。拿国产设备来说,叫bridge-domain。租户的隔离则是通过路由标识来实现。
图2 交换机实现大二层网络 
在谈到什么时候用VXLAN的时候,从云计算角度出发,以上举的例子都是IAAS层面的情景,还有PAAS层面的。例如容器编排调度工具kubernetes,有几套网络模型用来实现容器之间的互相通信,我们称为CNI(container network interface),包括Flannel、Calico、macvlan、OpenvSwitch等,其中Flannel网络模型就是用VXLAN来实现不同容器在宿主机的隧道模式通信的。
2、VXLAN报文格式
VXLAN数据包也可以称为MACINUDP数据包,原本数据链路层允许的最大以太网数据包长度是1500字节,然而数据包经过VTEP(VXLAN的隧道端点)封装后数据包会增加50字节,数据包格式如图3。那么VXLAN报文长度最大达到了1550,现在有些VTEP在处理VXLAN报文的时候并不接受分片,这就需要配置设备MTU1550了。
图3 VXLAN报文

报文的详细分解可以看图4,所以VXLAN是使用UDP封装在了传输层,目标端口是4789,源端口是随机的,根据源MAC地址进行HASH产生。至于为什么源端口随机,有一个很大的好处就是可以实现ECMP,如果源端口一成不变将导致网络只走一条路。而用来封装数据包的三层IP地址一般是设备的环回口地址,至于环回口地址的发布用OSPF、ISIS、BGP都可以,只要满足三层互通就可以。
图4 VXLAN报文分解

3、怎么配?
列举了一个VTEP端的华为配置,基本上看到配置就明白什么意思了,另一端配置同理。
SW1:
interface nve1(NVE是实现网络虚拟化的设备,也就是隧道的端点)
source 2.2.2.2(vxlan隧道封装的源点,loopback地址,事先得做三层互通)
vni 5010 head-end peer-list 3.3.3.3(5010是vni号,也就是vxlan隧道编号,3.3.3.3是对端loopback)
bridge-domain 10(VLAN和VXLAN之间的联系,用BD来做,也就是称为桥接域,这里的10只是本地有效,并不是VLAN)
vxlan vni 5010(对应的vxlan隧道是5010)
interface 10GE1/0/3
port link-type trunk
port trunk allow vlan 1-9,11-100(这里就不能写10了,10要写在单独的子口里,access的就用pvid来做咯)
interface 10GE1/0/3.1 mode l2(二层端口vlan10划入DB10里)
encapsulation dot1q vid 10
bridge-domain 10
4、EVPN是什么?和VXLAN是什么关系?
EVPN要讲的东西很多,会专门用一章来讲,至于为什么要用,这里先说下VXLAN的广播泛洪问题。首先介绍下BUM报文,BUM即broadcast unicast multicast,数据包在发送到一个VTEP端的时候会进行头端复制,怎么理解头端复制呢?其实有点类似二层广播泛洪,一个数据包到了VTEP以后,VTEP设备根据VLAN信息找到了对应的二层广播域,前面看配置知道,有了二层广播域以后,对应的VNI编号也知道了,也就是知道了所有隧道列表,然后会把数据包进行报文复制,然后进行VXLAN封装转发到对端的多个VTEP上。对端VTEP收到报文后对VNI等信息核对,核对完后解封装。解封装后进行广播处理。数据中心网络中,特别是云平台网络中,终端数量是成百上千的,每个终端都发起一个ARP请求,每个请求都进行一次头端复制那是很不合理的呀,由此就引入了ARP抑制。
ARP抑制是一种优化机制,由于VXLAN的引入,就有了二层网关的说法,在二层网关上会存在一个IP和MAC对应关系的表,称为ARP抑制表。当二层ARP请求发起的时候,会查找目标MAC地址有没有在这个ARP抑制表里,如果有,目标泛洪广播帧中FFFFFFFF会就改成实际目标MAC地址,变成一个单播帧。而有些网络设备,比如思科的做法是代答的方式,当发现抑制表里有,就直接由二层代答,不进行头端复制泛洪。那么问题来了,ARP抑制表怎么来的?综上所述,VXLAN是没有控制平面的,所有转发都是通过泛洪获得转发信息,那么二层路由信息的获取,用来找到对应的VTEP来避免泛洪,实现VXLAN的控制层面,就要借助EVPN了。EVPN依靠BGP扩展团体属性,用于控制IP地址和MAC的路由信息的发布与接收。EVPN的更多技术细节包括与VXLAN的配合使用在第二章分享。而在第三章中分享的是Data Center Interconnection的实现。
数据中心网络(1)-VXLAN的更多相关文章
- 数据中心网络技术新贵:VXLAN与园区网络虚拟化
摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生. 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发 ...
- [转帖]数据中心网络里的Underlay和Overlay
数据中心网络里的Underlay和Overlay https://blog.csdn.net/zjc801blog/article/details/54289683 2017年01月09日 15:47 ...
- 数据中心网络架构的问题与演进 — 云网融合与 SD-WAN
目录 文章目录 目录 前文列表 云网融合 云网融合的应用场景 SD-WAN SD-WAN 的应用场景 企业组网互联 SD-EN 数据中心互联 SD-DCI 云间互联 SD-CX 企业用户接入云 数据中 ...
- 数据中心网络架构的问题与演进 — 混合云与 VPC 专有网络
目录 文章目录 目录 前文列表 历史背景 混合云 Why hybrid cloud? 混合云市场 混合云的逻辑架构 混合云应用场景 灾难恢复 数据备份 负载扩容 应用部署 开发测试生产部署 混合云产品 ...
- 数据中心网络架构的问题与演进 — Overlay 网络
目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...
- 数据中心网络架构的问题与演进 — CLOS 网络与 Fat-Tree、Spine-Leaf 架构
目录 文章目录 目录 前文列表 CLOS Networking Switch Fabric 胖树(Fat-Tree)型网络架构 Fat-Tree 拓扑示例 Fat-Tree 的缺陷 叶脊(Spine- ...
- [转载] Google数据中心网络技术漫谈
原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...
- 数据中心网络架构的问题与演进 — NFV
目录 文章目录 目录 前文列表 前言 NFV NFV 的最终目标 NFV 的抽象框架 基础架构层与虚拟基础设施管理层 资源管理与业务流程编排层 OSS 层 SDN 控制层 NFV 的生态合作 NFV ...
- 数据中心网络架构的问题与演进 — SDN
目录 文章目录 目录 前文列表 OpenFlow 源起 从 OpenFlow 衍生 SDN 前文列表 <数据中心网络架构的问题与演进 - 传统路由交换技术与三层网络架构> <数据中心 ...
随机推荐
- No module named 'MySQLdb' Python3 + Django 2.0.3 + mysql 无法连接
问题概览: 学习Django连接mysql数据库的时候遇到了问题 首先安装mysql(Python 3不支持MySQL-python): pip install pymysql 进入编辑 settin ...
- 使用Vagrant和VirtualBox一步步地创建一个Base Box
box集合 http://www.vagrantbox.es/ Vagrant和VirtualBox软件的安装步骤省略,去官网下载最新的版本然后下一步下一步地安装就行了,和正常的安装软件没有什么区别 ...
- 团队作业——Alpha冲刺 6/12
团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面完成标题栏的开发,以及与已经完成gallery开发的同学,商讨我负责的界面中,图片滑动的具体措施. 明日任务:除了图像识别内容嵌入 ...
- 使用PhotoShop将视频转为gif格式
由于文档中不方便上传视频,尤其是一些短视频,将其制作成gif格式更便于浏览,刚好PhotoShop中有这种功能,笔者在这里分享一下. 在PS中打开需要转换格式的视频文件,选择文件选项导出中的导出为We ...
- 常用npm 命令
npm 官方网站:npm的使用说明 安装模块 npm install 安装当前目录package.json文件中配置的dependencies模块 安装本地的模块文件 npm install ...
- Linux之Vim学习
Linux之Vim学习 一般模式 光标移动 按键 作用 j或down方向键 向下移动一个字符 k或up方向键 向上移动一个字符 h或left方向键 向左移动一个字符 l或right方向键 向右移动一个 ...
- MP实战系列(十五)之执行分析插件
SQL 执行分析拦截器[ 目前只支持 MYSQL-5.6.3 以上版本 ],作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作! 这里我引用M ...
- MP实战系列(十二)之封装方法详解(续二)
继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...
- XML 读写(XmlDocument、XPathNavigator、XDocument)
内存中的 XML 处理 基于流的 XML 处理提供了最小的负载,但也只提供了最小的灵活性.在很多 XML 处理场景里,你不会在这么低的层次下工作. 对内存中的 XML 的处理则更加方便,但没有单一.标 ...
- zabbix items 配置
item是什么?它是我们对于host监控的基本条目,它属于不同的applications中,item的设置既可以针对具体的某个host主机,也可以针对模板进行设定(可以在多个主机进行复用). item ...