1. 数据中心网络

1.1 接入+汇聚+核心

数据中心往往有非常多的机器,当塞满一机架的时候,需要有交换机将这些服务器连接起来,可以互相通信。这些交换机往往是放在机架顶端的,所以经常称为 TOR(Top Of Rack)交换机。这一层的交换机常常称为接入层(Access Layer)

当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高,带宽也更大。这些交换机称为汇聚层交换机(Aggregation Layer)。汇聚层将大量的计算节点相互连接在一起,形成一个集群。在这个集群里面,服务器之间通过二层互通,这个区域常称为一个 POD(Point Of Delivery),有时候也称为一个可用区(Available Zone)。

当节点数目再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机。核心交换机吞吐量更大,高可用要求更高,肯定需要堆叠,但是往往仅仅堆叠,不足以满足吞吐量,因而还是需要部署多组核心交换机。核心和汇聚交换机之间为了高可用,也是全互连模式的。

1.2 路由vs大二层

传统的架构,汇聚和核心之间通过三层网络互通的,二层都不在一个广播域里面,不会存在二层环路的问题。三层有环是没有问题的,只要通过路由协议选择最佳的路径就可以了。

随着数据中心里面的机器越来越多,尤其是有了云计算、大数据,集群规模非常大,而且都要求在一个二层网络里面。这就需要二层互连从汇聚层上升为核心层,也即在核心以下,全部是二层互连,全部在一个广播域里面,这就是常说的大二层。

核心交换机之外,就是边界路由器了。至此从服务器到数据中心边界的层次情况已经清楚了。在核心交换上面,往往会挂一些安全设备,例如入侵检测、DDoS 防护等等。这是整个数据中心的屏障,防止来自外来的攻击。核心交换机上往往还有负载均衡器。

这是一个典型的三层网络结构。这里的三层不是指 IP 层,而是指接入层、汇聚层、核心层三层。

这种模式非常有利于外部流量请求到内部应用。这个类型的流量,是从外到内或者从内到外,对应到上面那张图里,就是从上到下,从下到上,上北下南,所以称为南北流量

但是随着云计算和大数据的发展,节点之间的交互越来越多,例如大数据计算经常要在不同的节点将数据拷贝来拷贝去,这样需要经过交换机,使得数据从左到右,从右到左,左西右东,所以称为东西流量

2. 云网络

数据中心里面堆着一大片一大片的机器,用网络连接起来,机器数目一旦非常多,人们就发现,维护这么一大片机器还挺麻烦的,有好多不灵活的地方。

采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就 N 年,不能退货,哪怕业务不做了,机器还在数据中心里留着。

运维不灵活:一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。

规格不灵活:采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核 8G,所以很多应用混合部署在上面,端口各种冲突,容易相互影响。

复用不灵活:一台机器,一旦一个用户不用了,给另外一个用户,那就需要重装操作系统。因为原来的操作系统可能遗留很多数据,非常麻烦。

为了解决这些问题,人们发明了一种叫虚拟机的东西,并基于它产生了云计算技术。

2.1 虚拟网卡的原理


首先,虚拟机要有一张网卡。对于 qemu-kvm 来说,这是通过 Linux 上的一种 TUN/TAP 技术来实现的。

虚拟机是物理机上跑着的一个软件。这个软件可以像其他应用打开文件一样,打开一个称为 TUN/TAP 的 Char Dev(字符设备文件)。打开了这个字符设备文件之后,在物理机上就能看到一张虚拟 TAP 网卡。

虚拟化软件作为“骗子”,会将打开的这个文件,在虚拟机里面虚拟出一张网卡,让虚拟机里面的应用觉得它们真有一张网卡。于是,所有的网络包都往这里发。

当然,网络包会到虚拟化软件这里。它会将网络包转换成为文件流,写入字符设备,就像写一个文件一样。内核中 TUN/TAP 字符设备驱动会收到这个写入的文件流,交给 TUN/TAP 的虚拟网卡驱动。这个驱动将文件流再次转成网络包,交给 TCP/IP 协议栈,最终从虚拟 TAP 网卡发出来,成为标准的网络包。

就这样,几经转手,数据终于从虚拟机里面,发到了虚拟机外面。

2.2 虚拟网卡的互联互通

我们先来看,云计算中的网络都需要注意哪些点。

共享:尽管每个虚拟机都会有一个或者多个虚拟网卡,但是物理机上可能只有有限的网卡。那这么多虚拟网卡如何共享同一个出口?

隔离:分两个方面,一个是安全隔离,两个虚拟机可能属于两个用户,那怎么保证一个用户的数据不被另一个用户窃听?一个是流量隔离,两个虚拟机,如果有一个疯狂下片,会不会导致另外一个上不了网?

互通:分两个方面,一个是如果同一台机器上的两个虚拟机,属于同一个用户的话,这两个如何相互通信?另一个是如果不同物理机上的两个虚拟机,属于同一个用户的话,这两个如何相互通信?

