VPC全称是Virtual Private Cloud,翻译成中文是虚拟私有云。但是在有些场合也被翻译成私有网络或者专有网络等。这里其实就有些让人迷惑,VPC究竟是指云还是网络?答案是,VPC即是一种云,也是一种网络模式,不过应该从服务和技术的角度分别来看。

一、虚拟私有云

首先从服务的角度来看,VPC指的是一种云(Cloud),这与它的字面意思相符。对于基础架构服务(IaaS),云就是指资源池。你或许听过公有云(Public Cloud)、私有云(Private Cloud)、混合云(Hybrid Cloud)。不过,VPC不属于这三种云中任一种。这是一种运行在公有云上,将一部分公有云资源为某个用户隔离出来,给这个用户私有使用的资源的集合。VPC是这么一种云,它由公有云管理,运行在公共资源上,但是保证每个用户之间的资源是隔离,用户在使用的时候不受其他用户的影响,感觉像是在使用自己的私有云一样。

从这种意义上看,VPC不是网络,我们可以对比VPC和它一个字面上相近的概念:VPN(Virtual Private Network)。VPN在公共的网络资源上虚拟隔离出一个个用户网络,例如IPsec VPN可以是在互联网上构建连接用户私有网络的隧道,MPLS VPN更是直接在运营商的PE设备上划分隔离的VRF给不同的用户。从提供服务的角度来,说如果VPC指的只是网络的话,那它跟VPN的概念是重复的。所以,从公有云提供所提供的服务来说,VPC应该理解成,向用户提供的隔离资源的集合。

VPC最早是由AWS在2009年提出,不过VPC的一些组成元素在其提出之前就已经存在。VPC只是将这些元素以私有云的视角重新包装了一下。在VPC之后,云主机只能使用VPC内部的对应的元素。从这个角度看,VPC更像是公有云服务商以打包的形式提供服务。

用户可以在公有云上创建一个或者多个VPC,每个部门一个VPC。对于需要连通的部门创建VPC连接。

同时,用户也可以通过VPN将自己内部的数据中心与公有云上的VPC连接,构成混合云。

不论哪种用例,VPC都以更加直观形象让用户来设计如何在公有云上存放自己的数据。

二、VPC硬件租用模式

VPC硬件租用模式(Hardware Tenancy)本身也是公有云提供的一种服务模式。VPC的硬件租用模式有两种,一种是共享(shared),一种是专属(dedicated)。共享是指VPC中的虚拟机运行在共享的硬件资源上,不同VPC中的虚拟机通过VPC进行隔离。专属是指VPC中的虚拟机运行在专属的硬件资源上,不同VPC中的虚拟机在物理上就是隔离的,同时VPC帮助实现网络上的隔离。专属模式相当于用户直接向公有云服务商租用物理主机。专属模式适合那些对于数据安全比较敏感的用户,不过这些物理主机还是由公有云服务商管理。

不论是共享模式还是专属模式,VPC都运行在公有云资源上,由公有云服务商管理。

三、专有网络

从技术角度来看,VPC是用户专属的一个二层网络。

1. 经典网络VS VPC

AWS的网络产品,在VPC之前称为EC2-Classic。去年的一个热点文章《关于阿里云的经典网络问题》说的就是这两种网络模式:Classic和VPC。他们之间最核心的区别是:经典网络提供的是多用户共享的网络,而VPC提供的是用户专属的网络。

这里的网络就是指二层网络,经典网络模型本身有很多问题,其中最大的问题就是安全问题。除非加了特定的防火墙规则去拦截,二层网络内的所有设备默认是可以通信的。这就好比大家都挤在一个房间里,彼此的隐私很难保障一样。稍有不慎,云主机就可能被同网络的其他用户恶意攻击。而VPC能够为每个用户一个专属独立的二层网络。这样相当于给每个用户分了个房间,用户的隐私更容易得到保障。就算有恶意攻击,一般也要走到网关或者VPN设备,在这些集中的设备上,网络流量更可控。

