数据中心网络(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 前文列表 <数据中心网络架构的问题与演进 - 传统路由交换技术与三层网络架构> <数据中心 ...
随机推荐
- November 12th, 2017 Week 46th Sunday
I love you not for who you are, but for who I am with you. 我爱你不是因为你是谁,而是因为跟你在一起,我是谁. I enjoy the fee ...
- Python3编写网络爬虫03-正则表达式的使用
一.正则表达式(处理字符串强大的工具,有特定的语法结构)功能:实现字符串的检索,替换,匹配验证实例: 地址:http://tool.oschina.net/regex/ #测试文本Hello,my p ...
- ES6简介之let和const命令解说
一.var申明变量 学习过JavaScript的同学都应该知道,ES5中申明变量使用var,ES5中的var可以说是无所不能的,所有类型的变量都是由var来申明,但往往很多使用者不知道var申明的变量 ...
- PHP中全局变量global和$GLOBALS[]的区别分析
$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针 一.举例比较 例一: 复制代码 代码如下: <?php $var1 = 1; ...
- 【Odoo 8开发教程】第一章:Odoo 8.0安装
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/10779733.html odoo有三种常见的安装方式:打包程序安装.源码安装以及Docker镜像安装. 一:打 ...
- java.lang.NoSuchMethodError: No static method getFont
最近在Android Studio升级3.0后,在AlertDialog弹窗时报出了如下问题: java.lang.NoSuchMethodError: No static method getFon ...
- leetcode 217—Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- css实现气泡框效果
前提:气泡框或者提示框是网页很常见的,实现它的方式有很多,我们以前最常用的就是切图片 然后通过 "定位" 方式 定位到相应的位置,但是用这种方式维护很麻烦,比如设计师想改成另外一种 ...
- liMarquee – jQuery无缝滚动插件(制作跑马灯效果)
liMarquee 是一款基于 jQuery 的无缝滚动插件,类似于 HTML 的 marquee 标签,但比 marquee 更强大.它可以应用于任何 Web 元素,包括文字.图像.表格.表单等元素 ...
- day 27
今日内容: 关于面向对象的一些内置方法 1.__str__:在对象被打印时自动触发,可用来定义对象被打印. 注意:返回必须是一个字符串类型的值 ############################ ...