SDN与网络虚拟化

2015-12-29 by muzi

网络虚拟化是一种重要的网络技术,该技术可在物理网络上虚拟多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源切片,从而提高网络资源利用率,实现弹性的网络。SDN的出现使得网络虚拟化的实现更加灵活和高效,同时网络虚拟化也成为SDN应用中的重量级应用。本文将介绍SDN与网络虚拟化的关系以及通过SDN实现网络虚拟化的方法,其中第二部分内容将从虚拟化平台,网络资源虚拟化和网络隔离三个方面介绍。

SDN与网络虚拟化

由于早期成功的的SDN方案中网络虚拟化案例较多,有的读者可能会认为SDN和网络虚拟化是同一个层面的,然而这是一个错误的说法。SDN不是网络虚拟化,网络虚拟化也不是SDN。SDN是一种集中控制的网络架构,可将网络划分为数据层面和控制层面。而网络虚拟化是一种网络技术,可以在物理拓扑上创建虚拟网络。传统的网络虚拟化部署需要手动逐跳部署,其效率低下,人力成本很高。而在数据中心等场景中,为实现快速部署和动态调整,必须使用自动化的业务部署。SDN的出现给网络虚拟化业务部署提供了新的解决方案。通过集中控制的方式,网络管理员可以通过控制器的API来编写程序,从而实现自动化的业务部署,大大缩短业务部署周期,同时也实现随需动态调整。

随着IaaS的发展,数据中心网络对网络虚拟化技术的需求将会越来越强烈。SDN出现不久后,SDN初创公司Nicira就开发了网络虚拟化产品NVP(Network Virtualization Platform)。Nicira被VMware收购之后,VMware结合NVP和自己的产品vCloud Networking and Security (vCNS),推出了VMware的网络虚拟化和安全产品NSX。NSX可以为数据中心提供软件定义化的网络虚拟化服务。由于网络虚拟化是SDN早期少数几个可以落地的应用,所以大众很容易将网络虚拟化和SDN弄混淆。正如前面所说 ...

read more

基于流量的SDN最短路径转发应用

2015-11-30 by muzi

网络的转发是通信的基本功能,其完成信息在网络中传递,实现有序的数据交换。通过SDN控制器的集中控制,可以轻松实现基础的转发算法有二层MAC学习转发和基于跳数的最短路径算法。然而,网络跳数并不是决定路径优劣的唯一状态。除了跳数以外,还有带宽,时延等标准。本文将介绍如何通过SDN控制器Ryu开发基于流量的最短路径转发应用。

Forwarding Algorithm

目前基于流量的路由算法基本的解决思路有两种:

(1) 首先基于跳数计算最优K条路径,然后在这些路径中选择可用带宽最大的路径。

(2) 首先基于跳数计算最优路径,归一化路径的评价分数,然后基于流量计算最优路径,归一化基于带宽的评价;设置跳数和带宽的权重,对基于跳数和带宽的评分求其加权总和;按照加权求和值降序排序,取前K条作为最优评价路径。

本文以第一种算法为例,介绍基于网络流量的最短路径转发应用开发。第二种算法基于前者的基础修改即可完成。

Network Awareness

