云计算核心技术之云网络技术

一、云网络技术

1.1、专有网络VPC服务

专有/私有网络VPC(Virtual Private Cloud)是逻辑隔离的云上虚拟网络空间,通过网络隧道技术实现云端多租户/多网络隔离,为云服务器或云数据库等实例提如下网络相关的服务。VPC的逻辑架构如下图所示:

|--------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 专有网络VPC提供了三个功能【网络功能】【网络连接】【网络安全性】: |||
| 序号 | VPC的功能 | 说明 |
| 1 | 网络功能 | 创建VPC其实是从三个私有的网段【192.168.0.0】【172.16.0.0】【10.0.0.0】中去选择合适的一个网段;然后根据这三个网段去创建子网,创建实例时会自动分配网卡和相关IP地址。 |
| 2 | 网络连接 | 同一个VPC内网是互联互通的,不同的VPC默认是隔离的,若要实现与VPC外部通信时可以设置路由表与对应的连接方案(如:通过公网IP、NET网关、负载均衡去连接互联网;通过专线或VPN去连接企业本地的IDC)通过VPC这种互联技术,可以实现跨账号、跨VPC的互联(如:我们经常使用的阿里云的云企业网、腾讯云的对等连接等)。 |
| 3 | 网络的安全性 | 即VPC提供了【网络安全组】【网络访问控制列表】来保证网络的安全,通过四元组(源IP、目标IP、协议、端口、入站出站、允许拒绝)的配置来限制云网络的访问环境。【安全组】可以保证实例的安全;【网络访问控制列表】可以保证子网的安全。 |
[VPC的三个功能]

|--------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 有了这个VPC技术之后可以实现各种网络的应用,常见的网络技术有【路由表技术】【内部专线技术】【专线网关】【VPN网关】【NET网关】【负载均衡】【弹性IP】 |||
| 序号 | 使用VPC技术的应用 | 说明 |
| 1 | 路由表技术 | 对应传统网络的【核心交换机】或【路由器】可以实现不同子网之间的内网互通,多路由表支持是为了满足传统网络(如:PDR、VRF等)路由隔离的需求,同时又可以规划出公私网的出口路由,这样可以避免公网的恶意主动攻击。 |
| 2 | 内部专线技术 | 如我们组建多个机房数据中心,通常需要多条专线将其互联起来,采购复杂的BGP路由协议,完善链路故障切换等操作;公有云提供对等连接,可以快速的将VPC建立起内网连接(支持网络之间、网络内、也支持不同账号之间的对等连接)可以让我们在短短几分钟之内实现内部专线的建立,而且我们只需要看到逻辑层是一条对等的链路,底层为公有云的一个冗余链路,我们不需要关注复杂的路由协议,以及选路的一个策略,这样可以让网络运维变得更加简单和高效。 |
| 3 | 专线网关 | 用于传统IDC、办公网对接的专线设备,用户可以自己去购买链路服务提供商的专线实现混合云互联,满足大量数据传输,低延迟的要求;也可以购买云链路服务商的专线通道,通常满足常规宽带的混合云互联网厂商接入,实现多点的POP点接入,以实现双链路、双POP点高可用接入等。 |
| 4 | VPN网关 | 主要应用于与传统的IDC、办公网的Internet的VPN互联,可以快速完成混合云的组网,既节省了专线施工周期,也也节省了成本。 |
| 5 | NET网关 | 主要应用于VPC的内部服务器访问公网,隐藏自身IP,避免公网遭受恶意的黑客攻击,NET网关可以是云厂商提供的硬件设备,也可以是自己通过VM搭建的软件NET设备,但是就可靠性与吞吐量来说硬件设备是更胜一筹的。 |
| 6 | 负载均衡 | 通常在传统的IDC中我们使用F5、A10、Nginx等硬件或软件来提供对外公网服务,同时保证了内部服务器可以稳定的对外提供服务;传统的负载均衡器在通常情况下是需要二次开发,实现业务的自主优化,匹配负载均衡策略等;而公有云提供的LB是基于每个业务自身的LB,既支持四层负载均衡,也支持七层负载均衡,每个LB由业务自行优化和配置,这种方式降低了运维的成本以及复杂度。 |
| 7 | 弹性IP | 数据中心流入方向以负载均衡为主,流出方向以防火墙、NET实现,如果在机房内部多个业务共用一段出口IP,会导致与第三方互联互通的时候出现无法区分源IP,从而带来安全隐患。而弹性IP则可以为每个虚拟机提供固定的公网IP,让服务器出口不集中在某一个NET设备上,那么这样地址、宽带、安全都是可以实现自主的配置和通信(即:弹性IP对我们使用网络来说可以更加的灵活和高效)。 |
[使用VPC技术的七种网络应用]