灵活:虚拟机和物理不同,会经常创建、删除,从一个机器漂移到另一台机器,有的互通、有的不通等等,灵活性比物理网络要好得多,需要能够灵活配置。

在每台机器上都创建网桥 br0,虚拟机的网卡都连到 br0 上,物理网卡也连到 br0 上,所有的 br0 都通过物理网卡出来连接到物理交换机上。

2.3 虚拟网卡的隔离


隔离可以通过 VLAN 的方式。但是 VLAN 的隔离,数目太少,最多4096个。

要对不同用户的网络进行隔离,解决 VLAN 数目有限的问题,需要通过 Overlay 的方式,常用的有 GRE 和 VXLAN。

GRE 是一种点对点的隧道模式,VXLAN 支持组播的隧道模式,它们都要在某个 Tunnel Endpoint 进行封装和解封装,来实现跨物理机的互通。

OpenvSwitch 可以作为 Tunnel Endpoint,通过设置流表的规则,将虚拟机网络和物理机网络进行隔离、转换。

2.4 软件定义网络


用 SDN 控制整个云里面的网络,就像小区保安从总控室管理整个物业是一样的,将控制面和数据面进行了分离。

在 OpenvSwitch 里面,有一个流表规则,任何通过这个交换机的包,都会经过这些规则进行处理,从而接收、转发、放弃。

将 OpenvSwitch 引入了云之后,可以使得配置简单而灵活,并且可以解耦物理网络和虚拟网络。

2.5 云中的网络安全

在云平台上,一般允许一个或者多个虚拟机属于某个安全组,而属于不同安全组的虚拟机之间的访问以及外网访问虚拟机,都需要通过安全组进行过滤。

安全组可以通过我们熟悉的iptables实现。

这些安全组规则都可以自动下发到每个在安全组里面的虚拟机上,从而控制一大批虚拟机的安全策略。

可以多加一个网桥,在这个网桥上配置 iptables 规则,将在用户在界面上配置的规则,放到这个网桥上。然后在每台机器上跑一个 Agent,将用户配置的安全组变成 iptables 规则,配置在这个网桥上。

3. 容器网络

3.1 容器网络中如何融入物理网络

和虚拟机很像!容器里面有张网卡,容器外有张网卡,容器外的网卡连到 docker0 网桥,通过这个网桥,容器直接实现相互访问。

在虚拟机场景下,有一个虚拟化软件,通过 TUN/TAP 设备虚拟一个网卡给虚拟机。

但是容器场景下并没有虚拟化软件,这该怎么办呢?在 Linux 下,可以创建一对 veth pair 的网卡,从一边发送包,另一边就能收到。

容器网络如果要访问外网,最简单的方式还是通过 NAT。

3.2 容器网络之Flannel

NAT 这种模式,在多个主机的场景下,是存在很大问题的。

在物理机 A 上的应用 A 看到的 IP 地址是容器 A 的,是 172.17.0.2。

在物理机 B 上的应用 B 看到的 IP 地址是容器 B 的,不巧也是 172.17.0.2。

这个时候,应用 A 要访问应用 B,当应用 A 从注册中心将应用 B 的 IP 地址读出来的时候,就彻底困惑了,这不是自己访问自己吗?

之前我们说虚拟机需要跨物理机互通,往往通过 Overlay 的方式。容器是不是也可以这样做呢?

Flannel 是跨节点容器网络方案之一,它提供的 Overlay 方案主要有两种方式,一种是 UDP 在用户态封装,一种是 VXLAN 在内核态封装,而 VXLAN 的性能更好一些。

3.3 容器网络之Calico

Calico 网络的大概思路,即不走 Overlay 网络,不引入另外的网络性能损耗,而是将转发全部用三层网络的路由转发来实现。

物理机化身为路由器,通过路由器上的路由规则,将包转发到目的地。在这个过程中,没有隧道封装解封装,仅仅是单纯的路由转发,性能会好很多。

Calico 的主要组件包括路由、iptables 的配置组件 Felix、路由广播组件 BGP Speaker,以及大规模场景下的 BGP Route Reflector。

4. 参考

《趣谈网络协议》 刘超

