SDN/NFV出现的原因

随着网络规模快速扩大、用户需求动态变化、专用设备日趋庞杂、流量模型难预测等,现有网络无法满足当前社会发展的需求。

为解决互联网在不断发展中出现的新问题,人们采用的传统做法是不断向现有网络添加各种协议。如 NAT、VLAN、VXLAN等,再加上厂商设备的封闭性,总体来说,这样的解决方案只治标不治本。所以,支持网络进行革新的研究者摒弃了上述“打补丁”式的解决思路,转而寻求新型的网络体系结构来解决当前网络存在的问题。

于是SDN/NFV应运而生。

P4

2014年,可编程、协议无关的数据包处理器(Programming Protocol-Independent PacketProcessors,P4)的发布,开启了SDN数据平面可编程的先河。

P4是发展最为迅速的数据平面可编程技术。作为一门高级网络编程语言,P4的思想是用一门通用的编程语言对网络转发逻辑编程,并且下发给转发面的设备,以指导转发层设备(如交换机、网卡、防火墙、过滤器等)处理数据分组。

NFV 的核心思想

将专用的物理网络设备与其上运行的网络功能解耦,即网络功能以软件的形式实现,并运行在工业标准硬件上,以取代当前网络中私有、专用和封闭的设备,企业可以根据需求在网络中的各个位置进行实例化或迁移,而无须安装新设备。

NFV与SDN的区别

SDN技术主要分离网络中交换设备的数据平面和控制平面,数据平面变得灵活可编程,控制平面的功能为控制可编程的数据平面。

NFV技术主要将网络功能设备的功能从专用硬件中解耦出来,并利用软件在通用平台上实现这些功能。

SDN是网络中L1L3的技术,不涉及网络的L4L7,而NFV是L4L7的技术,SDN更为底层,因此不依赖NFV。NFV的部分价值在SDN的帮助下可以发挥得更好,这是因为NFV是L4L7的技术,需要L1~L3的配合,但是这并不意味着NFV一定需要SDN才能工作。

SDN的三大特点

  1. 转控分离;2. 集中式控制;3. 网络可编程

SDN架构

ONF定义的SDN架构由4个平面组成,分别为数据平面、控制平面、应用平面以及管理平面:

《走进SDN/NFV》学习笔记_linux

SDN数据平面的实现

主要有三大类:1. SDN芯片(支持openflow协议的ASIC芯片);2. 硬件交换机(支持openflow协议);3. 软件交换机(openvswitch)。

DPDK

DPDK,全称:数据平面开发套件。

Intel在2010年启动了DPDK技术的开源化进程,于2014年4月正式成立了独立的开源社区平台。如今,DPDK已发展成为SDN和NFV的关键技术,可提供基于Linux的数据平面库、优化的轮询模式驱动(Pull Model Driver,PMD)。

为什么DPDK能够提高网络数据平面的性能?

DPDK应用程序运行在用户空间上,利用自身的数据平面库来收发数据分组,绕过了Linux内核协议栈对数据分组的处理过程。避免了Linux用户态和内核态的切换开销。

SDN控制器的分类

主要有开源SDN控制器和商用SDN控制器两大类。

对于开源SDN控制器,主要有:

  • Ryu,由NTT主导开发的一个开源SDN控制器项目,旨在提供一个健壮又不失灵活性的SDN控制器,使用Python语言开发。
  • Floodlight,是一款基于Java语言的开源SDN控制器,遵循Apache 2.0软件许可,支持OpenFlow协议。
  • OpenDaylight,一个开源的通用SDN平台,提供开放的北向API,同时支持包括OpenFlow在内的多种南向接口协议,底层支持传统交换机和OpenFlow交换机。
  • ONOS,一个分布式开源控制器平台,核心目标是打造一个满足运营商网络要求的开源控制器。采用Java语言进行开发,基于OSGi框架,使用Maven构建项目。

对于商用SDN控制器,主要有:

  • Big Network Controller,是由Big Switch公司推出的商业OpenFlow控制器。BigSwitch公司成立于2010年,是全球SDN领域最具影响力的公司之一。
  • Agile Controller,华为推出的商用SDN控制器,Agile Controller借鉴了OpenDaylight开放平台的设计架构,支持OSGi框架和REST API功能。
  • ZENIC,是中兴通讯推出的一款广义SDN控制器,支持丰富的南向接口协议,对OpenFlow和非OpenFlow交换机进行统一控制。

SDN南向协议:OpenFlow

OpenFlow协议是SDN的主流南向接口协议,目前大规模商用的版本为OpenFlow v1.3,架构如下图:

《走进SDN/NFV》学习笔记_java语言_02

SDN北向接口协议的现状

SDN的本质是控制与转发相分离,目的是为用户提供网络的可编程能力,北向接口提供了SDN中开发者与控制器间的交互能力。从典型场景看,REST API已经成为SDN控制器和云计算管理平台OpenStack对接的支撑性技术。目前,SDN北向接口标准化的前景仍然不甚明朗。

SDN东西向接口协议的现状

为了解决SDN集中式控制带来的问题,控制平面可以由多个控制器实例构成一个大的集群。各控制器实例间通过SDN东西向接口协议实现控制信息的交互,从而根据全局网络信息制定策略,实现逻辑上的集中控制。目前,业界对SDN东西向接口的探讨还处在学术研究阶段。

NFV的架构