1.2、专有网络VPC系统架构

VPC的实现采用了SDN、 NFV,以及Overlay隧道技术,通过三个重要组件功能实现自动化的网络配置管理与调度转发功能。 VPC系统架构如下图所示:

1.3、云物理网络架构

传统网络架构分为三层【接入层】【汇聚层】【核心层】。云网络采用更加扁平高效、易于收敛与扩展的二层架构------叶脊(spine-leaf)分布式网络架构。

在云网络中, Spine SW为核心交换机; Leaf SW为接入层TOR交换机,与传统网络二层接入层SW不同的是Leaf SW具备处理三层处理功能。 Spine SW、 Leaf SW之间采用eBGP协议通信,构成一个Fabric网络。每台服务器两条链路上行到Leaf SW(两两堆叠),然后再多链路上行到Spine SW,由此保障高带宽、高可靠和无阻塞的网络。

1.4、负载均衡

负载均衡是对多台云服务器进行流量分发的负载均衡服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。实现架构如下图所示:

二、云网络的关键技术与容器云网络技术

2.1、云网络关键技术

云网络中使用了三种关键网络技术【SDN】【NFV】 以及【网络隧道】技术。 通过这些机制可以实现灵活高效的集中式网络控制与管理,通过普通硬件代替昂贵的专用硬件降低网络设备的成本,同时将网络边界从物理交换机延伸到部署服务器上虚拟化交换机,更好地满足云计算环境的网络要求。

|--------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 云网络关键技术 | 说明 |
| 1 | 软件定义网络SDN | SDN主要由网络用户和设备商发起的,相关标准组织有:ONF、ODL;SDN核心的控制面与转发而分离,通过集中式的控制器、自动化配置、管控、解决了传统网络中,因管控与转发绑定带来的各种管理与运维挑战。 SDN架构的上层应用通过北向接口,调用控制面板SDN控制器,以使用相关的网络服务或配置策略;然后通过控制器南向接口,向转发面的物理或虚拟网络设备下发配置,最后网络设备基于下发的配置执行转发或处理动作,并向上去返回状态与操作结果。 |
| 2 | 网络功能虚拟化NFV | NFV主要是由电信运营商发起的,标准的组织是:ETSI,最初的目的是为了降低网络采购与运营的成本。 NFV比较适合计算密度型的网络服务(如:负载均衡、防火墙、VPN、LAN优化、深度包检测、DPI等);在云环境中使用NFV实现各种虚拟网关、负载均衡等功能,也可以通过SDN控制器进行集中控制与配置下发。 |
| 3 | Overlay网络隧道技术 | 网络虚拟化有两个层面: 《1》在云环境中提供各种虚拟网络的功能(如:VPC、虚拟网卡、虚拟交换机、虚拟路由表等); 《2》通过隧道技术在底层物理网络上实现多个虚拟网络的传输;常用的隧道协议有:VXLAN、GRE等,通过隧道ID实现VPC的逻辑隔离;阿里云就是采用VXLAN技术直接封装内部的二层报文,外层加UDP报头中24位的VIN字段记录VPC的ID,支持16兆的VPC;微软是采用NVGRE来封装二层报文;腾讯云是采用GRE来封装三层报文(其实是去掉了内层的MAC封装三层报文,32位的KEY字段来记录VPC ID)。 Overlay的网络隧道技术有两种实现方式: 《1》网络设备商倾向于在硬件交换机种完成隧道的封装; 《2》云服务商主要采用服务器上使用VSW完成隧道的封装,避免对硬件设备的依赖性。 |
[云网络关键技术]

2.2、容器云网络技术

2.2.1、Flannel网络

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。

2.2.2、Flannel网络的特点