首先我们需要编写一个网络感知应用,用于发现网络的资源,包括节点,链路,终端主机等。并根据拓扑信息计算基于条数的最短路径。开发此应用基本步骤如下:

  • 创建继承app_manager.RyuApp的应用network_awareness
  • 从topology.switches获取拓扑信息,包括交换机节点信息,链路信息
  • 使用Networkx 创建拓扑图的对象,用于存储网络拓扑
  • 使用Networkx的函数all_simple_paths(G, source ...
read more

基于Ryu打造自定义控制器

2015-11-20 by muzi

控制器是SDN网络中最重要的组成部分。在开发SDN应用时,需要基于某一个控制器开发,而大部分开源控制器都是一个框架或者平台,更多个性化的设置和应用需要开发者自己完成。对于开发者而言,一个自定义的控制器可以让控制器更加适配开发场景,发挥控制器最大的作用,提高开发效率。本篇文章将以Ryu为例,介绍如何修改Ryu源码,打造属于自己风格的自定义控制器。其内容包括自定义参数,事件,启动顺序,报文,协议和底层服务。

自定义参数

很多应用都会涉及相关参数的输入才能运行, 如OpenFlow协议的启动需要配置监听端口。在编写新应用时,需要获取相关参数的值来运行应用,所以需要开发应用时注册参数。目前已有的参数可以通过ryu-manager -h查看。而不同的应用注册的参数很可能名字一样,这就有可能发生冲突。为解决这个问题,Ryu采用了OpenStack的Oslo库,支持全局的命令注册和解析。Oslo支持全局的命令注册和解析,成功解除了命令冲突的难题,也大大降低了参数注册和解析的难度。注册新参数的方法很简单,只需要新建一个文件,然后按照如下案例完成注册,最后再在cmd/manager.py中import即可。

from ryu import cfg

CONF = cfg.CONF
CONF.register_cli_opts([
    cfg.StrOpt ...
read more

即兴戏剧与沟通/通信

2015-11-14 by muzi

前言

即兴剧第一次出现在我的世界,是2015年3月份的时候。那时大学校园里春意盎然,遍地都是刚褪去厚重冬衣的男男女女,走在大道上欢声谈笑着,一转眼, 又到了一年一度交配的季节。我裹着厚厚的风衣,戴着黑框眼镜,面带微笑地欣赏着这美好时光。脚上那经历一个冬天磨砺的大靴子,在阳光的照耀下,也变得崭新了一些。

“同学,参加即兴戏剧社吗?”一个甜美的声音吸引了我的注意。今天是社团招新的日子,校园大道上都是社团在摇旗呐喊,特别热闹。我寻声望去,却有点小失望。简陋的展台,只有一张桌子,几个穿着并不像演员的人在那里对着我憨笑,不免让我觉得有些不过去有些不给面子,有些尴尬。

“什么是即兴剧啊?”我自小个性张扬,梦想是当一面导演,然后导演出传世的经典。在经过快20年的努力,饱读诗书十余载,学习街舞,在KTV当麦霸之后,终于成为了北京电影学院旁边的北京邮电大学的一个学通信工程的学生。高中就渴望着能考到一个离北影近一些的学校,这样平时就可以到对面蹭课了。虽然现实有些让人失望,但是梦想总是要有的,只要留住梦想的火种,总有一天,它就会熄灭。在熄灭之前,任何时候,我都做好了燎原的准备。不管是什么剧,抓住就是机会啊,学习,表演 ...

read more

SDN东西向现状简介

2015-10-29 by muzi

What is SDN West-East Interface

在SDN架构中,控制平面掌控全局网络的资源,控制数据平面的转发等功能,尤其重要,所以控制平面的性能对整体网络的性能有直接的影响。以前控制平面多以单例控制器为主,控制平面能力欠缺成为SDN网络规模受限的最大原因之一。 后来OpenDayLight,ONOS等控制器的出现,使用了集群技术,使得SDN控制平面性能得到了提升,是当下解决SDN控制平面性能不足的主要解决方案之一。

然而,这样的解决方案只能用于同一控制器之间的性能扩展,无法完成异构控制器之间的协同工作。此外,某些场景对于安全,隐私方面的考虑,需要隐藏网络内部的细节,所以还需要有SDN域的概念。如何完成跨域之间的流量处理,实现多异构控制器之间的协同工作是未来研究的方向之一,笔者将其归类为SDN控制平面的东西向接口。SDN控制平面的南向接口面对数据平面,北向接口面向应用,容易理解,控制器之间的接口称之为东西向接口,用于完成控制器之间的通信。

West-East
Figure1. West-East Interface of SDN

Why SDN need West-East Interface

SDN东西向接口是定义控制器之间通信的接口。由于单控制器能力有限,为满足大规模和可拓展性要求,东西向接口的研究成为下一个SDN研究领域。目前对于SDN东西向接口的研究还处于初级阶段,还缺少行业标准。标准的SDN东西向接口应与SDN控制器解耦 ...

read more