由于每个用户都有专属的二层网络,那说明VPC模式下的可用二层网络的数量是远超经典模式的。虽然各家都没有公布自己的实现细节,但是这里有点类似VXLAN和VLAN的关系。VXLAN可以有1600万个二层网络,VLAN只有4000多个二层网络。公有云与私有云的区别在于用户数量巨大。如果采用VLAN,每个用户一个二层网络,那最多只能带4000多个用户,公有云许多用户还是只有1-2个云主机那种,那必然不能满足公有云的需求,所以在早期的经典网络模式下,不得不让多个用户挤在一个网络里面。而如果采用VXLAN之类的技术,则可以保证在一个region里面为1600万个用户每人分到一个二层网络。

因为VPC是一个用户专属的网络,用户可以任意定义VPC内云主机的IP地址。二层隔离了,IP地址想怎么玩就怎么玩。而在经典网络模式下,大家挤在一个二层网络里面,IP地址首先要保证不要重合,这对用户和服务商来说都不是一件心情愉快的事情。

2. VPC的网络overlay

从AWS公布的资料看,VPC的数据封装与VXLAN这类网络Overlay技术也很像。从下图可以看出,桔色的VPC中,10.0.0.2发往10.0.0.3的网络数据,最终被封装成主机之间的通信报文。

原始的二层帧,被VPC标签封装,之后封装在另一个IP报文里面。这与VXLAN的封装方式可以说是一模一样。不过需要澄清的是,AWS在2010年就已经开始应用VPC,而VXLAN标准是2014年才终稿。AWS的VPC或许和VXLAN不一样,但是按照VXLAN理解VPC的overlay会更容易些。

VPC使用网络Overlay之后,可以构建一个L3之上的L2。这样一个VPC内的虚机,可以任意的在数据中心分布。实际中云主机肯定不是任意分布的,会有一些主机的调度优化算法,但是至少,网络不会成为限制云主机部署的因素。举个反例,如果使用VLAN,虚机必须部署在支持相应VLAN的设备上,哪怕这个设备已经接近饱和,而其他的设备却是空置的。如下图,因为左边的机架不支持相应的网络,对应的云主机只能往右边的机架塞,直到塞满。而同时,左边的机架负载还不到50%。

Overlay使得VPC不再受网络硬件的限制,VPC内的云主机可以部署在整个机房。

四、VPC与SDN

AWS在2017年提出,VPC是构建在软件(代码)之上,VPC就是SDN。我们前面说过,VPC是一个二层网络,是一个构建在L3之上的L2 Overlay网络。这里说VPC就是SDN,实际上是指,VPC受SDN所控制。AWS的VPC依靠一个叫Mapping Service的组件工作。当虚机之间要通信的时候,请求先发到Mapping Service,再由它找到目的虚机对应的信息(例如目的虚机所在的主机IP地址),Mapping Service用对应的信息,封装成Overlay数据(类似于封装成VXLAN数据),再进行传输。

如果是一个三层通信,传统上是要发到网关,由网关转发到目的虚机。而对于AWS的VPC,Mapping Service同样也会完成三层通信的信息查找,数据封装。这样连路由器都省了。

这里的Mapping Service,与SDN控制器的作用可以说是一样的。SDN控制器掌握了所有的网络信息,当需要进行二层,三层通信时,SDN控制器会根据网络数据包下发OpenFlow流表,使得虚机之间直接通信。

如果说Mapping Service是SDN控制器,那么更具体点,它还是一个分布式SDN控制器,因为每个主机上都有一个Mapping Service的缓存。通过这种分布式,可以实现高速运算处理。

1. VPC相关的网络资源

VPC虽然指的是专有网络,但是跟网络配套的资源有很多,这些网络资源都是以VPC为单位来划分。也就是说,定义在一个VPC内的网络资源,只能被这个VPC内的虚机所使用。这在前面讲服务的时候提到过。这些资源可以概括如下:

Security Group, Subnet, Network ACL, Routing Table, Router,这些都是老生常谈了。以VPC为单位来划分这些资源,可以更好的突出私有的感觉。但是实际上这些资源大多是虚拟的,每个用户占有一份也不会增加公有云运营商的成本。

需要注意的是,VPC尽管是一个二层网络,但是AWS仍然是通过路由器连接一个VPC下的两个Subnet。