|--------|---------------------------------------------------------------|
| 序号 | 说明 |
| 1 | 使集群中的不同Node主机创建的Docker容器都具有全集群唯一的虚拟IP地址。 |
| 2 | 建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不动的传递到目标容器。 |
| 3 | 创建一个新的虚拟网卡flannel0接收docker网桥的数据,通过维护路由表,对接收到的数据进行封包和转发(vxlan) |
| 4 | etcd保证了所有node上flanned所看到的配置是一致的。 |
[Flannel网络的特点]

2.2.3、Flannel网络的架构

Flannel实质上是一种"覆盖网络(overlay network)",也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持udp、 vxlan、 host-gw、 aws-vpc、 gce和路由等数据转发方式,默认的节点间数据通信方式是UDP转发。要理解Flannel的原理,必须掌握Flannel的架构, 下图是Flannel架构图:

2.2.4、Calico网络原理

**Calico 是一种容器之间互通的网络方案。**在虚拟化平台中,比如 OpenStack、Docker 等都需要实现工作节点之间的互连,但同时也需要对容器做隔离控制,就像在互联网中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。

而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、网桥和隧道等技术,其中 网桥带来了复杂性,VLAN 隔离和隧道会消耗更多的资源,并对物理环境有要求,随着网络规模的增大,整体会变得更加复杂。通过尝试把主机当作互联网中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。

2.2.5、Calico网络优势

由于Calico是一种纯三层的实现,因此可以避免与二层方案相关的数据包封装的操作,中间没有任何的NAT,没有任何的overlay,所以它的转发效率可能是所有方案中最高的,因为它的包直接走原生TCP/IP的协议栈,它的隔离也因为这个栈而变得好做。

|--------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | Calico网络优势 | 说明 |
| 1 | 更优的资源利用 | 二层网络的通讯是需要依赖广播消息机制,广播消息的开销与主机数量是呈指数增长的;二层网络还会使用VLAN隔离技术,天生有4096字节的限制,即使可以使用VXLAN去解决,但是VXLAN又带来了隧道开销的问题。 Calico使用的三层路由方法,这种方法完全抑制了二层的广播,因此减少了资源的开销;Calico不使用VLAN或VXLAN的技术,可以保证资源的利用率更高。 |
| 2 | 可扩展性 | Calico使用与Internet类似的方法,Internet是比任何数据中心都大的网络,因此Calico同样的具有可扩展性,可以支持更大、更多的网络。 |
| 3 | 简单且更容易调试 | 因为没有隧道,这意味着工作节点之间的路径会更短,配置会更少,那么我们在主机上就可以更容易地进行调试等操作。 |
| 4 | 更少的依赖 | Calico仅依赖三层路由可达,因此依赖非常少。 |
| 5 | 可适配性 | Calico具有很少的依赖性,这使得它可以适配所有的虚拟机、容器、以及白盒或者混合环境下的使用场景。 |
[Calico的网络优势]

2.2.6、Calico网络模型

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

|--------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | Calico网络模型组件 | 说明 |
| 1 | Felix | 是路由配置组件,它运行在每一个主机的Agent进程,主要负责网络接口管理和监听,还有路由app管理,ACL规则管理和同步、状态上报等;这个路由配置组件会监听Etcd中心的存储,从Etcd中获取事件(如:用户在A机器上加了一个IP或创建了一个容器等操作,用户创建Pod后,这个路由配置组件负责将网卡、IP、MAC等信息都设置好,在内核的路由表里面写上一条【即:注明这个IP到这张网卡】;同样,若用户设置了隔离策略,路由配置组件会将隔离策略配置到ACL中,然后实现隔离)。 |
| 2 | Etcd | 它是一个键值对的存储,主要负责网络元数据的一致性,可以确保Calico的网络状态是准确的状态;当然在K8S中也会使用Etcd。 |
| 3 | BIRD | (BIRD Internet Routing Daemon)是核心组件,Calico中的BIRD特指BIRD Client和BIRD Route Reflector,负责主动读取Felix在本机上设置的路由信息,并通过BGP广播协议在数据中心中进行分发路由是BGP Client。 Calico会为每个主机都部署BGP Client,BIRD是一个独立可持续发展的项目,实现了众多动态路由协议(如:BGP、OSPF、RIP等)在Calico的角色是监听主机上由路由配置组件Felix注入的路由信息,然后通过BGP协议、广播告诉每个主机节点,从而实现网络的互通。 BIRD是一个标准路由程序,会从内核里面获取哪些IP的路由发生了变化,然后通过标准的BGP路由协议扩散到整个其他的宿主机上,让外界都知道这个IP在这里。 BGP Route是使用在大型的网络当中;在大型网络中若仅使用BGP Client形成全网互联的方案,就会导致规模受限,因为所有节点之间是两两互联,就需要2的n次方个连接;为了解决这个规模问题,可以采用BGP Route方案,使所有的BGP Client基于特定的R节点互联,并做路由的同步,从而可以极大减少连接数目。 |
[Calico网络模型包含的组件及其含义说明]

