【课程笔记】华为 HCIE-Cloud Computing 云计算03:华为云Stack网络架构及流量模型_hcs流量模型
华为云Stack网络架构及流量模型
目录
华为云Stack网络架构及流量模型
一、VXLAN简介
二、华为云Stack节点内部网络结构
一、VXLAN简介
(1)HCS网络流量概述:传统数据中心的网络一般来说都是以三层架构作为主基准的,比如数通中经常基础性使用到的接入层、汇聚层、核心层,三层网络架构,但是这种架构在云上使用实际上是比较有难度的,因为传统架构在传输云流量的时候,延迟比较高,会造成用户体验差,另外云内部本身就有虚拟网络架构,通过OpenSwitch、OVS、SDC等方式进行实现,所以就会造成云架构内部的网络接入物理网络时,配置比较困难,对接也比较有难的
①所以为了能够提升转发效率,降低转发延迟,同时减少配置难度,我们需要将传统的三层网络架构,更新为大二层网络架构
-
大二层网络架构出现的一个根本原因除了以上的性能问题之外,实际上还有两个很重要的无法解决的核心因素,分别是管理困难,跨架构、跨设备的网络通信
②在云架构中,当用户拥有多个云资源的时候,我们是无法保证用户一定是资源来自于同一个服务器,这些资源可能来自于机房的任意一台设备。在物理上,这些资源是有隔离性的,通信需要依赖多台网络设备,但是在逻辑上,这些资源实际上是接入到了一个虚拟网络中的。比如2台ECS,可能是源自于2台物理服务器的,中间需要经历若干台设备的转发才能进行通信,但是在逻辑上,这两台设备是接入到一台交换机的,他们可以直接通过交换机进行通信,不需要三层转发
-
在这种跨物理设备的情况下,我们需要做到在逻辑上让相关的资源是直连的。一般情况下都是使用代理软件(如VPN)去进行实现,但是在云网络中,这种情况是绝对不合理的,因为用户的数量很多,逻辑子网的数量很多,我们不可能创建和管理如此多的子网VPN进行跨无语架构的联通。而且用户可以自有的创建逻辑子网,这就导致当用户创建的逻辑子网的时候,我们就需要创建VPN,用户删除,VPN删除,同时用户的自有分配到哪个设备上,这个设备就要和其他的设备建立VPN连接,这个连接是指数级的。所以采用三层架构的网络第一无法解决多层网络的问题,第二无法解决跨物理网络的逻辑网络管理
③基于这些问题,我们必须要选择一种新的技术去实现云的网络需求,这种需求的实现手段,就是基于大二层网络的VXLAN架构
(2)大二层网络最早出现就是为了解决网络中的复杂架构问题。由于早期数据中心里面有非常多的设备,这些设备都需要入网接入,所以采用三层网络架构有时候都不一定够用。有时候会有二层或者三层的汇聚层进行接口汇聚和流量汇聚,这就导致整个架构非常的复杂难以管理。所以人们提出使用大二层架构进行方案解决,大二层方案主要解决了以下几个问题
①三层网络,一般来说网关都是放在核心的,这就代表所有的流量如果跨网访问,首先都会转发到核心,然后由核心进行下一步转发,但是DC中,大量的流量实际上都不是访问的公网,还有很多流量都是内网之间互访的,采用三层架构就会很浪费核心的网络交换资源
②在交换网络中我们经常会使用环路或者是多线连接来进行网络安全的冗余度保证。但是受限于网络转发的限制,同时为了避免广播风暴,我们通过STP协议主动地在逻辑上断开了一些端口的连接,这就导致冗余线缆的连接是很浪费带宽的
为了解决以上的两个问题,人们提出了使用堆叠技术,堆叠技术就是通过istack线缆连接两台物理设备,让他们在逻辑上形成一台设备的方式提升整体转发性能同时提升接口带宽,但是堆叠技术能够提升的性能是非常有限的,在云架构下的海量服务器和流量转发的需求下,堆叠技术实际上是很难满足的
(3)VXLAN(虚拟扩展本地局域网),该技术的内涵实际上和名字有很大的关联,网络扩展使用的技术核心就是隧道。VXLAN的实现就是基于隧道技术实现的。从某种角度来讲,VXLAN实际上和VPN技术有相似性
通过隧道技术我们可以在传统的路由上叠加一个二层的虚拟网络,实现VXLAN内部的互通,VXLAN使用的方式是MAC in UDP的封装方法,也就是在IP报文的基础上,封装以太网报文。受到IP网络理论上无限可达的特性,VXLAN可以进行理论上的无线扩展,虚拟机之间的通信不会受到任何网络架构的限制
(4)VXLAN的优势
①VXLAN降低了MAC地址表的规格,正常情况下,设备在进行流量转发的时候,会记录MAC地址到自身的地址表,数据在转发的过程中,都会记录发送者,即源MAC地址到本地。用于进行后续的通信,但是在大型网络架构中,设备数量过多,会导致转发的网络设备的MAC地址表过大,造成查询延迟和转发延迟,而通过VXLAN的封装,我们可以隐藏MAC地址,因为发送者的MAC地址是被封装在UDP中的,所以对转发的网络设备实际上是不可见的。这就可以减少网络设备对MAC地址的记录,降低查询延迟
②使用VXLAN可以将物理网络中的资源进行隔离,通过VNI,VXLAN Network Identifiler网络标识,可以实现海量网络的隔离需求,满足用户的实际使用。通过VXLAN的VNI,我们可以将一个物理设备上的云资源分配不同的VNI,不同VNI的设备之间是无法通信的,这样做有一个好处就是资源可以得到真实的隔离性,而且即使不同的用户使用的是相同的网络,也不会出现冲突,只要VNI不同即可
③通过VXLAN,我们将跨物理资源的逻辑资源,在逻辑上直连起来了,这样当我们需要对这些逻辑资源做操作的时候,就可以按照内网的操作方法进行操作,极大的减少了操作难度
Spine-leaf架构实际上是源自于DC中的一个核心概念,主要是用于建设基于VXLAN的大二层网络使用的。其中主题的组成部分如下:
-
spine:骨干架构,骨干节点是整个底层网络的核心节点,主要用于高速转发,通过spine我们可以连接到各个leaf节点,可以理解为是核心层。受限于骨干节点的海量数据转发,spine架构的设备必须选择高性能设备,如华为园区网交换机CE系列,尤其是CE6800系列
-
leaf:叶节点,作为终端接入的设备,功能等同于三层网络架构下的接入层。一般来说由满足用户带宽需求的设备构成,如华为S系列交换机,其中比较典型的就是S5700系列
-
Fabric:由spine交换机和leaf交换机构成的物理网络拓扑,也就是我们说的底层物理网络
-
service leaf:服务叶节点,主要是提供防火墙、负载均衡功能,这些功能可以满足OSI七层网络架构模型中的L4-L7级流量转发的需求(L1:物理层,L2:数据链路层,L3:网络层,L4:传输层,L5:会话层,L6:表示层,L7:应用层),这里所指的满足L4-L7的转发,实际上就是指Leaf节点能够识别到L4-L7级的流量,能够对这些高层报文进行拆解和读取,一般用于VXLAN网络中进行数据的筛选和控制,如防火墙的安全控制,负载均衡设备的LVS转发。目前,Service Leaf设备一般选配华为防火墙USG6500系列,负载均衡设备一般会选配深信服、F5、启明星辰、A10
-
Server Leaf:服务器叶节点,主要是提供虚拟资源入网的功能,比如华为的ECS、BMS、CCE等相关服务的接入网络
-
Border Leaf:主要是提供跨数据中心级别的网络通信的转发,毕竟数据最终还是要到达公网,或者是到达分支站点,那么跨物理网络的连接,就需要通过Border Leaf去进行实现
(5)VXLAN的工作原理
NVE:网络虚拟边缘,通过NVE我们可以实现将传输过程中所有的物理设备无视的操作。也就是我们从源到目标端,除了源的接入和目标的接入,中间所有的设备在逻辑上都是不存在的,我们通过隧道打通两个边界,让虚拟机达到在一个子网内的效果
NVE的核心功能就是在物理架构上实现了虚拟网络,可以说VXLAN的底层工作基本都是由NVE进行的控制,转发网络的架构也就是由NVE进行的隐藏。也就是说,从NVE开始,到对端的NVE,中间的网络都是被屏蔽的
相较于NVE来说,VTEP实际上可以被理解为是一个逻辑的概念,或者说是一个配置级别的概念,通过VTEP我们进行封装和解封装的操作,VTEP是NVE的核心,即NVE实现大二层虚拟网就是通过VTEP实现的,NVE代表的是一个物理化的概念,而VTEP是一个逻辑上的概念,VTEP一般来说是由一个本地环回接口的IP地址组成的。NVE在转发VXLAN的流量的时候,就不再以底层的IP地址作为通信的源和目标IP,而是以VTEP的IP地址作为源端和目标端的
VTEP为什么会选择配置在LoopBack接口呢?因为LoopBack接口是本地环回接口,这个接口是设备的一个逻辑接口,它的好处就是稳定,不会由于任何一个物理接口的损坏而下线,仅当设备本身出现了物理损坏的时候,LoopBack接口才会down掉。正是由于这种接口类型的稳定性,我们选择VTEP配置在这里。但是从配置角度上来说,VTEP配置在物理接口上也不是不可行的,只是从稳定性上来说,非常的不建议
①VNI:VXLAN网络标识,通过VNI可以区分不同的VXLAN的网段,不同VNI的资源之间无法直接通信,也正是因为这种特性,在云中,我们可以给每个用户的VPC分配一个全局唯一的VNI,这样做即使不同用户使用的相同IP,但是通过VNI的屏蔽,我们仍然可以保证他们的内部能够转发和正常使用的
②BD:Bridge Domain,实际上个人任务应该称之为叫做BrodeCast Domain广播域,每个被VNI的用户,其资源在进行通信的时候会有一个传递的范围,这个范围就称为BD,也就是说,VXLAN中相关的虚拟资源在发送一个广播包的时候,这个包所能传递的最大问题
NVE是一种角色,只要成为了边界设备,就是NVE,NVE可以承载多个VNI的流量,也可以被不同的BD划入
二层VXLAN:正常情况下,一般来说设备之间的交互都是已通过二层转发就可以实现的,设备和资源之间的访问,在VXLAN的前提下,可以直接在Leaf或者是Spine上实现。这时候,我们实际上流量在逻辑网络中看到是没有经过三层转发的,这时候进行数据转发的设备就叫做二层网格,二层网格主要是用于VNI子网内部通信,但是如果说某个资源需要进行跨网络的转发,也就是在逻辑网络的层面,也需要进行跨网转发的时候,这种情况下就需要用到三层网关了,三层网格一般是比Spine和leaf级别更高的核心交换机,核心的交换机可以实现跨网络的海量数据转发,这种设备时逻辑层实现三层转发的核心
-
二层网关一般就是NVE
-
三层网关一般是Border Leaf,三层网关
VBDIF就是三层网关的核心,三层网关进行转发的时候,需要使用VBDIF进行通信,同样不是使用底层的物理网络。VBDIF的地址是可以在底层物理网络通信的,也可以在VXLAN网络中通信。只是说在底层网络中,VBDIF就是普通的转发IP,到VXLAN中VBDIF就是BD的边界,也就是说VBDIF隔离了BD域
(6)VXLAN总结
VXLAN:虚拟扩展本地局域网,通过隧道的形式,将物理上有隔离的资源,在逻辑上连通起来,使其二层互通(组件虚拟网络的技术核心)
①物理网络:指的是构成VXLAN连接的基础IP网络
②逻辑网络:指的是通过VXLAN构建的虚拟网络
③NVE:网络虚拟边缘,资源连接时,接入的设备角色就是NVE,NVE负责将中间的链路进行屏蔽,使两个逻辑资源在虚拟网络上二层互通
④VTEP:VXLAN隧道端点,本质是一个配置在LoopBack本地环回接口的IP地址,VXLAN的NVE进行通信的时候,就依据VTEP的IP进行转发(二层)
⑤VNI:VXLAN网络表示,区分不同的VXLAN的标识,一般来说一个子网或者是云中的一个用户独享一个VNI,VNI一共是24位,支持16M个VXLAN子网。不同子网不能通信,VNI是构成云VPC虚拟私有云的关键技术
⑥BD:一个VXLAN中某个VNI的网络在发送广播的时候所能传输的最大的距离,就是BD,Bridge Domain,也可以被理解Broadcast Domain。每个VNI都有自己独立的BD,互不冲突,具有不同的VNI的BD不完全相同
⑦二层网关:数据进行二层通信的时候,即VNI内部通信的时候,转发的设备就是二层网关,一般来说二层网关就是NVE
⑧三层网关,数据需要跨VNI的通信的时候,或者是数据需要访问VXLAN之外的网络的时候,就需要三层网关设备进行数据转发
⑨VBDIF:三层网关通信的时候,就需要NAT的地址转换,转换的地址就是VBDIF。通过VBDIF接口将VNI内部的子网IP转换为VBDIF的接口IP进行对外访问
Spine-Leaf架构(组件物理网络的技术核心,是设备的角色)
①spine:骨干节点,负责数据转发
②leaf:叶节点,负责设备接入
③Fabric:物理网络拓扑
④service Leaf:提供OSI模型高层的数据读取功能的设备
⑤server leaf:提供服务器资源接入的设备
⑥Border leaf:负责三层转发的设备,一般是沟通数据中心内外的流量转发
(7)DC网络架构
Spine-Leaf架构(物理网络)
-
Fabric:物理网络拓扑
-
Spine:骨干节点,负责数据转发
-
Leaf:叶节点,负责设备接入
-
Service Leaf:提供OSI模型高层的数据读取功能的设备
-
Server Leaf:提供服务器资源接入的设备
-
Border Leaf:负责沟通数据中心内外的三层流量转发
-
-
VXLAN(逻辑网络)
①NVE:网络虚拟边缘,资源接入VXLAN的设备
②NTEP:VXLAN隧道端点,本质是IP地址
③VNI:VXLAN网络标识,区分不同的用户和网络
④BD:Bridge Domain,意义同广播域,代表VXLAN传播的最大范围
⑤二层网关:VNI子网内部通信连接的设备
⑥三层网关:跨VNI三层通信连接的设备
⑦VBDIF:跨VNI通信NAT转换的IP地址
VXLAN(逻辑网络)-分区> VNI;NVE -搭载> NTEP;VNI -形成> BD;VNI -同VNI转发依赖> 二层网关;VNI -跨VNI转发依赖> 三层网关;三层网关 -使用进行转发> VBDIF
(8)传统网络封装
在OSI模型中,我们以上三层和下四层作为分界点,上三层分别是应用层、表示层、会话层,应用层是调用相关的服务的,比如浏览器会调用http服务,比如下载器,会调用ftp或者是tftp服务。通过请求应用层端口下发,发送到表示层,表示层会对数据进行加密和格式化。数据被调整位统一格式之后,接下来就会到建立会话的阶段,比如常见的微信电话,就会建立一个持久会话用于通信
-
在上三层我们统称位应用数据处理阶段,数据在这个阶段还是属于数据范畴
下四层首先起始于传输层,传输层主要是负责对端口进行控制的,同时防火墙等安全策略的实现都是在传输层解决的,传输层会记录上层应用的端口号,端口好一共65535个,其中1-1024是已知端口号,也就是被固定分配了的,1025之后就是未知端口号,是分配给app用的,比如经典的酷狗音乐,端口号就是8000。传输层会在上层数据的基础上添加一个报头,用于标识信息使用
-
数据在传输层之后,就会成为\"载荷\"
-
下一步会被传输到网络层,通信的IP地址会被封装到网络层报头
-
添加完成IP报头之后,下一步数据会被传输到数据链路层,在这层会被添加一个MAC头部,同时添加一个FCS(循环冗余校验)尾部,用于对端在收到数据的时候,进行反向哈希计算,确定该数据包是否被篡改过
-
最终数据会被发送到物理层,信号会以高低电平的形式传输到外部
(9)VXLAN实际上就是在传统的OSI的封装基础之上,添加新的头部。也就是说,传统的数据封装,会封装应用层——数据链路层中间6个层级。在原始封装准备转换为电子信号之前,添加VXLAN头部,VXLAN的头部包含了
①VXLAN FLAGS,VXLAN标识,固定00001000(0x08)
②保留字段24bit,一般是用于厂商自定义用的
③VNI:VXLAN编码,24bit
④保留字段:8bit,厂商自定义
所以VXLAN的头部实际上就是简单的VXLAN标记和VXLAN ID
已知内部是封装好的原始数据,经过VXLAN头部的隐藏,设备在读取的时候,就会认为原始数据是上层数据。交互机就会在VXLAN头部前,加入逻辑网络的寻址信息
二、华为云Stack节点内部网络结构
(1)计算节点
①Router:一个VPC对应一个Router,主要负责VPC网络三层转发
②Network:Network定义一个二层网络,一个Router可以持多个Network
③Subnet:Subnet是Network中的一组IP资源,不支持Network下面挂IPV4或IPv6多个subnet
④Port:虚拟网络的接入点,Por上会分配IP和MAC,作为对应云资源在Subnet中的标识
⑤vpc-namespace:主要负责二层转发和NAT处理,计算节点上有多个vpc namespace
⑥tap-xxx:Linux虚拟Port,就是vm对应的网口,有VM的私网ip和mac
⑦qbr-xxx:Linux网桥,利用iptables实现安全组过滤和分布式防火墙
⑧ply-xxx:ply网桥负责地址过滤,主要是实现过滤非本机MAC的单播报文
⑨br-int:实现VM进出流量的VLAN tag和untag,并完成子网内的部分二层转发功能
⑩br-router:qr口是subnet的网关端口,qr口的IP地址为subnet的网关地址
⑪br-tun:完成VLAN ID和VNI的转换以及隧道报文的封装和解封装,建立不同节点间的大二层互联
⑫brcps:是连接到trunk口的网桥,负责VLAN转发时计算节点内外的VLAN交换,brcps在物理上体现为phvsnet
(2)网络节点
跨VPC访问或者是公网访问才会用ENAT
VPC内部跨子网互访,或者是混合云线上线下互访(没有地址冲突)可以用vRouter