2. VPC边缘设备

前面讲服务的时候说过,VPC从服务的角度来看是虚拟私有云,表示的公有云运营商提供给用户的隔离资源的集合。它相当于是漂浮在公有云上的孤岛。真正让VPC变得强大的是它各式各样的连接技术。AWS提供了一个Edge设备(Blackfoot Edge Device),VPC通过这个Edge设备可以:

与别的VPC相连
    与互联网相连
    与用户的私有云建立VPN连接。
    与AWS的其他服务建立连接。

这才是公有云服务商在构建VPC网络时,真正的竞争力所在。有了这样的Edge设备,VPC不再是孤岛,而是有了连接其他陆地的桥梁。这里的Edge设备,可以看成是VNF,AWS需要用户在VPC内部手动配置路由来引流到这个Edge设备。

五、总结

不论是对用户还是公有云服务商,VPC都是一个更好的选择。对于用户来说,首先可以任意定义VPC内的IP地址。其次VPC像是一个容器,装载着所有的云主机,同时又与其他的VPC隔离。第三,用户还可以用各种连接服务(VPN,NAT等)将VPC与现有的网络连接起来。这样对用户来说,既保证了网络隔离,又能提供按需的网络连通。对公有云服务商来说,VPC实际上就是SDN在公有云的应用。软件可控,Overlay使得服务商的硬件利用率提高,对硬件厂商的依赖程度降低。在这个基础上,公有云服务商还能够提供更好的网络服务

AWS 的 VPC:

VPC (多个可用区):注意不能超过60英里,100公里左右, 网络堪比内网

可用区:多个(子网):

internet网关(双向)一个VPC只有一个

作用 下图:逻辑连接,

Internet 网关的带宽并不由 Internet 网关本身决定,而是由 EC2 的带宽决定。

如果没有 Internet 网关,VPC 将失去和 Internet 的连接。
最后再总结一下 Internet 网关的作用:让公有子网内的资源连接 Internet,同时也让 Internet 连接公有子网内的资源。

子网类型:(不能跨可用区)

公网子网: 一个外网ip 一个内网ip

带NAT(单向):

NAT 网关是和 EC2 平级的位于公有子网内的计算资源,负责私有 IP 和公有 IP 的转换及流量转发。
可用区 1 中的 EC2 通过 NAT 网关访问 Internet。而可用区 2 没有 NAT 网关,因此该可用区内的 EC2 无法访问 Internet。

NAT 网关和 Internet 网关有以下几个区别:

  1. NAT 网关负责让私有子网访问 Internet;Internet 网关负责让公有子网访问 Internet。
  2. NAT 网关的连接是单向的,私有子网可以访问 Internet,但是 Internet 无法访问私有子网(除非显示地允许该访问,但不在本文的讨论范围之内);Internet 网关的连接是双向的。
  3. NAT 网关工作在可用区,Internet 网关工作在 VPC
  4. NAT 网关运行于具体的物理设备,带宽从 5Gbps 至 45Gbps 不等,因此使用 NAT 网关会产生额外费用;Internet 网关只是个逻辑连接,没有带宽限制,也不会产生费用。

隔离的私有网络:(VPC内部访问):

隔离的私有子网就是没有 NAT 网关的私有子网,上图中可用区 2 的私有子网就是一个隔离的私  有子网。隔离的私有子网无法访问或被 Internet 访问,只能和 VPC 内的资源相互连接。

下图是融合了公有子网、带有 NAT 的私有子网以及隔离的私有子网的使用案例。:

总结:

  1. 公有子网的外网 IP:连接internet网关,访问外网
  2. 公有子网的内网 IP:内部访问
  3. 带有 NAT 网关的私有子网的内网 IP:连接公网IP ,单向访问internet
  4. 隔离的私有子网的内网 IP:VPC内部访问
  5. Internet 网关:逻辑连接 ,和公网ip互联,双向

【AWS】VPC 系列(一)一文搞懂「可用区」「子网」「Internet 网关」「NAT 网关」 - 知乎