三、云网络发展方向

3.1、DPDK 架构

早期虚拟网络通过半虚拟化与vSW模块进行数据包处理,需要涉及内核操作,存在大量锁、队列和中断机制等,占用系统CPU进行调度与处理,导致系统开销较大,网络性能有限。所以, Intel等公司联合推出了数据平面开发工具集DPDK(Data Plane Development Kit),通过环境抽象层EAL(Environment Abstraction Layer) , UIO(Userspace IO)、和PMD(Poll Mode Driver)等机制大幅提高数据处理性能和吞吐量。

PIVD(Port-base VLAN ID)这个轮询机制是从网卡接受到数据包后,通过DMA方式传输到应用分配的内存中,应用程序通过不断的轮询,感知到数据包后会直接进行处理,由此就避免了传统NIC收到数据包后通过中断CPU同时需要从内存拷贝数据包到用户态进行处理,所带来的系统开销和延时。目前DPDK已经开始应用于各种云网络环境中。

3.2、Smart NIC/SR-IOV

网络负载处理从最初采用vSW在内核态处理,到采用DPDK跳过内核态直接在用户态处理,大幅提升了网络性能与吞吐量。但是随着网络带宽的不断发展和突破,现在即将进入100G、200G、400G的网络时代,DPDK的性能与扩展性方面同样面临着挑战,这个时候就需要采用智能网卡Smart NIC技术来解决,智能网卡采用了硬件辅助虚拟化技术(如Intel VT-d),将以往通过软件实现,需要CPU调度处理的网络负载,卸载到采用高性能、可编程的FPGA芯片的硬件网卡上处理;通过远程内存访问技术RDMA直接访问内存,无需CPU的介入。云网络环境中通过PCI网卡直通智能网卡,直接将智能网卡分配给VM使用,同时采用ISTAR、IOV将物理网卡端口PF映射为多个虚拟共用端口,提供给多个虚拟机共享使用。这种网卡对数据包的处理带来了巨大的突破;未来部分的存储虚拟化,计算机虚拟化的功能它也会卸载到智能网卡中,这个将推动SDN、NFV包括网卡虚拟化以及白盒设备的飞速发展,促进网络架构的变革。

相关推荐
翼龙云_cloud8 小时前
阿里云国际代理商:阿里云 ECS 全维度监控配置教程
运维·阿里云·云计算·监控
AKAMAI11 小时前
2026年应用程序,API和DDoS:网络攻击活动的产业化
人工智能·云计算
姚不倒16 小时前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5
腾讯云大数据18 小时前
腾讯云TBDS面向AI时代的多模态智算平台,助力企业AI转型
人工智能·云计算·腾讯云·tbds
oscar99921 小时前
3.4 Nginx 负载均衡——动态再平衡的反人性纪律
nginx·github·负载均衡·财富源代码
AOwhisky1 天前
Linux(CentOS)系统管理入门笔记(第一期)——从 Multics 到主流发行版
linux·运维·笔记·centos·云计算
姚不倒1 天前
F5 健康检查 Monitor 深入篇
运维·负载均衡·f5
summer_west_fish1 天前
云计算解决方案与未来趋势
云计算
AOwhisky2 天前
kubernetes(K8s)学习笔记:第十期与第十一期核心知识点自测与详解
运维·笔记·云原生·kubernetes·云计算·k8s·hpa
spider_xcxc2 天前
Redis 深度实践:安全管控、性能压测与持久化分析(二)
运维·前端·redis·云计算·bootstrap·运维开发