云计算进阶路上的大难关(二):网络虚拟化

发表于:2020-12-14 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:half ~summer    来源:CSDN

分享:
  一、虚拟化中网络的架构
  1、虚拟化中的网络流量
  在云计算和虚拟化中,数据中心的流量分为南北向流量和东西向流量。很容易理解,我们以网络架构图为参考,以路由器(不区分是物理路由器还是虚拟路由器)为分界点,经过路由器的流量为南北向流量,不经过路由器的流量为东西向流量。
  当外网访问IDC机房业务时,该流量为南北向流量;如果IDC机房内运行了员工的个人虚拟机,该虚拟机访问业务时,不需要经过路由器,同样是访问业务的流量,但该流量为东西向流量。
  随着云计算的发展,主要是由于东西向流量越来越多,以前采用的是核心层、汇聚层和接入层的架构,实践证明这种架构已经无法满足和适应云计算的部署。因此,三层的网络架构发展成了大二层架构,大二层可以很好地满足东西向流量较大的要求。另外,虚拟机也是构成网络的一部分,它们几乎都是通过网桥接入到网络中,为了更方便管理和配置,大多数情况下,我们会使用虚拟交换机,它是网桥的一种高级体现形式,一个虚拟机可以有多个虚拟网卡,通过虚拟网卡,虚拟机可以与一台虚拟交换机相连,也可以同时与多个虚拟交换机相连。
  2、网络基本概念
  (1)广播和单播概念
  广播会在整个广播域中扩散,同域内的所有网络设备都会接收到该广播,同时会检查这个广播数据包中的内容,如果发现广播中的接收方是自己,则会给发起方回一个单播的消息,如果发现接收方不是自己,则会将这个广播包丢弃。
  单播是指网络设备进行一对一的通信,如果一台设备进行消息的发送,另外一台只负责接收,叫做半双工,如果两台设备同时在进行发送和接收,叫做全双工。
  如果网络中充斥了太多广播包的话,在带宽一定的情况下,会造成单播的堵塞,反应到用户侧,用户就会感觉上网网页打不开,邮件发送不出去,或者在打游戏时老掉线。除了占用带宽外,广播还有一定的安全隐患。
  (2)路由和默认网关
  早期使用固定电话通讯,长途电话需要在拨号前加区号,需要查黄页或其它材料去找对应的区号,区号的作用是进行号码路由,让通话能够到达对应的区市,而用来查询区号的黄页就相当于是路由表。如果把广播域之间的通信看做为打长途电话的话,那么拨电话的人通过黄页找到对方的电话号码的方式就叫路由。
  默认网关的作用和默认路由是一样的,拿打电话举例,以前我们有个114查号台,如果不知道对方的电话号码,可以打114进行查号获取对方的电话号码,默认网关的作用与114类似,默认网关收到通信请求时,如果自己的路由表中存在目的地址的网段,则会替通讯的发起者进行路由的转发,如果自己的路由表中没有目的地址,它会给发起者返回一个目的地址不可达的消息。
  (3)VLAN
  VLAN(Virtual Local Area Network)是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。同一个VLAN内的主机间可以直接通信,而不同VLAN内的主机间不能直接通信,从而将广播报文限制在一个VLAN内。
  VLAN的好处:
  1 限制广播域,节省了带宽,提高网络处理能力;
  2 增强局域网的安全性,即一个VLAN内的用户不能与其它VLAN内的用户直接通信
  3 提高了网络的健壮性,如果网络故障,也只会在本VLAN内传递,其他VLAN不影响
  4 灵活构建虚拟工作组,用VLAN可以将不同的用户划分到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围
  VLAN的原理:VLAN是在传统的以太网数据帧中加入了4字节的802.1Q Tag,不同的VLAN就用这个标签来区分。
  在一个VLAN交换网络中,以太网帧有以下两种形式:
  有标记帧(tagged frame):加入了4字节802.1Q Tag的帧
  无标记帧(untagged frame):原始的、未加入4字节 802.1Q Tag的帧
  VLAN中有以下两种链路类型:
  接入链路(Access Link):用于连接用户主机和交换机的链路。通常情况下,主机并不需要知道自己属于哪个VLAN,主机硬件通常也无法识别带有VLAN标记的帧。因此,主机发送和接收的帧都是untagged帧。
  干道链路(Trunk Link):用于交换机间或交换机与路由器之间的连接。干道链路可以承载多个不同VLAN的数据,数据帧在干道链路传输时,干道链路两端的设备需要识别数据帧属于哪个VLAN,所以在干道链路上传输的帧都是Tagged帧。
  根据接口对VLAN帧的识别情况,可分为两类:
  Access接口:Access接口是交换机上用来连接用户主机的接口,它只能连接接入链路。仅允许唯一的VLAN ID 通过本接口,这个VLAN ID 与接口的缺省VLAN ID相同,Access接口发往对端设备的以太网帧永远是不带Tag标签的帧。
  Trunk接口:Trunk接口是交换机上用来与其它交换机连接的接口,它只能连接干道链路,允许多个VLAN的数据帧(带Tag标签)通过。
  每种类型的接口都可以配置一个缺省VLAN,对应的VLAN ID为PVID(Port Default VLAN ID)。接口类型不同,缺省VLAN的含义也有所不同。几乎所有交换机出厂时的默认VLAN都为1。
  数据帧处理方式如下:
  二、虚拟化中物理网络介绍
  在虚拟化中,承载业务的都是虚拟机,虚拟机运行在物理服务器内部,如何使虚拟机接入到网络中,首先要解决的是将物理服务器连接到网络中,在这个过程中,需要用到的设备有路由器、三层交换机、二层交换机以及服务器自身的网卡。
  1、TCP/IP四层模型
  路由工作在传输层(三层),VLAN工作在网络层(二层)。如果某台设备具备了路由功能,可以查看路由表,我们就把它当成三层设备,如果仅可以划分VLAN,就把它当成二层设备,比如Hub不能划分VLAN,只能起到分线器的作用,所以它是一个链路层(一层)设备。工作在传输层的设备有路由器和三层交换机,工作在网络层的设备一般是二层交换机,而物理服务器的网卡、连接网卡的网线以及光纤等线路则属于链路层的设备。
  Q:三层交换机和路由器是否可以互相取代呢?
  首先,交换机和路由器的作用不一样,交换机通过 ASIC芯片负责高速的数据交换,而路由器通过维护路由表进行不同网段之间的路由寻址,同时具备隔离广播域的特性。就算路由器具备了交换功能,交换具备了路由功能,那也只是附带功能,不能当主要用途来使用。
  第二,交换机主要适用于局域网,路由器一般适用于广域网。局域网的特点主要是数据交换
  频繁、网络接口单一、数量较大,对广域网来说,网络类型和接口类型众多,路由器的路由功能通常非常强大,不仅适用于同种协议的局域网间,更适用于不同协议的局域网与广域网间。它的优势在于选择最佳路由、负荷分担、链路备份及与其它网络进行路由信息的交换等等路由器所具有的功能。
  第三,三层交换机和路由器的性能不一样。路由器一般由基于微处理器的软件路由引擎执行数据包交换,而三层交换机通过硬件执行数据包交换。三层交换机在对第一个数据流进行路由后,会产生一个 MAC地址与IP地址的映射表,当同样的数据流再次通过时,将根据此表直接从二层通过而不会再次路由。
  三层交换机的路由查找是针对数据流的,它利用ASIC技术的缓存机制,可以很容易实现快速转发,大大节约成本。而路由器的转发采用最长匹配的方式,通常使用软件来实现,实现方式复杂,转发效率较低。 从整体性能上比较,三层交换机的性能要远优于路由器,非常适用于数据交换频繁的局域网;而路由器虽然路由功能非常强大,但它的数据包转发效率远低于三层交换机,更适用于不同网络类型但数据交换不是很频繁的互联,如局域网与互联网的互联。
  2、内部网络规划
  路由器解决了内部网络与互联网的通信问题,那么内部网络如何规划,最终目的是将物理服务器接入到网络中,目前最主流的两种服务器接入网络的方式分别是***ToR(Top of Rack,柜顶接入)和EoR(End of Row,列头接入)。
  ToR,顾名思义,就是将连接服务器接入网络的交换机放在机柜顶部,如果机柜中的服务器密度较高且流量较大,则会在每个机柜都放一个ToR交换机,如果密度和流量都一般,则会考虑几个机柜共用一个ToR交换机。ToR交换机下联服务器网口,上联汇聚或核心交换机,从而将物理服务器连接到网络。
  EoR全称叫End of Row,Row指的是“列”,EoR的布线方式与ToR不同,是在一列机柜中单独放置用来连接服务器接入网络的交换机,这个交换机也叫EoR交换机。虽然 EoR中的“E”指的是“End”,但很多情况下,为了减少服务器到交换机的布线长度,一般会将EoR交换机放在一列机柜的中间,而其它机柜会预留好网线配线架和光纤配线架,服务器的网口直接连接到配线架上,然后再跳接到EoR交换机上。
  ToR布线的缺点:每个服务器机柜中可部署的服务器数量是有限制的,所以可能导致机柜内交换机的接入端口利用率较低。如果几个服务器机柜共用1-2台接入交换机,虽然可解决交换机接入端口利用率低的问题,但这种方式就相当于是小型的EoR方式,增加了线缆管理和维护的工作。
  EoR布线方式的缺点:从服务器机柜到网络机柜的线缆需要提前布放好,包括每个机柜中有多少台服务器、每个服务器有多少个网口以及可能会有的网口类型等等,且距离网络机柜越远的服务器机柜,其布线线缆越长。同时,为了机房的整洁,线缆都需要捆扎好,一旦线缆数量与实际数量不匹配或线缆出现故障,就需要重新布线,因此线缆管理维护工作量大、灵活性差。
  3、内部网络流量的分类
  服务器接入到网络后,根据网络流量的用途来分类,一般会分为业务流量、管理流量和存储流量。
  业务流量和存储流量对用户来说比较重要,用户通过业务流量来访问所需的业务,如果业务数据没放在服务器本地,而是放在了专业的存储设备上,那么服务器访问存储设备时就会产生存储流量。
  管理流量主要是用户用来管理服务器、虚拟机及存储设备等时产生的流量。现在几乎每个物理设备都会单独配一个管理口,如果管理流量和业务流量分开,使用不同的物理线路及接口,这种方式叫带外管理(out-of-band),如果管理流量和业务流量使用同一物理通道,就叫带内管理(in-band)。
  4、二层,三层交换机的应用
  在云计算数据中心,设计网络时,会使用高端的三层交换机作为整个网络的核心,所有流量所对应网段的默认网关全部设置在上面,这意味着所有跨广播域相互访问的流量都会经过该交换机。这样做的原因有以下几点:
  1 高端三层交换机有很好的转发性能;
  2 高端三层交换机使用模块化设计,可保证自身的高容错能力和易扩展性(比如板卡热插拔);
  3 高端三层交换机可以提供多种接口密度的板卡,满足数据中心网络高性能、超大容量的要求。
  4 高端三层交换机除了可以提供基本的路由交换功能外,还支持其它更符合云计算要求的特性,比如大二层、堆叠以及虚拟化等。
  所有流量在接入核心交换机前,一般先要接入二层交换机,按照接入流量的类型,接入交换机可以分为管理交换机、存储交换机和业务交换机(这适用于超大流量的数据中心),如果只是一般流量的数据中心,可以使用同一个物理交换机并利用VLAN对不同流量进行逻辑隔离。
  5、LACP
  物理服务器通过自身的物理网卡连接到网络中,关于物理网卡,有一个很关键的知识点——端口(链路)聚合。端口聚合通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,增加链路带宽的目的,同时相互间的动态备份,可以有效提高链路的可靠性。
  链路聚合技术主要有以下三个优势:
  增加带宽,链路聚合接口的最大带宽可以达到各成员接口的带宽之和
  提高可靠性,当某条活动链路出现故障时,流量可以切换到其它可用的成员链路上
  负载分担,在一个链路聚合组内,可实现各成员活动链路间的负载分担
  根据是否启用LACP(Link Aggregation Control Protocol,即链路聚合控制协议),链路聚合分为手工负载分担模式和LACP模式:
  手工负载分担模式下,链路的创建、成员接口的添加由手工配置,不需要链路聚合控制协议的参与。该模式下所有活动链路都参与数据的转发,平均分担流量,因此称为负载分担模式。如果某条活动链路故障,链路聚合中的剩余活动链路会自动平均分担流量。
  为了能够提高链路的容错性及备份功能,保证成员链路的高可靠性,有了链路聚合控制协议LACP,LACP模式就是采用LACP的一种链路聚合模式。LACP为交换数据的设备提供了一种标准的协商方式,以供设备根据自身配置自动形成聚合链路并启动聚合链路来收发数据。形成聚合链路后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。
  三、虚拟化中的虚拟网络介绍
  1、虚拟网络的结构
  随着云计算和虚拟化的越来越普及,成为目前主流的IT技术,物理服务器不再是业务的承载体,现在,一台物理服务器内运行了多台虚拟机,它们会共享一根网线,这样一来这根网线就会承载多种流量,如何管理这些流量?
  另外,以前的交换机的由网络工程师负责,而服务器内部是由主机工程师负责,而如果牵扯到了虚拟交换机,因为运行在服务器内部,按照以往的划分应该是主机工程师负责的,这个时候网络工程师想管却管不到,所以,了解虚拟化中的网络结构是必要的。
  平时使用的虚拟化大多是这个架构,在个人或者小型的虚拟化中,虚拟机会以桥接或者NAT的方式与物理网卡绑定,而在企业级的大规模场景下,虚拟机都是通过虚拟交换机连接到物理网络的。
  网桥的功能:
  1 Mac地址学习,每发送一个数据包,它都会关心对应源MAC地址的数据包是从自己的哪个端口来的,通过学习建立地址-端口的对照表(CAM表)。
  2 报文转发:每发送一个数据包,网桥都会提取它的目的MAC地址,再从地址-端口对照表(CAM表)中查找由哪个端口把数据包发送出去。
  有了虚拟化,每个虚拟机都会有一个虚拟网卡,Linux操作系统会在用户态生成一个TAP设备,同时,在内核态生成一个tun/tap的设备驱动和虚拟网卡驱动。虚拟机发出的数据包经过用户态的tun/tap字符设备文件,然后经过内核态的tun/tap设备驱动和虚拟网卡驱动,发给TCP/IP协议栈,再转发到用户态的虚拟网卡tap,tap此时直接连在网桥Bridge0上,上图中的eth0和eth1就会变成虚拟机的网卡tap。
  VM——tun/tap字符设备文件——tun/tap设备驱动——tun/tap虚拟网卡驱动——TCP/IP协议栈——虚拟网卡tap——网桥Bridge0。
  如果仅使用网桥,虚拟机与外部通讯时有两种方式——桥接和NAT。简单地说,如果是桥接(使用相同的IP地址配置),网桥就相当于是一个交换机,虚拟网卡连接的是交换机的一个端口;如果是NAT(不同IP地址配置),网桥就相当于是一个路由器,虚拟网卡连接的是路由器的一个端口。
  NAT有以下优势:
  1 当物理网桥的网段地址不足时,使用一个新的网段来弥补这个缺陷;
  2 隐藏源地址。由于虚拟机在访问外部网络时,地址在NAT网关处进行了转换,所以外部网络是无法直接看到要访问的内部虚拟机的IP的,在某种程度可以保护内部虚拟机的安全;
  3 负载均衡。NAT有重定向的作用,多个相同应用的虚拟机主备部署后,可以通过NAT转换成同一个地址与外部通信,然后再通过负载均衡的软件,进行业务访问的负载均衡。
  2、虚拟交换机产品
  桥接和NAT适用于个人及小规模场景,使用网桥无法查看虚拟网卡的状态,也无法监控经过虚拟网卡的流量,同时,桥接仅支持在GRE隧道,功能受限。另外,目前SDN(Software Define Network,即软件定义网络)非常普及,而网桥却不支持SDN,因此在大规模场景下,我们会使用虚拟交换机来实现虚拟机间的网络通信。
  以开源的Open vSwitch为例介绍虚拟交换机
  Open vSwitch(以下简写为OVS)是一款开源的、高质量的、支持多层协议的虚拟交换机,使用开源 Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。其目的是使大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag), Open vSwitch支持多种Linux虚拟化技术,比如Xen和KVM等等。
  OVS的数据包转发流程:
  虚拟机产生的数据包先发送到虚拟网卡eth0中;
  数据包会首先发送到tun/tap设备上,就是图中的vnet;
  然后再由vnet发送到网桥上
  最后经过网桥设备转发到同样在网桥上桥接的物理机网卡eth1上,并由eth1将该数据包转发到物理的二层交换机上。
  四、华为虚拟化产品的网络特性
  虚拟交换机分两种类型,一种是普通虚拟交换机,一种是分布式虚拟交换机。
  普通虚拟交换机只运行在一台单独的物理主机上,所有与网络相关的配置只适用于此物理服务器上的虚拟机;
  分布式虚拟交换机分布在不同的物理主机上,通过虚拟化管理工具,可以对分布式虚拟交换机进行统一地配置。虚拟机能够进行热迁移的条件之一就是要有分布式虚拟交换机。
  华为虚拟化产品使用的虚拟交换机为分布式虚拟交换机,以华为FusionCompute为例来介绍分布式虚拟交换机。
  1、华为虚拟化产品中的网络方案
  华为虚拟交换提供集中的虚拟交换和管理功能。集中管理提供统一的Portal,进行配置管理,从而简化用户的管理。 通过分布在各物理服务器的虚拟交换机,提供虚拟机的二层通信、隔离、QoS能力。
  分布式交换机模型基本特征:
  1) 虚拟化管理员可以配置多个分布式交换机,每个分布式交换机可以覆盖集群中的多个CNA节点;
  2) 每个分布式交换机具有多个分布式虚拟端口VSP,每个VSP具有各自的属性(速率,统计),为了管理方便采用端口组Port Group来管理具有相同属性的一组端口,相同端口组的VLAN相同;
  3) 虚拟化管理员或业务系统(例如VDI/IDC)可选择管理/存储/业务使用的不同物理接口;每个分布式交换机可以配置一个UpLink端口或者一个Uplink端口聚合组,用于VM对外的通信。Uplink端口聚合组可以包含多个物理端口,端口聚合组可以配置负载均衡策略;
  4) 每个VM可以具有多个vNIC接口,vNIC可以与交换机的VSP一一对接;
  5) 虚拟化管理员或业务系统可根据业务需求,在一个集群中选择允许进行2层迁移的服务器创建虚拟二层网络,设置该网络使用的VLAN信息;
  端口组:端口组是网络属性相同的一组端口的集合。管理员可以通过配置端口组属性(带宽QOS、2层安全属性、VLAN等)来简化对虚拟机端口属性的设置。设置端口组属性,不影响虚拟机正常工作。
  上行链路: 分布式交换机关联的服务器物理网口,管理员可以查询上行链路的名称、速率、模式、状态等信息。
  上行链路聚合: 分布式交换机关联的服务器绑定网口,绑定网口可以包含多个物理网口,这些物理网口可以配置主备或负载均衡策略。
  华为分布式虚拟交换机的特短:
  1) 集中的管理:统一的Portal和集中的管理,简化用户的管理和配置;
  2) 开源Open vSwitch:集成开源Open vSwitch,充分利用和继承了开源社区虚拟交换的能力;
  3) 提供丰富的虚拟交换二层特性,包括交换、QoS、安全隔离等。
  2、分布式交换机流量走向描述
  (1)虚拟机运行在相同主机,但是端口组不同
  虚拟交换机本质是一台二层交换机,端口组里有一个很重要的参数叫VLAN ID,如果两个虚拟机不在同一端口组,就代表它们不在同一VLAN,所以无法通过广播找到对方。一般情况下,属于不同VLAN的虚拟机,我们会给它配不同网段的IP 地址,所以,如果它们之间需要通信就需要使用三层设备,比如三层交换机或路由器,而在华为虚拟化产品FusionCompute架构中,三层功能只能由物理的三层设备提供,因此,这两台虚拟机的访问流量需要从主机内部传出到物理的接入交换机,转发到三层设备经过路由后再进入到主机内部,才能完成通信。
  (2)虚拟机运行在相同主机,且端口组相同
  属于同一端口组,则虚拟机属于同一广播域,而虚拟交换机支持广播。所以,如果是同主机相同端口组的虚拟机之间互相通信,可以直接通过虚拟交换机完成,通信的流量不需要传出到物理网络中。
  (3)虚拟机运行在不同主机,但端口组相同
  虽然虚拟机属于同一端口组,可以通过广播找到彼此,但是不同的物理服务器需要使用物理交换机才能接入到网络中,因此,如果虚拟机使用相同端口组,但是运行在不同物理服务器时,流量需要通过物理服务器的网口传出到物理交换机上,然后才能完成通信。与不同物理服务器不同端口组不一样,此时两台虚拟机之间可以不经过三层设备即可正常通信。
  3、安全组
  用户根据虚拟机的安全需求创建安全组,每个安全组可以设定一组访问规则。当虚拟机加入安全组后,即受到该访问规则组的保护。用户通过在创建虚拟机时选择要加入的安全组来对虚拟机进行安全隔离和访问控制。
  安全组是一个逻辑上的分组,这个分组是由同一个地域内具有相同安全保护需求并相互信任的虚拟机组成。位于同一个安全组的所有虚拟机网卡都将使用该安全组规则进行网络通信。每块虚拟机网卡只能加入一个安全组中。
  安全组的作用与防火墙类似,在功能上可以参考防火墙,都是使用iptables的包过滤来实现安全控制的。
  4、虚拟交换模式
  华为虚拟交换机提供三种虚拟交换模式:1)普通模式;2)SR-IOV直通模式;3)用户态交换模式。
  (1)普通交换
  普通模式下,虚拟机有前后端两个虚拟网卡设备,其中前端网卡连接在虚拟交换机的虚拟端口上。虚拟机的网络数据包通过环形缓冲区和事件通道在前后端网卡之间传输,并最终通过后端网卡连接的虚拟交换机实现转发。
  (2)SR-IOV直通
  SR-IOV(Single Root I/O Virtualization)技术是Intel在2007年提出的网络I/O虚拟化技术,目前已是PCI-SIG的规范。简单来说,支持SR-IOV的物理网卡可以虚拟出多个虚拟网卡以供虚拟机使用,对于虚拟机来说就像是使用一块单独的物理网卡一样,相比软件虚拟化提升了网络I/O性能,相对于硬件直通(PCI Passthrough)又减少了硬件网卡数量上的需求。
  (3)用户态交换
  通过对虚拟端口加载用户态驱动,在vswitchd中启动线程接管内核态收发包功能,从网卡收到的数据包直接在vswitchd的线程中接收,接收到数据包后,查询vswitchd中的精确流表匹配,然后执行openflow的动作和指令,把数据从指定端口发送出去。优势在于使用DPDK技术提升了端口I/O性能。另外,收发包和基于openflow的数据转发都在用户态完成,减少了内核态与用户态间切换带来的开销,带来网络I/O性能的提升,相较于SR-IOV技术,支持热迁移、热添加网卡等更多高级特性。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号