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

SDN应用路由算法实现工具之Networkx

2015-09-28 by muzi

SDN(Software Defined Networking)是一种新型的网络架构,通过集中式的控制平面管理数据层面的转发等操作。网络的联通性是最基础的需求,为保证网络联通性,控制器需要应用相应的图论算法,计算出转发路径,完成数据转发。在开发SDN应用时,为完成基础的路径计算,时常需要开发者独立编写网络算法,不仅麻烦,性能和代码可复用性还受开发者个人编程水平影响。所以本篇文章将介绍网络算法工具networkx,用于完成路径算法开发工作。

networkx是用于创建、操作和研究复杂网络动态、结构和功能的Python语言包。networkx支持创建简单无向图,有向图和多重图(multigraph);内置了许多标准的图论算法,节点可为任意数据,如图像文件;支持任意的边值维度,功能丰富,简单易用。

由于Networkx代码经过多次测试,性能方面也做了很多的工作,使用Networkx内置的多种图论算法能给开发SDN应用带来很多的便利,可以节省开发时间,降低代码故障率。networkx的安装和使用,读者可从官网文档中快速得到,不加赘述。接下来的内容将简要介绍Networkx的经典图论算法内容, 包括最短路径, KSP(K Shortest Paths)算法和Traversal ...

read more

SDN控制平面发展历史及趋势

2015-08-30 by muzi

SDN的特点之一就是控制平面与数据平面分离,其主张通过集中式的控制器平台实现网络的控制。在SDN架构中,控制平面是逻辑集中的,通过某种协议将控制信息下发至底层的数据平面去执行。所以,控制平台被称为SDN的大脑,指挥整个数据网络的运行。

得益于集中控制的优势,控制平面的存在能使得网络的部署和配置更加智能和简化。支持编程的SDN控制平面使得网络更加智能,更加灵活和易于拓展。控制器通过SDN的南向协议的API可以对数据层面的网元设备下发指令,完成控制平面与数据平面的控制传输。2008年,SDN和OpenFlow一起诞生于斯坦福大学。目前,在SDN领域中,OpenFlow协议是最流行的南向协议之一。

SDN出现初期,控制平面的表现形式更多的是以单实例的控制器出现,实现SDN的协议也是以OpenFlow为主。所以在SDN发展初期,SDN控制器更多指的是OpenFlow控制器。SDN出现之后,ONF[1]成立。ONF(Open Network Foundation),中文名为“开放网络基金会” ,是致力于推进SDN标准化的一个用户驱动的组织。在ONF的白皮书中,提出了SDN的架构标准,SDN架构1.0版本和1.1版本分别如图3.11和 图3.12[2]所示。

sdn architecture
图3.11 SDN网络架构1.0版本

sdnarchiteture1.1
图3 ...

read more

SDN网络感知服务与最短路径应用

2015-07-08 by muzi

本文将介绍RYU中的网络感知服务,与基于网络服务的最短路径应用,主要内容包括网络资源感知模块,网络监控模块和基于网络信息的最短路由模块介绍。在一个真实的网络环境下,需掌握网络的实时动态,包括网络的资源以及网络流量状况,其中网络的信息包括交换机,端口,主机的信息,以及基于流的流量统计信息和基于端口的流量统计信息。在掌握这些关键的网络信息后,控制器就可以根据这些信息作出当下最正确的路由决策,完成网络的通信。

网络资源感知

网络资源感知模块用于感知网络资源的实时变化,包括拓扑信息以及主机信息的变化。任何网络应用,可达性都是最基本的要求。SDN网络的集中控制,使得控制器可以根据全局的信息作出最佳决策而无需在交换节点上采用分布式的路由算法。所以感知网络资源是SDN应用最基础的一项服务。网络资源感知模块源码链接:Network_Awareness.

实现该模块的类为NetworkAwareness类,该类描述如下:

class NetworkAwareness(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
    SLEEP_PERIOD = 10
    IS_UPDATE = True

    def __init__(self, *args, **kwargs):
        super(NetworkAwareness, self).__init__(*args, **kwargs)
        self.topology_api_app ...
read more

初学者的SDN学习之路

2015-06-22 by muzi

Software Defined Network顾名思义软件定义网络,可以简单地分为网络和软件两个部分:软件和网络。此外,通过使用OpenFlow协议来实现SDN是一种较为普遍的方式, 所以本篇将从软件和网络以及OpenFlow三个方面进行介绍。在研究SDN的研究者之中,有相当大比例的网络工程师,他们了解网络,精通网络,然而却并不了解软件开发。除此之外,还有很大比例的研究者是软件工程师,他们软件开发能力出色,然而并不了解网络运作的机制,在接触SDN之前,他们的范围仅仅只是应用层,底层的东西交给全交给主机的协议栈了。还有一部分同学是像我这样,通信工程出身,学的是物理层的编码解码,误码率,电磁波。不像计算机专业那些学生一样,学习各种语言,操弄各种编译器,混迹于github这种全球最大的男性交友网站。剩下最后一种就是又懂网络,又懂编程。这种人,我一般称之为老师,是用来请教问题的,比如地球-某某老师。一般的,他们不屑于看到这种文章,太low。

本篇主要的目标用户是对网络和软件开发都不太了解,或者网络和编程开发只擅长一种的研究者。由于我也是一个初学者,所以仅当做经验分享吧。如有表达不对的地方,敬请指出,万分感谢。

网络

软件定义网络,如果不了解网络,那如何去定义一个你不了解的东西?如果不知道网络中存在的问题 ...

read more