在前面两篇文章:网络虚拟化之FlowVisor:网络虚拟层(上)网络虚拟化之FlowVisor:网络虚拟层(中)中分别介绍了FLowVisor的特性和实现,三连载的最后一篇介绍虚拟网络的隔离机制。

虚拟化的一个重要元素是切片之间的隔离,因为不同资源的隔离机制是不相同的,接下来将分别描述。

1. 带宽隔离

FLowVisor可以通过标记数据包的VLAN优先级比特位来利用现存的交换机带宽隔离特性。VLAN标签拥有三个比特域,PCP(VLAN Priority Code Point)有一个将数据包映射到八个优先级队列中的其中一个的标准机制,OpenFlow协议里面有对VLAN标签和优先级比特的管理,所以可以给流中的所有数据包一个优先级。

因为,为了增强带宽隔离,FLowVisor重写了所有切片的转发表,加了一个“set VLAN priority”的操作,将优先级置为八个优先级队列中的某一个,一个虚拟网络实例中的所有流根据资源分配策略映射到相应的流组(流组需要网络管理员通过CLI定义)

使用VLAN PCP比特位并不是FLowVisor所固有的,而是为了和商用硬件协调工作所选择的短期变通方案。

2. 拓扑隔离

控制器通过OpenFlow协议发现网络中的结点和链路,在非虚拟网络中,当一个网络设备连接到控制器的TCP监听端口的时候,控制器就可以发现这个设备。FLowVisor作为交换机和控制器中间的一个代理,他只代理用户虚拟网络中的交换机和控制器的连接,同理,用于罗列交换机所有物理端口的OpenFlow消息,也会被FLowVisor拦截,修改为只有虚拟网络中有的端口。

需要注意的是LLDP消息的处理,在提高SDN控制器的拓扑发现性能(通过改进逻辑)这篇文章中我已经解释了SDN网络中拓扑发现原理和LLDP数据包的详解,这个消息他有特定的格式,所以FLowVisor拦截住这个消息,给其打上标签,标签为虚拟网络号,当他们再被交换机收到传送到控制器的时候,可以根据标签发送到相应的虚拟网络。

3. 交换机CPU隔离

商用交换机上的CPU都是典型的低功耗嵌入式处理器,因此很容易过载,在大多数交换机硬件中,一个高负载的CPU会导致严重的网络破坏。比如,一个CPU高负载的情况下,硬件转发数据会继续进行,但是交换机会停止响应控制器的OpenFlow请求,导致LLDP链路发现协议超时,让交换机误以为网络连接非常不稳定,网络变得不可用。

交换机的CPU负载主要被下面四种程序瓜分,这四个负载来源需要不同的隔离机制:

  1. 产生新流到达的消息:在OpenFlow交换机中,如果一个数据包无法匹配流表,就会向控制器发送PacketIn消息,这个过程消耗了一部分处理资源,如果新流比较多,消息产生很频繁,CPU资源就会耗尽。为了防止饿死,FLowVisor会追踪新流产生的消息到达速率,如果速率超过了阈值,FLowVisor插入一条转发流表规则在一个时间段内丢弃所有的数据包,就这样,FLowVisor利用OpenFlow协议限制了新流的速度。
  2. 处理控制器的请求:对于每个虚拟网络实例,FLowVisor通过限制OpenFlow消息速率来限制CPU消耗,因为不同类型的消息消耗不同的CPU资源,因此这个工作现在还略显不足。
  3. “慢路径”转发:除了很快的专用的硬件转发路径,数据包通过“慢路径”转发,这当然会消耗一部分CPU资源,而这个消耗显然是不确定的。FLowVisor通过重写多个转发规则,将他们分开,分别为为一次数据包转发事件来防止控制器一次插入多个“慢路径”转发规则,比如OpenFlow的PacketOut消息,他可以一次下发很多转发规则,但是FLowVisor可以拦截,将其分为多个。这样,“慢路径”数据包会通过上面提到的两条机制:新流产生的消息和控制器的请求来限速。
  4. 维持内部状态:所有的网络设备会使用CPU去更新他们的内部计算器、处理事件等等,所以必须留有足够的CPU给交换机“记账”。FLowVisor通过限制上面三点的CPU消耗来保障交换机有足够的资源执行内部功能。

和带宽隔离一样,CPU隔离机制不是FLowVisor固有的设计,更像是一个解决现在硬件抽象问题的应急措施,这个方面未来还需要做很多工作。

4. 流空间隔离

每个虚拟网络只能处理他们流空间中的数据流,FLowVisor对OpenFlow消息进行重写,确保每个切片之恩那个控制他自己的流,不能影响别的切片的流。当然,不是所有的规则都能够被重写来满足某个切片的流空间,FLowVisor只能让规则更加详细精确,比如在网络虚拟化之FlowVisor:网络虚拟层(中)这篇文章中用于描述FLowVisor工作原理的例子中,如果Bob的控制器想创建一个规则去影响所有的流,FLowVisor应该重写规则让其只影响TCP数据流。但是FLowVisor不会重写影响22端口的数据流的规则,让其只影响80端口(TCP数据流),在这种情况下,FLowVisor会给控制器发送一个错误消息。

5. 流表项隔离

