网络虚拟化之FlowVisor:网络虚拟层(中)
上一篇博客网络虚拟化之FlowVisor:网络虚拟层(上)主要对比了计算机虚拟化和网络虚拟化,引出了FLowVisor网络虚拟层,介绍了其一些特性,这篇博文深入讲解FLowVisor的技术。
一. 概念理解和回顾
上一篇博客说了,切片定义为一个虚拟网络的实例,而组成切片的流可以被当作有所有可能出现的数据包的包头构成的整个几何空间的一个子空间。举一个例子,OpenFlow的流表项会匹配一定的域,我们可以按照不同的域将整个几何空间进行划分。
FLowVisor定义切片为一组流,因此我们可以将切片当作一组域,给定一个数据包包头,我们可以判断出这个数据包包含在哪个流空间中,即可判断出这个数据包属于哪个虚拟网络,所以可以将FLowVisor的一个实例等价于一个流空间。
FLowVisor的设计目标有三点:
- 这个虚拟化对控制器来说应该是透明的
- 不同的切片之间是完全独立的
- 切片定义是可扩展的
二. FLowVisor的的实现
1. 工作流程
FLowVisor类似于一个OpenFlow代理,对OpenFlow交换机和控制器之间的消息进行拦截,如下图左。所有的OpenFlow消息,不论从交换机到用户还是用户到交换机,都会经过FLowVisor,FLowVisor利用OpenFlow协议和用户、交换机进行通信,FLowVisor对交换机和用户来说是透明的,所以在用户看来,他们是直接和交换机通信的。接下来以下图左简单的例子来阐述FLowVisor的操作流程。
Bob在控制器上面运行了一个HTTP负载均衡应用,将所有的HTTP流散播到一组服务器上,Bob的FLowVisor的策略是切片网络从而让自己只处理所有源IP为一个固定值的HTTP流,而控制器上可以看到所有的HTTP流,控制器自信可以实现负载均衡的任务,他会下发流表,对所有的HTTP流负载均衡。当Bob的控制器下发一条流表(如将某个流指引到某个服务器),FLowVisor会拦截他(上图左1),和Bob's的切片策略进行对比(上图左2),重写流表项只对固定源IP的HTTP流有效,这样控制器就实现了只控制固定源IP的流,但是他觉得自己控制了所有的流。同样的,对于从交换机向控制器的消息,FLowVisor只允许满足对应切片流空间的消息上传。FLowVisor不需要FLowVisor实例和物理交换机一对一存在,一个FLowVisor实例可以控制多个物理交换机,甚至可以虚拟化另外一个虚拟网路。如上图右
作者公布了源码,是C语言写的,大约7000行。
2. 切片定义策略
FLowVisor中切片被定义为可插入模块(非常方便和便捷),每个策略由文本配置文件来描述的,一个切片一个。对于带宽分配,一个切片的所有流都会被映射到一个Qos组,每个切片有固定数量的交换机CPU和转发流表的预算,网络拓扑被指定为网络结点和端口的列表。
用一个有序的元素列表,类似于防火墙规则来定义的每个切片的流空间,每个规则描述有一个相关的操作,比如,允许,只读或者拒绝,这些被按照特定顺序来进行解析,执行第一个匹配规则的操作。将所有规则组合起来作为流空间的一部分,基本控制了整个切片。只读规则只允许切片接收OpenFlow控制消息,查询交换机的统计信息,不允许在转发表中插入流表。规则是允许重叠的。
我们接着复杂化前面的场景:Bob邀请了他的一些小伙伴和他合作来做HTTP负载均衡实验,网络管理员Alice准许Bob进行这些合作性实验,Alice将参与这个合作性HTTP实验的人员的HTTP流交由Bob控制,她继续负责剩余的HTTP流,另外,Alice还想要运行一个被动的切片来监测整个网络的性能,为了实现这样的功能,我们可以用下面的流空间规则。
- Bob'的试验网络:被定义为所有参与实验的人员所需要的HTTP流,他的网络描述文件对每个用户只有一个规则,格式如下:
Allow: tcp_port: 80 and ip = user_ip
凡是来自于交换机中可以匹配这条规则的OpenFlow消息被转发到Bob的控制器,所有Bob意图插入的流表项都会满足这些规则 - Alice的生产网络:是Bob网络的补集,所以规则如下:
Deny: tcp_port:80 and ip=user_ip
Allow: all
凡是不进入Bob虚拟网络的交换机的OpenFlow消息都会被进入生产网络的控制器,对于不满足Bob流空间的流生产控制器就可以随意对它们进行控制 - Alice的监测网络:需要看到所有网络中的流,他的规则如下:
Read-only: all
这个规则确保Alice的检测网络是完全被动的,不与她的生产网、Bob的试验网产生任何冲突
通过上面的描述,我们可以发现,基于规则的策略是比较简单的,但是他可以满足实验和部署要求,更重要的是大家可以对自己所需要的规则完全DIY,所以十分灵活和可扩展。
经过这两篇文章,我基本理解了FLowVisor的原理和过程,进一步拓宽了自己的思路,下一篇文章详细说下FLowVisor如何隔离不同的虚拟网络
网络虚拟化之FlowVisor:网络虚拟层(中)的更多相关文章
- 网络虚拟化之FlowVisor:网络虚拟层(下)
在前面两篇文章:网络虚拟化之FlowVisor:网络虚拟层(上)和网络虚拟化之FlowVisor:网络虚拟层(中)中分别介绍了FLowVisor的特性和实现,三连载的最后一篇介绍虚拟网络的隔离机制. ...
- 网络虚拟化之FlowVisor:网络虚拟层(上)
概念解释:切片:虚拟网络的一个实例 一. 网络虚拟化(虚拟网络) 人类社会的发展在很大方面得益于自然界,飞机受益于鸟,雷达受益于蝙蝠等等,所以专门有个学科为仿生学就是研究和模仿生物的特殊本质,利用生物 ...
- 删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡
Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲 ...
- Windows Server 2012 虚拟化实战:网络(二)
关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Window ...
- Windows Server 2016-Hyper-V网络虚拟化概述
在 Windows Server 2016 和虚拟机管理器中,Microsoft 提供的端到端网络虚拟化解决方案. 有构成了 Microsoft 的网络虚拟化解决方案的五个主要组件: Windows ...
- 《重构网络:SDN架构与实现》Chapter7 SDN与网络虚拟化 随笔
参考: <重构网络:SDN架构与实现>,作者:杨泽卫.李呈. Chapter7 SDN与网络虚拟化 结构 7.1 网络虚拟化 7.1.1 为什么需要网络虚拟化技术 7.1.2 网络虚拟化 ...
- 从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨
以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网 ...
- Hyper-V 网络虚拟化技术细节
Hyper-V 网络虚拟化技术细节 适用对象:Windows Server 2012 R2 服务器虚拟化能让多个服务器实例在同一台物理主机上同步运行,但各个服务器实例都是相互独立的. 每台虚拟机的运作 ...
- 数据中心网络技术新贵:VXLAN与园区网络虚拟化
摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生. 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发 ...
随机推荐
- jquery 实现菜单的下拉菜单
实现效果如图: 源码: 到此下载
- 关于数组中加入相同的view的试验
随便新建一个工程,然后在控制器中粘贴如下代码 - (void)viewDidLoad { [super viewDidLoad]; UIView * view = [[UIView alloc]ini ...
- Python读取键盘输入
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.例如以下: raw_input input raw_input函数 raw_input() 函数从标准输入读取一个行.并返回 ...
- Livereload介绍
Livereload可理解为即时刷新,在前端开发中,开发人员在编写或调试html/js/css代码后须要从编辑器切换到浏览器.再刷新浏览器才干看到页面变化,这样的十分频繁的操作在一定程度上影响了工作效 ...
- atitit.userService 用户系统设计 v6 q413
atitit.userService 用户系统设计 v6 q413 1. 新特性1 2. Admin login1 3. 用户注册登录2 3.1. <!-- 会员注册使用 --> 商家 ...
- PHP系统学习2
字符串操作 字符串截取 substr() 字符串格式化printf()格式化无需echo sprintf() 需要echo nl2br()可以将\n转换成<br/> wordwrap() ...
- MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it
MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it 博客分类: 数据库 MySQLJava ...
- CCNA2.0笔记_IPv4
ipv4对于OSI是个网络层协议,对于TCP/IP是个Internet层协议 ipv4是一个无连接/尽力传输协议 Ipv4定义了两大类广播地址 1,全向广播:255.255.255.255 2,定向广 ...
- 在Windows7和Ubuntu上编译安装MICO
MICO是CORBA标准的一个实现.开源并且被广泛使用. 首先的首先,看用户手册,在页面"http://www.mico.org/docu.html"找到一本教材"MIC ...
- js上传控件 plupload 使用记录
最近一个项目需要使用一个上传控件进行多图片上传,给用户更好的体验,找到了plupload,用了一下感觉还是不错的, 1.从官网上 可以获得例子 ,我集成到了jsp,如下: <%@ page l ...