P4:真正的SDN还遥远吗

2016-03-23 by muzi

OpenFlow协议作为SDN最流行的南向协议,得到了很多的关注,目前发展也良好,但OpenFlow并不完美,OpeFlow交换机还不能提供更好的可编程能力。P4作为新的网络编程语言很好的弥补这个缺陷。P4会改变网络吗?是否能带来具有完全可编程能力的SDN?还是仅仅是学术界的宠儿?本文将介绍协议独立数据包处理编程语言P4,其中包括其简介、原理和发展趋势,希望笔者能带来一些有意思的观点。

简介

P4(Programming protocol-independent packet processors)[1]是由Pat Bosshart等人提出来的高级“协议独立数据包处理编程语言”,如OpenFlow一样是一种南向协议,但是其范围要比OpenFlow要大。不仅可以指导数据流进行转发,还可以对交换机等转发设备的数据处理流程进行软件编程定义,是真正意义上的完全SDN。值得注意的是,P4论文作者中还有斯坦福大学的Nick McKeown教授和普林斯顿大学的Jennifer Rexford教授两位业界大牛的名字。Nick教授是SDN的提出者之一,一直是SDN学术领域顶尖的存在;而后者Jennifer教授也发表了4D[2]等诸多重要的SDN相关论文,更提出了网络编程语言Frenetic[3],同样是业界的先驱。两位教授也是P4组织的主要推动者之一。目前,P4语言作为一种潜在的OpenFlow2.0的发展方向在努力发展。

原理

与POF提出的目的类似,P4提出的目的也是为了解决OpenFlow编程能力不足以及其设计本身所带来的可拓展性差的难题。自OpenFlow1.0发布以来,其版本目前已经演进到1 ...

read more

POF:更理想的SDN?

2016-03-12 by muzi

OpenFlow协议实现的SDN目前已经得到了应用和推广,但OpenFlow并不完美,OpeFlow交换机还不能提供更好的可编程能力。POF作为一种新的南向协议,是OpenFlow的未来方向?还是只是一个乌托邦?本文将介绍由华为提出的协议无关转发POF,其中包括其简介、原理、原型和应用场景以及最后的发展趋势,希望能带来一些有意思的想法。

简介

POF(Protocol Oblivious Forwarding)[1]是由华为提出的SDN南向协议,是一种SDN实现方式,中文意思为协议无关转发。与OpenFlow相似,在POF定义的架构中分为控制平面的POF控制器和和数据平面POF转发元件(Forwarding Element)。在POF架构中,POF交换机并没有协议的概念,它仅在POF控制器的指导下通过{offset, length}来定位数据、匹配并执行对应的操作,从而完成数据处理。此举使得交换机可以在不关心协议的情况下完成数据的处理,使得在支持新协议时无需对交换机进行升级或购买新设备,仅需通过控制器下发对应流表项即可,大大加快了网络创新的进程。

原理

读者可能会有疑问:OpenFlow所实现的SDN目前不是发展挺好的吗,POF相比OpenFlow有什么优点呢?

在OpenFlow1.0版本推出时,普遍被认为只有12个匹配域无法适应多网络场景的需求。但随着OpenFlow版本的推进,发展到OpenFlow1.3版本时已经有了40个匹配域,已经可以支持大部分的协议字段匹配。然而始终还会有更多的协议需要支持,所以这个增长趋势不会停止。不断增多的匹配域 ...

read more

SDN组网相关解决方案

2016-02-14 by muzi

SDN作为一种新的网络架构,正被应用到越来越多的网络场景中。而网络的关键在于通信,如何使得SDN网络正常运行,并且能够和传统网络相互通信是SDN组网需要解决的基本问题。本文将介绍SDN组网相关解决方案中的数据平面到控制平面的组网解决方案、多SDN域组网解决方案和SDN网络与传统网络组网通信的解决方案。

SDN数据平面到控制平面组网

目前为止,在数据层面到控制到控制平面之间的组网方案主要有两大类:带外组网和带内(in-band)组网。

  • 带外(out-band)组网:

    数据平面到控制平面的控制数据通过专门的控制网络,而不经过数据平面转发,从而将数据平面的数据和控制平面数据隔离运行在两张独立的网络中。在带外组网方案中,每个交换机都有连接到控制平面的专属线路,而无需通过其他数据平面交换机转发。带外组网可以减少组网的难度和运维的难度。缺点是交换机多时,链路数量较多。

图1. out-band组网方案

  • 带内(in-band)组网

    带内组网指的是控制数据和数据平面数据可以共享一个物理链路。即数据平面的有些交换机直连控制器,而其他的交换机的需要经过数据平面的链路才能到达控制器。非直交换机的控制数据需要通过数据平面的链路进行转发,并通过直连交换机转发到控制器。此种组网方式可以减少许多交换机到控制器的链路数量,但是配置带内组网比较麻烦,可靠性较低,维护成本也相对要高。

    图2. in-band组网方案

多SDN域组网方案

当网络规模过大时,需要部署多域的组网方案。其中每个SDN域都由各自的控制平面控制。多域组网方案有水平架构和垂直架构两种。水平架构形式的多域组网方案中,域控制平面之间的关系是对等的。而在垂直架构中,则划分为域控制器层和超级控制器层 ...

read more

如何提升SDN可拓展性

2016-01-20 by muzi

Software Defined Networking是一种控制平面和数据平面分离的可编程的网络架构,目前已经有许多商业落地案例。在部署SDN时,往往会因SDN控制器性能不足而限制了SDN的可拓展性。因此SDN网络的规模往往不大。针对此问题,笔者在研究相关文献之后,总结了相关的解决方案,并通过本文来记录和分享。

解决方案

SDN分离了网络的控制平面和数据平面,而控制平面是SDN的大脑,其能力极大地影响着SDN网络的可拓展性。所以基本上,解决方案都是围绕如何给控制平面减压或者提升控制平面的能力来实现。根据控制器数目的不同,解决方案可以分为如下两类:

  • 单控制器节点的性能拓展
  • 部署多控制器系统

单控制器节点的性能拓展

单控制器节点的性能拓展是最常见的方式之一,包括控制器采用多线程,负载下放等解决方案。多线程等解决方案属于软件开发范畴,不属于本文讨论范围。通过负载下放(offload)等方式可以降低网络对控制平面的依赖,减少控制平面的负载和压力,从而可以管理更多的交换机,进而提升SDN网络的可拓展性。DIFANE和DoveFlow就是典型的代表。

DIFANE[1]是DIstributed Flow Architecture for Networked Enterprises的缩写。 在DIFANE架构中,其数据平面的所有数据均由数据平面完成,而控制器仅负责策略的计算,而不会直接响应Packet_in。其通过减轻控制平面的负载的方式,从而增强了SDN的可拓展性。

difane
图1.DIFANE ...

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