FLowVisor会统计每个虚拟网络使用的流表项数目,确保其不会超过一个预先给定的值。对于控制器插入到交换机的的每个规则,FLowVisor会给其计数器加一,如果某个流表到期失效,计数器会减一。由于硬件约束,一些交换机会内部扩展规则来满足多个输入端口,FLowVisor需要处理这个情况。OpenFlow协议为FLowVisor协议提供了一个机制来精确的列出交换机中的所有流表项,当控制器超出了流表项预先给定的值,任何新的规则插入都只会收到“table full”的错误提醒消息。

6. OpenFlow控制通道隔离

除了上面提到的所有物理资源外,OpenFlow控制器通道本身也必须虚拟化和隔离。比如,OpenFlow协议中的所有消息包含一个独一无二的传输ID,FLowVisor必须重写这些传输ID以确保不同控制器的消息不会使用同一个ID,类似的,如果一个数据包的处理需要交换机做决定,需要先将数据包存储在交换机队列中,OpenFlow协议使用一个32位的整数去标识这个队列中的不同数据包。FLowVisor需要确保每个交换机只能访问交换机队列中他自己的数据包。

到这里,将FLowVisor的由来,实现原理,隔离机制都分析了一遍,对于未来网络中必不可少的虚拟层有了一些了解和新的想法思路,我相信,书和论文是拓展思路的不二法门,相信FLowVisor只是网络虚拟层的一个先驱,未来将会有更加完善,更加功能强大,更加智能化的系统产生,希望自己能够在这些方面有所贡献。

网络虚拟化之FlowVisor:网络虚拟层(下)的更多相关文章

  1. 网络虚拟化之FlowVisor:网络虚拟层(中)

    上一篇博客网络虚拟化之FlowVisor:网络虚拟层(上)主要对比了计算机虚拟化和网络虚拟化,引出了FLowVisor网络虚拟层,介绍了其一些特性,这篇博文深入讲解FLowVisor的技术. 一. 概 ...

  2. 网络虚拟化之FlowVisor:网络虚拟层(上)

    概念解释:切片:虚拟网络的一个实例 一. 网络虚拟化(虚拟网络) 人类社会的发展在很大方面得益于自然界,飞机受益于鸟,雷达受益于蝙蝠等等,所以专门有个学科为仿生学就是研究和模仿生物的特殊本质,利用生物 ...

  3. 删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

    Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲 ...

  4. Windows Server 2016-Hyper-V网络虚拟化概述

    在 Windows Server 2016 和虚拟机管理器中,Microsoft 提供的端到端网络虚拟化解决方案. 有构成了 Microsoft 的网络虚拟化解决方案的五个主要组件: Windows ...

  5. 《重构网络:SDN架构与实现》Chapter7 SDN与网络虚拟化 随笔

    参考: <重构网络:SDN架构与实现>,作者:杨泽卫.李呈. Chapter7 SDN与网络虚拟化 结构 7.1 网络虚拟化 7.1.1 为什么需要网络虚拟化技术 7.1.2 网络虚拟化 ...

  6. 从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨

    以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网 ...

  7. Hyper-V 网络虚拟化技术细节

    Hyper-V 网络虚拟化技术细节 适用对象:Windows Server 2012 R2 服务器虚拟化能让多个服务器实例在同一台物理主机上同步运行,但各个服务器实例都是相互独立的. 每台虚拟机的运作 ...

  8. 数据中心网络技术新贵:VXLAN与园区网络虚拟化

    摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生. 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发 ...

  9. 网络虚拟化之linux虚拟网络基础

    1 linux虚拟网络基础 1.1 Device 在linux里面devic(设备)与传统网络概念里的物理设备(如交换机.路由器)不同,Linux所说的设备,其背后指的是一个类似于数据结构.内核模块或 ...

随机推荐

  1. 自闭合标签-主动闭合标签-meta-link标签

    <!DOCTYPE html><!--规定标准的html--><!--一个页在只有一对html标签--><!--标签的属性 指定英文--><htm ...

  2. Linxu 监控命令总结

    free –m [root@web1476 ~]# free        total       used       free     shared    buffers     cached M ...

  3. express 创建node服务器

    var express = require('express'); var app = new express(); app.listen(3000); app.get('/',function(re ...

  4. PHP写webservice服务端

    1) WebService技术介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术.仅仅有通过Web Service,client和server才可以自由的用HTTP进行通信.不论 ...

  5. 简述 Python 类中的 __init__、__new__、__call__ 方法

    任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就 ...

  6. 选择如何的系统更能适合App软件开发人员?

    手机这个词早已经同吃喝玩乐一样.成为了人们生活中的必备元素. 尤其是iPhone一炮走红之后,不但手机世界发生了巨大变化,整个科技产业似乎都格局性的改变.直至今日,手机市场的竞争更是日趋白炽化,这就给 ...

  7. 170. Rotate List【medium】

    Given a list, rotate the list to the right by k places, where k is non-negative.   Example Given 1-& ...

  8. 转-linux下配置socks5代理

    简介: 在Linux下有各种各样的代理程序可用,象最常用的Squid,是http/https代理,也能代理ftp请求,但它实际上 是个HTTP代理程序,不是ftp代理,但它能处理ftp代理请求,就象浏 ...

  9. 老司机的应用级监控——spring?actuator

    http://mt.sohu.com/20160824/n465783118.shtml ************************************************ 1什么是sp ...

  10. PBOC联机交易中ARQC及ARPC的计算

    金融IC卡在申请联机交易时,终端会进行发卡行认证,验证卡片的合法性,终端通过GAC得到卡片返回的ARQC,与终端自身产生的ARQC进行比较,如果一致,则说明是由发卡行发行的合法卡片,同时对ARQC及认 ...