数据中心网络vs云网络vs容器网络相关推荐

  1. 《CCNA学习指南:数据中心(640-911)》——2.2 网络互联模型

    本节书摘来自异步社区<CCNA学习指南:数据中心(640-911)>一书中的第2章,第2.2节,作者: [美]Gary R. Wright(加里 R.赖特) , W. Richard St ...

  2. 传统数据中心穿上“云”外衣 任重而道远

    ZDNET网络频道 05月14日 综合消息:如今,云计算和大数据,以及物联网.移动互联正迅速发展,与此同时,传统数据中心的发展已经跟不上时代的步伐,因此,传统数据中心的建设向云化方向转变将是大势所趋, ...

  3. 浪潮在美发布InCloudRail超融合一体机,助力数据中心平滑上云

    美国当地时间2016年8月16日,在旧金山召开的英特尔IDF全球大会上,浪潮发布InCloud Rail超融合一体机,为企业数据中心提供简便.高效率和高可靠的融合架构解决方案.InCloud Rail ...

  4. 企业级网络架构—云平台高可用网络的修炼之道

    前言 当他睡眼惺忪.手拿红牛.嘴刁香烟迈着沉重的步伐从某网络核心机房走出来的时候,除了看门大爷简短问候之外,也只有刚刚过去的这个黑夜才真正懂得刚刚发生了什么,在外人眼里,这个夜晚再正常不过,和往常一样 ...

  5. 联想数据中心业务集团云转型MSP,让子弹再多飞一会儿

    ▼更多精彩推荐,请关注我们▼ "联想企业级混合云服务的定位,是成为云时代的整合服务商(Cloud MSP)."在2019年联想企业级混合云产品家族发布会上,当联想数据中心业务集团( ...

  6. 华南地区最大数据中心上线 阿里云河源数据中心正式开服

    2月18日,阿里云在官网宣布,河源数据中心正式对外提供服务.这是华南地区规模最大的绿色数据中心,可容纳超过30万台服务器,作为深圳地域的新可用区为华南地区上百万企业客户提供领先的云计算.人工智能.物联 ...

  7. 快速迁移数据中心:华为云数据库SQL Server实践案例技术解析

    1.   简介 企业或用户将数据中心部署在线下,采用独立软件提供商(Independent Software Vendor)软件进行管理.线下数据运维成本较高,故障容灾单一化,是目前遇到的瓶颈.采用云 ...

  8. 数据中心:全面云化的新一代互联网基础笔记

    一,数据中心基础 数据 是对事实观察的结果,是用于表示客观事物的未经加工的原始素材按类型可分为:定位的数据(如坐标), 定性的属性(如属性).定量的数据,定时的数据等 计算能力正在成为一种生产能力,而 ...

  9. 云数据中心网络遇到的问题_云数据中心面临安全问题,华为SDN解决方案有一个安全大脑...

    CNET科技资讯网 9月23日 北京消息(文/周雅):当越来越多的企业开始采用云服务,安全问题往往成为待考虑的问题.在传统IT环境中,企业默认的逻辑架构是可信的,数据在自己手里,系统部署在自己的数据中 ...

  10. 云数据中心网络安全技术

    云数据中心网络安全业务需求 云数据中心安全现状 云平台安全威胁逐年加剧. 云数据中心威胁主要来自于黑客攻击.恶意用户和用户误操作. 主要威胁有特权滥用.DDoS攻击.数据泄露和误操作等. 云数据中心网 ...

最新文章

  1. Nature:寻找记忆的痕迹
  2. What's preconnect.svc in 11g RAC?
  3. Transact_SQL小手册(各种sql语句大集合)
  4. centos7 ifconfig命令找不到_centos7+mysql+gunicorn+flask项目部署
  5. vba 跳出for循环_VBA简单入门08:For循环
  6. Visual Question Answering概述
  7. sqlserver日期dateadd及STUFF等应用
  8. 又一次Task.Wait引起的教训
  9. Leetcode 124.二叉树中的最大路径
  10. HTML页面使用vant控件,如何优雅的使用Vant组件库
  11. vue调用数组_vue数组的运用
  12. jdk8默认垃圾回收器_JVM系列之经典垃圾回收器(上篇)
  13. MySql access denied for user错误
  14. SQL Server 数据库原理与应用
  15. dede首页如何调用单页文档内容标签
  16. 批处理添加允许弹出临时窗口站点
  17. C# winform程序运行在XP
  18. 学生选课系统代码-1 项目说明
  19. Win11如何关闭UAC?
  20. android 动画进度控制,Android仿美团加载数据、小人奔跑进度动画对话框实现方法...

热门文章

  1. 服务器安装win7系统蓝屏,安装win7系统出现蓝屏| win7安装过程中蓝屏|安装win7系统时蓝屏...
  2. android标题白色_Android设置布局背景为白色的三种方法
  3. php怎么修改div自带属性吗,修改html 属性,css样式。
  4. Codeforces 52C
  5. 奶块显示正常登录服务器但进不去,奶块服务器流畅怎么进不进去quest; | 手游网游页游攻略大全...
  6. grpc 客户端的context 服务端获取不到_MLamp;DEV[10] | gRPC的应用
  7. python列表注解
  8. centos7 yum修改为国内源
  9. 解决to_hdf() 报错ImportError: Missing optional dependency ‘tables‘. Use pip or conda to install tables.
  10. embed 标签怎么嵌入pdf_联合Aspect-Sentiment主题嵌入的弱监督的情感分析(2020年10)