深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的“新”只是一个和传统网络的相对概念。但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国内甲方厂商的视野,而从去年至今,笔者经历的诸多客户也在历经学习、测试后逐步将其部署入生产。与此同时,国内的公有云厂商们也或多或少地投入了对市场的教育成本,鼓励客户使用功能更强大,安全性更好的VPC网络。
- 什么是VPC
VPC即virtual private cloud ,因其最大的特点还是网络方面,故行业内有时也称其为私有网络,在基础云计算环境之上,支持用户定义自己的虚拟网络,这个网络在逻辑上与云中的其他虚拟网络隔绝,用户可选择私有 IP 地址范围、创建子网以及配置路由表、网络网关和安全设置等。
传统基础网络的管理员视角:
(当然实际上,以往的IT集成架构会基于业务需求和安全需求作复杂的 外-核心-汇聚-接入-用户的层次划分。)
从用户的视角甚至可以简化为:
实际云环境中,抛开云主机的安全组策略、上层交换设备的ACL等不谈,各用户处于同一层次的网络中,IP自然也由平台管理端分配。
而对于使用VPC网络的环境来说:
左边颜色区域是一个用户,右边颜色区域是另一个用户。两者各自的网络广播域不会互相影响,IP自然也可以由用户指定。从图中不难发现,与基础网络相比,路由正是VPC网络的核心。
那么开头所说的“功能更强大,安全性更好”具体指什么呢?功能更强大,指的是更便利、形式多样的互联互通、带宽分配等网络功能;安全性更好,指的是用户的私有网络隐藏在路由之内,不仅互不影响,还可以将访问控制的执行者,从云主机本身一直延伸到三层。
- VPC-NAT
NAT即网络地址转换,分为DNAT(目的地址转换)与SNAT(源地址转换),最直白地从常见功能目的来说, DNAT可以用于实现一个上层(路由的外层)地址的端口转发到下层(路由的内层)网络某个地址的某端口,SNAT可以用于实现多台云主机共享一个网关地址访问上层(路由的外层)网络。
第一个很好理解,4层端口转发。
有时候为了管理需要,要能在外层网络管理私网中的三台云主机,而这三台云主机仅有私网地址没有外层地址,那么可以使用端口转发,将路由外层地址 114.123.123.x 的22端口转发至第一台云主机10.1.1.3的22端口,将114.123.123.x的23端口转发至第二台云主机的22端口,将路由的24端口转发至第三台云主机的22端口。如此通过SSH一个外层地址的不同端口来连接到私网内的三台云主机。
其实和7层的转发有那么点相似之处,比如 Nginx的80端口代理后端应用服务器的8080端口,81端口代理另一台服务器的8080端口。还真别说,Nginx自从1.9版本后开始支持TCP代理了。
抛开应用层转发不谈,基于OpenStack该如何实现呢?
熟悉虚拟化与容器技术的朋友肯定熟悉linux的namespace(命名空间),在Neutron 的L3节点上,不同用户的VPC路由正是用namespace技术实现的隔离,这一点和不同vxlan网络的隔离还是有很大区别的,本篇不谈。
netns是在Linux中提供网络虚拟化的一个项目,使用netns网络空间虚拟化可以在本地虚拟化出多个网络环境
所以,在L3节点使用ip netns 可以看到含本地所有网络命名空间的list:
可以发现,其实不同网络的dhcp服务与负载均衡服务(非Octavia)也是使用类似的方式。
qrouter后面接的uuid正是路由的uuid。通过这种方式即可进入VPC路由所在命名空间并使用iptables 执行对NAT表规则的增删。
故端口转发的功能API流程可以简单描述为:
输入数据为 VPC路由uuid 及端口,私网云主机IP及端口,生成
VPC路由IP:端口 → 云主机IP:端口
的一条 DNAT规则。
进入VPC命名空间执行规则。
执行后NAT表效果:
系列下一篇 《深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)》中将给出上文的简单API 代码,并展开另一块内容——VPC网络带宽的共享与分离。考虑篇幅, VPC网络中实现互联互通的路由技术与隧道技术可能会放在系列的第三篇。
深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)的更多相关文章
- 微信小程序开发入门教程(二)---分析官方云开发例子中的一些功能
接上一篇文章:https://www.cnblogs.com/pu369/p/11326538.html 1.官方云开发的例子中,点击获取 openid,对应代码在E:\wxDEV\helloyun\ ...
- 探索云网络技术前沿,Sigcomm 2019 阿里云参会分享
Sigcomm 2019简介 一年一度的网络顶级学术峰会Sigcomm于8月20日至22日在北京举行.作为ACM Special Interest Group on Data Communicatio ...
- 数据中心网络架构的问题与演进 — 混合云与 VPC 专有网络
目录 文章目录 目录 前文列表 历史背景 混合云 Why hybrid cloud? 混合云市场 混合云的逻辑架构 混合云应用场景 灾难恢复 数据备份 负载扩容 应用部署 开发测试生产部署 混合云产品 ...
- 2019 GNTC 阿里云参会分享:开放、弹性的阿里云网络NFV平台
作为全球规模最大的网络技术盛会之一,GNTC全球网络技术大会是网络技术发展的重要风向标,包含战略规划.产业方向.技术趋势.应用创新等皆汇集于此.而作为云服务商代表,阿里云再度受邀以顶级钻石合作伙伴之名 ...
- Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888
Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888 用户名admin 密码aaaaaa 网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将影像通过网络传 ...
- OpenFlow能解决私有云网络VLAN问题么
本文转载自:http://network.51cto.com/art/201202/314310.htm 在关于私有云网络的文章中,我们首先探讨了物理网络是否影响私有云.本文我们将讨论如何通过软件定义 ...
- OpenResty 在又拍云容器平台中的应用
大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...
- [深入浅出Cocoa]iOS网络编程之Socket
http://blog.csdn.net/kesalin/article/details/8798039 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] [深入浅出Co ...
- 【跟唐老师学习云网络】 - 第7篇 Tcpdump大杀器抓包
[摘要] 前面章节的网络协议栈相关的信息建议大家多学习一遍,因为这些都是最基础的东西,想玩好云网络必备基本功.. 一.上帝视角 之前提到过定位问题可以开启上帝视角,那么如何开启就要依靠tcpdump这 ...
随机推荐
- python的try方法中的else和finally的区别
#coding=utf-8__author__ = '14356_000'try: print '1'except: print '2'else: print '3'finally: print '4 ...
- 实验楼-2-Linux基础快捷键
终端:本质上对应着Linux上的/dev/tty设备 shell:打开终端,shell则自动打开 可以在终端直接输入: echo "hello world" /*shell程序自动 ...
- CentOS6.5下安装oracle11gR2
安装前须知 内存(RAM)的最小要求是 1GB,建议 2GB 及以上. 虚拟内存 swap 建议:内存为 1GB~2GB 时建议swap大小为内存大小的 1.5 倍:内存为 2GB~16GB 时建议s ...
- 解决Appium无元素可选的如何定位
1.首先我们看看要定位的东西,我要定位的就是折让率上图自己看 写代码: AndroidElement element = driver.findElementByAndroidUIAutomato ...
- 【Hexo】Hexo+Github构建个人博客 (五):错误集
一.报错: ERROR Plugin load failed: hexo-deployer-git 解决方案:执行命令 npm install hexo-deployer-git --save 二. ...
- 在hive中直接对timestamp类型取max报错
之前直接对timestamp类型做max操作, select id,max(updatetime) updatetime from his.tag group by id; 结果查询的结果有的显示为1 ...
- input是否checked与使用jquery的attr或prop方法无关
最近在项目中有这样一个需求,用户在下单时可以选择优惠券,也可取消选择,并且可以多次选择,取消. 这是一个典型的input标签checked功能,博主使用radio元素实现此需求,但是优惠券只能选中,不 ...
- html/css/javascript的含义、作用及理解
HTML(HyperText Markup Language/超文本标记语言) 含义:HTML是一种用于创建网页的标准标记语言. 作用:页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 理解:主 ...
- Python爬虫 Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
- less学习笔记(二)
1.作用域:基本与javascrip的作用域相似,即先找局部变量,后找全局变量.找变量时遵循就近原则. 2.条件表达式:.mixin (@a) when (lightness(@a) >= 50 ...