网络浅谈
-
Overlay与underlay
在SDN解决方案中overlay与underlay是最为常见的二个网络术语,下面我将分享自己对OverLay和UnderLay网络的理解。
UnderLay指的是物理网络,它由物理设备和物理链路组成。常见的物理设备有交换机、路由器、防火墙、负载均衡、入侵检测、行为管理等,这些设备通过特定的链路连接起来形成了一个传统的物理网络,这样的物理网络,我们称之为UnderLay网络。
UnderLay网络比较好理解,下面我们来看一个何谓“OverLay网络”……
提起OverLay,很多人认为“这是云计算发展的产物”,实际上,这个观点不是对的,是错误的。在云计算产生之前,VXLAN技术已经存在多年,且在实际中得到了部分应用,只不过,云计算使VXLAN得到普及成为了现实。关于VXLAN与SDN之间的关系——“VXLAN不是SDN,同时,SDN也不只是VXLAN,但是,VXLAN是SDN的核心技术,没有VXLAN,SDN也就丧失了它的意义”。
刚才讲到的是VXLAN与SDN的关系,现在我们来看OverLay的概念:
OverLay其实就是一种隧道技术,VXLAN,NVGRE及STT是典型的三种隧道技术,它们都是通过隧道技术实现大二层网络。将原生态的二层数据帧报文进行封装后在通过隧道进行传输。总之,通过OverLay技术,我们在对物理网络不做任何改造的情况下,通过隧道技术在现有的物理网络上创建了一个或多个逻辑网络即虚拟网络,有效解决了物理数据中心,尤其是云数据中心存在 的诸多问题,实现了数据中心的自动化和智能化。
与UnderLay网络相比,OverLay实现了控制与转发的分离,这是SDN的核心理念,同时,也验证了前面一句话即“VXLAN是SDN的核心技术”,总之,“不懂VXLAN,何谈SDN”
注意:根据OverLay的载体不同,VXLAN的OverLay可以分为“主机OverLay”、“网络OverLay”和“混合OverLay”。
网络OverLay
![](https://ss2.meipian.me/users/7638345/7029fd34ea9748219b1f1f2dff08dd37.jpg?meipian-watermark/bucket/ivwen/key/dXNlcnMvNzYzODM0NS83MDI5ZmQzNGVhOTc0ODIxOWIxZjFmMmRmZjA4ZGQzNy5qcGc=/nickname/U3RldmVuIFdhbmc=/userid/NzYzODM0NQ==/sign/22d6bf9949091565114df58ff73d7651%7cimageView2/2/w/750/h/1400/interlace/0/q/80)
主机OverLay
![](https://ss2.meipian.me/users/7638345/90c91548538d46b4b40453a12e734e30.jpg?meipian-watermark/bucket/ivwen/key/dXNlcnMvNzYzODM0NS85MGM5MTU0ODUzOGQ0NmI0YjQwNDUzYTEyZTczNGUzMC5qcGc=/nickname/U3RldmVuIFdhbmc=/userid/NzYzODM0NQ==/sign/22d6bf9949091565114df58ff73d7651%7cimageView2/2/w/750/h/1400/interlace/0/q/80)
混合OverLay
![](https://ss2.meipian.me/users/7638345/ee65108c9fb8465ea8014c91b6b71e83.jpg?meipian-watermark/bucket/ivwen/key/dXNlcnMvNzYzODM0NS9lZTY1MTA4YzlmYjg0NjVlYTgwMTRjOTFiNmI3MWU4My5qcGc=/nickname/U3RldmVuIFdhbmc=/userid/NzYzODM0NQ==/sign/22d6bf9949091565114df58ff73d7651%7cimageView2/2/w/750/h/1400/interlace/0/q/80)
【温馨提示】
VMware的NSX提供的是主机OverLay解决方案,而华为及思科提供的是”网络OverLay解决方案”和”混合OverLay解决方案”。无聊哪一种方案都有其独特的性能。但是,目前来看,VMware的NSX解决方案更胜一筹……
---------------
SDN
---------------
SDN,诞生于美国GENI项目资助的斯坦福大学的一个课程,该校有一个叫麦克考恩的教授,他领导的一个研究团队提出了OpenFlow的概念,其主要目的就是让网络变的像软件一样进行灵活编程(控制)。嘿嘿,这样讲来,想必大家知道SDN的最终目的是什么了吧?
![](https://ss2.meipian.me/users/7638345/89da0c65a20b42b0addf2938fe329585.jpg-mobile)
SDN软件定义的网络,其核心就是引入了一个叫做SDN的控制器,实现了转控分离和集中控制。大家别小看这八个字哟——”转控分离 集中控制“,它可以衡量一个厂商产品是不是SDN的根本标准啊......
![](https://ss2.meipian.me/users/7638345/e97f420ee4274a5bb34bf9a40d307d91.jpg-mobile)
SDN只是一个理念,或者说,只是由传统网络架构演变出来的一种新型的网络架构。它没有一些厂商说的那么高深莫测,那么玄乎其玄。不同厂商对于SDN有着不同的描述,无论他们如何描述,只要你把握SDN三个基本的特征即可,到底哪三个特征呢?”特征一:转控分离;特征二:集中控制;特征三:开放接口;“
![](https://ss2.meipian.me/users/7638345/92e87134a2694508adc390f350f32050.jpg-mobile)
---------------------------------
----------------------------------
![](http://upload-images.jianshu.io/upload_images/7749898-77d0f535be80b48a.png?imageMogr2/auto-orient/strip|imageView2/2/w/500/format/webp)
Overlay 网络建立在另一个计算机网络之上的虚拟网络(不能独立出现),Overlay 底层依赖的网络是 Underlay 网络。
Underlay 网络是专门用来承载用户 IP 流量的基础架构层,它与 Overlay 网络之间的关系有点类似物理机和虚拟机。Underlay 网络和物理机都是真正存在的实体,它们分别对应着真实存在的网络设备和计算设备,而 Overlay 网络和虚拟机都是依托在下层实体使用软件虚拟出来的层级。
如何组建Overlay网络
在实践中我们一般使用虚拟局域网扩展技术VxLAN(Virtual Extensible LAN)组建 Overlay 网络。VxLAN 使用虚拟隧道端点VTEP (Virtual Tunnel End Point)设备对服务器发出和收到的数据包进行二次封装和解封。
![](http://upload-images.jianshu.io/upload_images/7749898-f49b1a34c24813c1.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/980/format/webp)
两台物理机可以通过三层的 IP 网络互相访问:上图中两个 VTEP 会相互连接并获得网络中的 MAC 地址、IP 地址等信息,例如,服务器 1 中的 VTEP 需要知道想要访问绿色网络中的 10.0.0.2 虚拟机需要先访问 IP 地址为 204.79.197.200 的服务器 2。这些配置可以被网络管理员手动配置、自动学习、也可以通过上层的管理器设置。
![](http://upload-images.jianshu.io/upload_images/7749898-1e6244a7795ca70c.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1080/format/webp)
当绿色的 10.0.0.1 虚拟机想要向绿色的 10.0.0.2 发送数据时,经过以下步骤:
1) 绿色的 10.0.0.1 会将 IP 数据包发送给 VTEP;
2) 服务器 1 的 VTEP 收到 10.0.0.1 发送的数据包后;
a) 从收到的 IP 数据包中获取目的虚拟机的 MAC 地址;
b) 在本地的转发表中查找该 MAC 地址所在服务器的 IP 地址,即 204.79.197.200;
c) 将绿色虚拟机所在的虚拟网络标识符(VxLAN Network Identifier、VNI)以及原始的 IP 数据包作为负载,构建新的 UDP 数据包;
d) 将新的 UDP 数据包发送到网络中;
3) 服务器 2 的 VTEP 收到 UDP 数据包后;
a) 去掉 UDP 数据包中的协议头;
b) 查看数据包中 VNI;
c) 将 IP 数据包转发给目标的绿色服务器 10.0.0.2;
4) 绿色的 10.0.0.2 会收到绿色服务器 10.0.0.1 发送的数据包。
笔记:以上步骤中的VNI(VxLAN Network Identifier)是干嘛的? 2) c) 和3) b) 中vni做了什么处理?整个过程中VTEP起到网关的重要性。
在数据包的传输过程中,通信的双方都不知道底层网络做的这些转换,它们认为两者可以通过二层的网络互相访问,但是实际上经过了三层 IP 网络的中转,通过 VTEP 之间建立的隧道实现了连通。除了 VxLAN 之外,Overlay 网络还有很多实现方案,不过也都大同小异。Overlay 网络虽然能够利用底层网络在多数据中心之间组成二层网络,但是它的封包和拆包过程也会带来额外开销,所以为什么我们的集群需要 Overlay 网络呢,本文将介绍 Overlay 网络解决的三个问题:
1) 云计算中集群内的、跨集群的或者数据中心间的虚拟机和实例的迁移比较常见;
2) 单个集群中的虚拟机规模可能非常大,大量的 MAC 地址和 ARP 请求会为网络设备带来巨大的压力;
3) 传统的网络隔离技术 VLAN 只能建立 4096 个虚拟网络,公有云以及大规模的虚拟化集群需要更多的虚拟网络才能满足网络隔离的需求;
虚拟机迁移
Kuberentes 目前已经是容器编排领域的事实标准了,虽然很多传统行业仍然在使用物理机部署服务,但是越来越多的计算任务在未来都会跑在虚拟机上。虚拟机迁移是将虚拟机从一个物理硬件设备移到另一个设备的过程,因为日常的更新维护,集群中的大规模虚拟机迁移是比较常见的事情,上千台物理机组成的大集群使得集群内的资源调度变得更加容易,我们可以通过虚拟机迁移来提高资源的利用率、容忍虚拟机的错误并提高节点的可移植性。
当虚拟机所在的宿主机因为维护或者其他原因宕机时,当前实例就需要迁移到其他的宿主机上,为了保证业务不中断,我们需要保证迁移过程中的 IP 地址不变,因为 Overlay 是在网络层实现二层网络,所以多个物理机之间只要网络层可达就能组建虚拟的局域网,虚拟机或者容器迁移后仍然处于同一个二层网络,也就不需要改变 IP 地址。
![](http://upload-images.jianshu.io/upload_images/7749898-0c0f81298f3b3c57.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/750/format/webp)
如上图所示,迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心,但是由于上述两个数据中心之间可以通过 IP 协议连通,所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成二层网络,集群内部的主机也完全不清楚、不关心底层的网络架构,它们只知道不同虚拟机之间是可以连通的。
虚拟机规模
我们在 为什么 Mac 地址不需要全球唯一 曾经介绍过二层网络的通信需要依赖 MAC 地址,一个传统的二层网络需要网络设备中存储着从 IP 地址到 MAC 地址的转发表。
目前 Kuberentes 官方支持的最大集群为 5000 节点,如果这 5000 个节点中的每个节点都仅仅包含一个容器,这对于内部的网络设备其实没有太大的压力,但是在实际情况下 5000 节点的集群中都包含几万甚至几十万个容器,当某个容器向集群中发送 ARP 请求,集群中的全部容器都会收到 ARP 请求,这时会带来极高的网络负载。
在使用 VxLAN 搭建的 Overlay 网络中,网络会将虚拟机发送的数据重新封装成 IP 数据包,这样网络只需要知道不同 VTEP 的 MAC 地址,由此可以将 MAC 地址表项中的几十万条数据降低到几千条,ARP 请求也只会在集群中的 VTEP 之间扩散,远端的 VTEP 将数据拆包后也仅会在本地广播,不会影响其他的 VTEP,虽然这对于集群中的网络设备仍然有较高的要求,但是已经极大地降低了核心网络设备的压力。
![](http://upload-images.jianshu.io/upload_images/7749898-b8b747b92fff595e.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1000/format/webp)
Overlay 网络其实与软件定义网络(Software-defined networking、SDN)密切相关,而 SDN 引入了数据平面和控制平面,其中数据平面负责转发数据,而控制平面负责计算并分发转发表。VxLAN 的 RFC7348 中只定义了数据平面的内容,由该技术组成的网络可以通过传统的自学习模式学习网络中的 MAC 与 ARP 表项,但是在大规模的集群中,我们仍然需要引入控制平面分发路由转发表
网络隔离
大规模的数据中心往往都会对外提供云计算服务,同一个物理集群可能会被拆分成多个小块分配给不同的租户(Tenant),因为二层网络的数据帧可能会进行广播,所以出于安全的考虑这些不同的租户之间需要进行网络隔离,避免租户之间的流量互相影响甚至恶意攻击。传统的网络隔离会使用虚拟局域网技术(Virtual LAN、VLAN),VLAN 会使用 12 比特表示虚拟网络 ID,虚拟网络的上限是 4096 个(2的12次方)。
![](http://upload-images.jianshu.io/upload_images/7749898-6387d41821767b9a.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/601/format/webp)
4096 个虚拟网络对于大规模的数据中心来说远远不够,VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数,总共可以表示 16,777,216 个虚拟网络,这也就能满足数据中心多租户网络隔离的需求了。
![](http://upload-images.jianshu.io/upload_images/7749898-d33e5d2d63879d3b.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1080/format/webp)
更多的虚拟网络其实是 VxLAN 顺手带来的好处,它不应该成为使用 VxLAN 的决定性因素。VLAN 协议的扩展协议 IEEE 802.1ad 允许我们在以太网帧中加入两个 802.1Q 的协议头,两个 VLAN ID 组成的 24 比特也可以表示 16,777,216 个虚拟网络,所以想要解决网络隔离不是使用 VxLAN 或者 Overlay 网络的充分条件。
总结
今天的数据中心包含多个集群以及海量的物理机,Overlay 网络是虚拟机和底层网络设备之间的中间层,通过 Overlay 网络这一个中间层,我们可以解决虚拟机的迁移问题、降低二层核心网络设备的压力并提供更大规模的虚拟网络数量:
在使用 VxLAN 构成二层网络中,虚拟机在不同集群、不同可用区和不同数据中心迁移后,仍然可以保证二层网络的可达性,这能够帮助我们保证线上业务的可用性、提升集群的资源利用率、容忍虚拟机和节点的故障;
集群中虚拟机的规模可能是物理机的几十倍,与物理机构成的传统集群相比,虚拟机构成的集群包含的 MAC 地址数量可能多一两个数量级,网络设备很难承担如此大规模的二层网络请求,Overlay 网络通过 IP 封包和控制平面可以减少集群中的 MAC 地址表项和 ARP 请求;
VxLAN 的协议头使用 24 位的 VNI 表示虚拟网络,总共可以表示 1600 万的虚拟网络,我们可以为不同的虚拟网络单独分配网络带宽,满足多租户的网络隔离需求;
需要注意的是,Overlay 网络只是一种在物理网络上的虚拟网络,使用该技术并不能直接解决集群中的规模性等问题,而 VxLAN 也不是组建 Overlay 网络的唯一方法,在不同场景中我们可以考虑使用不同的技术,例如:NVGRE、GRE 等。到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题:
VxLAN 将原始数据包封装成 UDP 在网络上分发,那么 NVGRE 和 STT 分别使用哪些方法传输数据呢?
在 Kubernetes 中部署 Overlay 网络应该使用什么技术或者软件?
-----------------------------
IDC里面的虚拟设备
-----------------------------
数据中心前面加上“虚拟”二个字后就成了“虚拟数据中心”,一听给人一种高大尚的感觉。“什么是虚拟数据中心?“。今天,我将分享自己对”虚拟数据中心“的理解,不足的地方,大家批评指正。
在谈”虚拟数据中心“之前,首先,我们应该用短暂的几分钟梳理一下”物理数据中心“的概念。
几乎所有的组织机构都有自己的数据中心,有的机构的数据中心规模很大,业务很多,比如:百度、京东、腾讯;有的机构的数据中心规模非常小,小到只有一个低端的路由器或防火墙。一般情况一下,一个数据中心通常由”防火墙“、”路由器“、”服务器“、”存储“、”交换机“、”负载均衡“、”入侵检测“、”VPN设备”、“上网行为管理”等硬件设备组成,每个硬件设备实现特定的功能,这样的数据中心,我们定义为“传统的数据中心”即由硬件叠加而成承载各种业务的数据中心。随着信息化的不断发展,尤其是“云计算”和“大数据”等技术的发展,传统的数据中心面临着很多问题,主要表现在以下几个方面:
1. 传统的基础设施不能满足业务增长,问题滞后,导致业务发展非常缓慢;
2. 传统数据中心中的物理资源无法进行科学的分配和称量,要么导致大量资源的闲置,要么导致资源紧张。
3. 业务多、部门多,管理困难,配置复杂,维护难度大;
面对这些问题,“虚拟数据中心”应运而生。“虚拟数据中心”的产生就是为了解决这些问题的,让数据中心变的更加简单化、灵活化、和自动化。而这里的“简单化”、“灵活化”和“自动化”是建立在“虚拟化”的基础上的。“虚拟数据中心怎样实现这”三化“的呢?实际上,回答这个问题也不难,我们一起来看看”虚拟数据中心“到底虚拟了哪些东西?
【防火墙虚拟化】
提起虚拟防火墙,一些厂商的技术人员往往想到的是”软件定义的防火墙“,如VM公司NSX中的”微分段“。其实,这种理解是片面的,实际上,防火墙的虚拟化有二种形态:一种是防火墙硬件虚拟化即防火墙原厂商通过一种虚拟化技术,将一台独立的物理防火墙虚拟成多个逻辑的防火墙,每个逻辑的防火墙可以分配给不同的部门或业务使用; 另外一种是类似于VM厂商NSX产品中的”微分段“这种软件定义的防火墙,即一个虚拟防火墙对应一个虚拟机,这种虚拟防火墙承载地址转换的功能,但是,大家一个要切记,这种软件定义的防火墙只能实现防火墙的一些基本的功能,如地址转换,对于高级功能还不支持,如ACL VPN等。
【网关虚拟化】
网关虚拟化和前面提到的防火墙虚拟化一样也有二种形态:一种是网关硬件虚拟化,另外一种是软件定义的网关虚拟化;
【负载均衡虚拟化】
负载均衡设备的虚拟化也有二种形态:一种是硬件负载均衡设备的虚拟化;另外一种是软件定义负载均衡的虚拟化;
【VPN设备虚拟化】
负载均衡设备的虚拟化也有二种形态:一种是硬件VPN设备的虚拟化;另外一种是软件定义VPN的虚拟化;
【虚拟DHCP设备】
所谓的虚拟DHCP设备就是一台虚拟机,这台虚拟机的配置不大,为数据中心提供DHCP服务 ,且可以为多个不同的子网提供DHCP服务,大家记得哟,不是说每个子网都要有一个虚拟DHCP设备。
总之,有了这些虚拟化的设备,我们就可以灵活的将这些网络设备像搭积木一样进行组装,从而将数据中心变的更加简单、灵活和自动。
-----------------
"边缘计算"
------------------
在日常工作中,可能经常听到这个名字,它给人一种神秘感和高大尚感。其实啊,这个"边缘计算"并不神奇,所谓的高大尚是IT信息化发展进程中的一次新包装,里面还是大家所熟知的一些东西。这或许就是所谓的"新瓶装装旧酒"。众所周知,数据中心,也就是我们常说的"机房",它里面拥纳了计算资源、存储资源、网络资源及各种业务系统。数据中心负责信息的处理和存储。一般而言,前端设备,这里称之为边缘设备,他们将收集到的信息提交给数据中心的计算设备及存储设备进行计算和存储,由计算设备处理后的数据反馈给边缘设备,边缘设备根据收到的数据执行相应的操作。
![](https://ss2.meipian.me/users/7638345/7f2ae21bc5a9479387684738a11fa7b6.jpg?meipian-watermark/bucket/ivwen/key/dXNlcnMvNzYzODM0NS83ZjJhZTIxYmM1YTk0NzkzODc2ODQ3MzhhMTFmYTdiNi5qcGc=/nickname/U3RldmVuIFdhbmc=/userid/NzYzODM0NQ==/sign/22d6bf9949091565114df58ff73d7651%7cimageView2/2/w/750/h/1400/interlace/0/q/80)
当整个网络规模很大时,大量边缘设备将收集的信息传递给数据中心,不仅给网络带来压力,同时,给计算资源带来压力,从而造成"中心紧张,边缘空闲;忙的忙死,闲的闲死"的局面。有句话说的好,"兵来将挡水来土掩",哪里不行不那里。为了解决这个问题,一些厂商推出了"特定产品",这个特定的产品融合计算资源 存储资源和网络资源,从而使边缘设备拥有了部分信息处理和存储的能力。
![](https://ss2.meipian.me/users/7638345/2b98ab153f734d1998c0ea1ad23013b1.jpg?meipian-watermark/bucket/ivwen/key/dXNlcnMvNzYzODM0NS8yYjk4YWIxNTNmNzM0ZDE5OThjMGVhMWFkMjMwMTNiMS5qcGc=/nickname/U3RldmVuIFdhbmc=/userid/NzYzODM0NQ==/sign/22d6bf9949091565114df58ff73d7651%7cimageView2/2/w/750/h/1400/interlace/0/q/80)