深入浅出新一代云网络——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这 ...
随机推荐
- Legendary Items-微软实习生笔试第一题
题目如下: 这道题难点不仅在于正确理解题意,判断递归条件,更在于用数学方法推出解决公式.因为N最大为1百万,而内存只有256MB, 所以暴力递归肯定会超时,超空间. 不过,我才疏学浅,又没有大量时间去 ...
- HackerRank The Chosen One [预处理][gcd]
题解:tags:[预处理][gcd]故事背景:光头钻进了茫茫人海.这是一个典型の通过前缀后缀和来降低复杂度的问题.先用pre数组与suf数组分别维护前缀gcd和后缀gcd.如果 a[i] % gcd( ...
- Python之路-awk文本处理
作业一:整理博客,内容包含awk.变量.运算符.if多分支 一.awk 1.awk是一个优秀的文本处理工具,多用来处理含有特殊分隔符的内容 常见用法 awk -F: {print $1,$4} 作业 ...
- Framework7首页隐藏navbar其他页面显示navbar
Framework7首页隐藏navbar其他页面显示navbar 帮别人解决问题,自己也记录一下, 首页.navbar加.navbar-hidden, 首页.page加.no-navbar, 如果首页 ...
- Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译
最近研究了一段时间Android开发后发现,google自带的ADT工具,缺失一些开发常用的东西,希望可以构建一个类似使用JAVA EE开发体系一样开发的工具包集合,包括前台开发,调试,到后台数据库的 ...
- Java异常处理机制 —— 深入理解与开发应用
本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...
- KMP算法【代码】
废话不多说,看毛片算法的核心在于next数组. 很多地方用的都是严书上的方法来求解next数组,代码确实简洁明了,但是可能对于初学者来说不容易想到,甚至不是一下子能理解.(好了,其实我说的就是自己,别 ...
- 文件系统与linux相关知识点
文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能.对于服务器开发人员,比较关注的是unix(linux)环境下的文件系统,比如分区与磁盘关系,磁盘的剩余空间,文件的类型与权限控制,文 ...
- webscoket实战之利用httpsession定向推送
webscoket实战之利用httpsession定向推送 开发框架 springboot 场景 在利用websocket主动推送信息给客户端的过程中,经常会遇到一个普遍需求,就是推送的消息要定向推送 ...
- Android启动篇 — init原理(二)
======================================================== ================================== ...