AWS VPC 以及VPC的原理相关推荐

  1. AWS攻略——VPC初识

    大纲 在网络里启动一台可以ssh上去的机器 查看区域.VPC和子网 创建EC2 连接 Web端连接 客户端连接 知识点 参考资料 VPC是在AWS架构服务的基础,有点类似于我们在机房里拉网线和设置路由 ...

  2. 专有网络 VPC > VPC与外部网络连接 > 连接VPC

    连接VPC 更新时间:2020-09-09 17:38:43 编辑我的收藏 本页目录 云企业网 VPN网关 您可以通过使用云企业网.VPN网关连接不同的VPC. 云企业网 云企业网(Cloud Ent ...

  3. AWS两个VPC网络互通

    连接 VPC 和网络 您可以在两个 VPC 之间创建一个 VPC 对等连接,然后通过此连接不公开地在这两个 VPC 之间路由流量.这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样. 您还 ...

  4. AWS手动创建VPC

    因开发需求,需部署一套与正式环境相同的ELB进行测试:本打算启动创建向导创建的,结果AWS失败了,只好进行手动了: 1)进入VPC选项===>您的VPC==>创建VPC===>填写名 ...

  5. AWS实验|构建 VPC 并启动 Web 服务器

    目录 实验概览 一.介绍Amazon VPC

  6. 端口镜像 流量过滤_在 AWS 云环境中滥用 VPC 流量镜像抓取网络流量

    云环境下的网络检测问题 人们可能希望监视云环境中的网络流量有很多原因--出于攻击和防御的目的.被动的网络检查在云环境中可能很困难,而且在这之前需要对网络配置进行重大修改,以确保每台主机都被监控,并且不 ...

  7. AWS — AWS VPC 虚拟专用云

    目录 文章目录 目录 VPC(虚拟私有云/网络) 从服务的角度来看 VPC 是一种服务 从技术的角度来看 VPC 是一种网络模式 AWS VPC AWS 的 VPC 类型 AWS 的 VPC 互联类型 ...

  8. AWS的VPC使用经验(一)

    Amazon VPC 概念 Amazon VPC 是 Amazon EC2 的网络化阶层.如果您是首次使用 Amazon EC2,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中 ...

  9. AWS VPC 概述

    VPC (Virtual Private cloud)虚拟私有云,是AWS提供的在网络层面对资源进行分组的技术,一个VPC可以看作是一个独立的虚拟网络,这个虚拟网络与客户在数据中心运营的传统网络及其相 ...

最新文章

  1. DVWA系列之21 存储型XSS分析与利用
  2. Windows下配置环境变量和需不需要重启?
  3. 题解:一些递推的题。
  4. 用Java Servlets代替CGI
  5. 发生冲突未及时离场 绿军大将被NBA罚款3.5万美元
  6. mysql 版本号_详解MySQL并发控制及事务原理
  7. 安装vs2008出现MSI returned error code 1603的错误的解决
  8. Charles 使用教程
  9. Pb语言中的类和对象
  10. 7月1号连连支付不能提现PayPal了,以后PayPal怎样提现?
  11. Float类型出现舍入误差的原因
  12. LeCo-33.搜索旋转数组
  13. bootstrap的carousel-indicators是怎么实现垂直居中的
  14. (金融入门知识点)Double类型丢失精度
  15. 阿里云Redis开发规范学习总结
  16. 最小二乘法解的矩阵形式推导
  17. FVCOM - SMS - 画网格
  18. Kotlin 概述【官方】
  19. 妙赞大讲糖:糖尿病患者的手术风险有多大
  20. 米Pad2Gpu降频修改

热门文章

  1. 整理的一些 Vue3 知识点,初学者看完就能上手做项目
  2. 找不到网络路径计算机共享,win10 局域网共享问题 提示0x80070035 找不到网络路径...
  3. 7款开源ERP系统比较
  4. wps在线预览接口_开发文档 - WPS在线预览 - view.wps.cn
  5. string字符串常见用法
  6. 基于.NET平台常用的框架整理
  7. Android差分升级原理和实现方式
  8. java线程池的应用_Java线程池的使用
  9. 交叉编译ssh服务到ARM开发板
  10. 关于瞳孔跟踪、面部器官识别的最终UI界面