码农学ODL之SDN入门篇

本文作为码农学ODL系列的SDN基础入门篇,分为两部分。第一部分,主要讲述SDN是什么,改变了什么,架构是什么样的,第二部分,简要介绍如何去学习SDN。

1.什么是SDN
SDN(Software Define Network) ,即为软件定义网络,可以看成网络界的操作系统。从SDN的提出至今,其内涵和外延也不断地发生变化,越来越多的人认为“可以集中控制、开放可编程和转控分离的网络”就是SDN网络,并且还延伸出软件定义计算、软件定义存储以及软件定义安全等。SDN加快了新业务引入的速度,提升了网络自动化运维能力,同时,也降低了运营成本。SDN的基础知识如下图所示,下面各小节内容将根据该图内容进行展开论述:

1.1.SDN基础
1.1.1.SDN本质及核心
我们知道,传统网络中的路由器也存在控制平面和转发平面,在高端的路由器或交换机还采用物理分离,主控板上的CPU不负责报文转发,专注于系统的控制;而业务板则专注于数据报文转发。所以路由器或交换机内的控制平面与转发平面相对独立又协同工作,如图所示:

但这种分离是封闭在被称为“盒子”的交换机或路由器上,不可编程;另一方面,从IP网络的维度来考虑,采用的是分布式控制的方式:在控制面,每台路由器彼此学习路由信息,建立各自的路由转发表;在数据面,每台路由器收到一个IP包后,根据自己的路由转发表做IP转发;

IP网络的这种工作方式带来了运维成本高、业务上线慢等问题,并越来越难以满足新业务的需求,传统上通过添加新协议、新设备等手段来缓解问题的方式,收益越来越少。穷则思变,许多人产生了革命的想法,现有的网络架构既然无法继续演进发展,为何不推倒重来,重新定义网络呢?真可谓“时势造英雄”,2006年斯坦福大学Nick McKeown教授为首的研究团队提出了OpenFlow的概念用于校园网络的试验创新,后续基于OpenFlow给网络带来可编程的特性,SDN(Software Defined Network)的概念应运而生。

SDN将原来封闭在“盒子”的控制平面抽取出来形成一个网络部件,称之为SDN控制器,这个控制器完全由软件来实现,控制网络中的所有设备,如同网络的大脑,而原来的“盒子”只需要听从SDN控制器的命令进行转发就可以了。在SDN的理念下,所有我们常见的路由器、交换机等设备都变成了统一的转发器,而所有的转发器都直接接受SDN控制器的指挥,控制器和转发设备间的接口就是OpenFlow协议。其简单模型如图所示:

因此,我们说它是一种网络设计理念,即利用IT技术来软化网络,给网络领域带来变革,而非某种具体的技术,其核心为:转控分离、集中控制、开放可编程。所以SDN的提出,并不说传统方法满足不了什么业务需求,而只是通过SDN可以快速部署、缩短业务上线时间,能够做得更快更好而已。其本质是网络软件化,提高网络的可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。
1.1.2.分类
随着SDN在产业界设备制造商和运营商的实践不断展开,SDN的概念不断模糊,任何允许软件对网络可以进行编程或者配置的网络架构,并且具体实现的技术和接口协议是各种各样的。SDN也逐渐形成不同的发展路线:

首先,采用OpenFlow标准,转控分离、集中控制,主张硬件标准化,控制上移到由软件实现的控制器上,打破原有网络的封闭状态,受到初创公司和学院科研单位的欢迎,可以看作为革命型或狭义SDN。

其次,设备提供商感受到压力,希望在市场继续保持优势,另一方面,运营商即想拥抱新理念,也想保护现有的投资,这样希望针对现有网络进行平滑的过渡,所以采取大多不动设备上的控制智能,控制器(只能说是一种伪控制器)与转发设备间的接口采用NETCONF/SNMP协议,提出更为广泛的SDN架构,可以看作演进型或广义SDN。

最后,还有一种发展路线,它以现有IP网络为基础设施,在其上建立叠加的逻辑网络,实现网络资源的虚拟化,本质上属于软件定义的虚拟网络。这一思路被称为Overlay方案。

总的说来,这3种发展路线都能实现集中控制、可编程和开放接口,但在灵活性、使用难度以及用户业务场景等方面存在不同之处。其优缺点如下表所示:

1.2.SDN架构
1.2.1.ONF定义的SDN架构
ONF定义的SDN架构主要分为应用层、控制器层和基础设施层,其中,应用层聚焦网络业务逻辑开发,负责资源编排;控制器层进行全局网络的管理;基础设施层为各种网络设备,负责数据的转发。如图所示:

从控制器层的角度来说,与应用层的接口被为北向接口(NBI, Northbound Interface),与基础设施之间的接口被定义为南向接口(SBI, Southbound Interface)。

通过对北向接口的封装,应用层以软件编程的形式调用各种网络资源和把控整个网络的资源状态,并对资源进行统一调度。理想情况下,应用层封装所有的“How”操作,向用户隐藏了网络相关的技术信息。上层应用在调用应用层的服务时,只需描述想要“What”就可以了。但当前北向接口方面还缺少业界公认的标准。其主要原因是北向接口直接为业务应用服务,其设计需密切联系业务应用需求,具有多样化的特征,很难统一。

ONF定义的SDN架构中南向接口协议是OpenFlow,用于控制器和交换机之间的通信,控制器可以通过OpenFlow下发流表控制交换机,交换机也可以反馈信息给控制器,同时,OpenFlow也规定了交换机对报文的转发方式。

总的来说,SDN架构不仅简化了网络设计与操作,而且也极大简化了网络设备本身,因为这些设备不再需要解析和处理数以千计的协议标准,只需接受来自控制器的指令。更为重要的是,网络管理员可以通过编程的方式来集中控制数以千计的设备,而不用针对每台设备进行手工配置,有效地缩短了业务上线的时间。

1.2.2.SDN平台实现框架
理想是丰满的,但现实往往呈现出很骨感,学术界提出的正统SDN,在产业界和运营商的不断实践下,南向接口不仅仅局限在OpenFlow,也包含了NETCONF、SNMP等协议。SDN不同的发展路线决定了SDN开发技术架构如图所示:

SDN体系架构分为4层,分别为应用层、业务编排层、控制层和转发层。其中,应用层专注于描述用户业务需求,而业务编排层专注于业务需求的“How”操作封装。需要说明的是,在运营商网络的SDN改造部署过程,基本上采用平滑演进的策略进行,用到的协议就不再单纯使用OpenFlow了。

2.如何学SDN
了解了SDN的基本概念、架构以及应用场景后,如何去学习SDN呢,我们先来分析下码农与SDN的结合点,从上面的分析可知,SDN的核心在于“转控分离、集中控制和开放可编程”,提到“集中控制和开放可编程”,码农的脑海中可能迅速呈现出类似下图所示的内容:

但是当提到“转控分离”,可能是一脸的迷茫,我连网卡是如何工作都不是很清楚,何况交换机、路由器呢? 下面针对码农的“强于编程,弱在网络”的特点,大致上给出了初步的学习路线,并列出了学习中容易产生困惑的问题。

2.1.学习路线
学习路线主要分基础网络知识、技术准备、SDN基础和SDN实战等4个阶段。如下图所示:

1.基础网络知识:又分网络设备、网络协议和网络拓扑等3个方面。首先,网络设备这部分内容要清楚每种设备的问题空间、基本原理以及优缺点;其次,网络协议的研究可以根据网络的发展史,要清楚IP网络的基本原理、客户请求到服务器路径选择等;最后,了解公司所在网络的基本信息,数据中心网络的物理部署情况等。

2.技术准备:分为工具、框架和技术等3个方面。这里主要列出SDN学习需要具备的基础技术能力,不同人员可能具有不同的技术背景,已全部掌握的人员可直接跳到SDN基础的学习,没有掌握的人员再补充了解相关技术即可。

3.SDN基础:分为OpenFlow、控制器和工具等3个方面。首先,了解OpenFlow标准、控制器和交换机之间的工作流程等;其次,当前已经有很多的开源控制器,如OpenDaylight、ONOS等,需要了解其基本概念、基础架构等信息,如MD-SAL、Yang等;最后,SDN的学习,还需要了解像Mininet之类的工具,以进行相关的实验。

4.SDN实战:分为实例学习、特性开发和云结合等3个方面。首先,通过控制器的Sample来了解其工作原理和特性,了解整个开发、测试、部署过程;其次,挑选可行的特性进行实际操练,掌握控制器开发的全流程;最后,与OpenStack之类的云平台进行融合。

2.2.易混淆的几个问题
后续码农学习ODL的系列文章直接从SDN实战开始,所以在SDN基础部分的学习过程中可能会遇到一些问题,这里将我们遇到的易混淆的问题罗列出来,与大家共享:
1. northbound southbound or consumer producer
南向和北向是传统网络中的术语,可以从网络工程师的角度来理解,而如果从软件工程师的角度来说,称为生产者、消费者。

  1. RESTCONF、NETCONF是南向协议还是北向协议?
    首先就RESTCONF和NETCONF本身作为协议来讲,是不区分北向协议还是南向协议的;其次,在实际的应用过程中,通常情况下RESTCONF用在北向,NETCONF用在南向,但同时也注意到有些厂家控制器提供的北向接口使用的是NETCONF。

3.Internal or external system
基于ODL的二次开发时,如果提供API的接口能够满足当前需求,那么只需基于REST API开发external System(外置式应用),如果提供的API接口不能满足当前需求,则需要进行Internal system(内置式)的开发,可以理解为插件。

4.主动模式 or 被动模式
SDN控制有两种工作模式:主动和被动。主动模式下,控制器将flow table信息一次性下发到交换机;被动模式下,在数据平面收到新的数据包时,控制器才将相关flow table信息下发到交换机。通常情况下,往往预先下发部分流表信息。

作者:SDNLAB--SDN/NFV开发团队
简介:致力于SDN/NFV等前沿技术的研究、应用与实践,已研发推出UMS网络流量监控、SDN智能流量调度、NFV管理编排等产品。专注为高校、企业、政府以及电信运营商等客户提供定制化及个性化的SDN/NFV系统开发服务。

本文转自d1net(转载)

时间: 2024-11-03 14:44:54

码农学ODL之SDN入门篇的相关文章

【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建

孔壹学院:国内区块链职业教育引领品牌. 作者:黎跃春,孔壹学院创始人,区块链.高可用架构师 微信:liyc1215 区块链博客:http://liyuechun.org 在阅读这篇文章之前,你需要先学习[IPFS + 区块链 系列] 入门篇 - IPFS环境配置这篇文章. 目录 1. 如何在IPFS新增一个文件 1.1 新建file.txt文件 1.2 查看ipfs相关命令 1.3 将file.txt添加到ipfs节点 2. 通过ipfs创建目录存储文件 3. 如何在IPFS新增一个目录 3.1

php字符串操作函数入门篇

php教程字符串操作函数入门篇 1.字符串的定义与显示 定义:通过"",''来标志 显示:echo()和print(),但print()具有返回值值,1,而echo()没有,但echo比print()要快,print()能用在复合语句中. 2.字符串的格式化 printf(string $format[,mixed$args]) 第一参数是格式字符串,$args是要替换进来的值,prinf("%d",$num); 说明,如果想打印一个"%",必须

spring boot(一):入门篇

           构建微服务:Spring boot 入门篇   什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适).  

ASP漏洞全接触-入门篇

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果

扩展你的PHP之入门篇

1. 扩展你的php2. 扩展的3种方式3. extension dll方式的扩展4. 小结 首先注意, 以下所有的一切皆在win下进行, 使用的工具的vc++6.0.扩展你的PHPPHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展. 扩展的3种方式External ModulesBuilt-in ModulesThe Zend Engine3种方式的优缺点可参见PHP手册.http://www.php.n

Flash动画基础教程①入门篇

flash动画|基础教程 這個教程是本人的一些經驗之談,為了初學者的入門教程,未經本人許可請勿轉載!謝謝 Flash动画基础教程--入门篇①首先我们来说说什么是Flash? Flash是Macromedia公司出品的软件,对于Flash是什么很多的描述,大致是"交互性矢量多媒体制作软件"的意思!首先,它是一种多媒体制作软件,Flash的产品往往都是一些"有声有色"给人视觉冲击的动画.其次,Flash是以矢量图为基础的,矢量图最大的特点就是它能无限的缩放,不会因为图像

.NET Remoting程序开发入门篇

程序 一.Remoting基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程.这个进程形成了应用程序代码和数据周围的一道边界.如果不采用进程间

【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (上篇)-js-ipfs-api

孔壹学院:国内区块链职业教育引领品牌. 作者:黎跃春,孔壹学院创始人,区块链.高可用架构师 微信:liyc1215 区块链博客:http://liyuechun.org Ebay项目 基于以太坊Ethereum & IPFS的去中心化Ebay区块链项目详情链接 目录 1. 内容简介 2. IPFS-HTTP效果图 3. 实现步骤 3.1 安装create-react-app 3.2 React项目创建 3.3 运行React项目 3.4 浏览项目 3.5 安装ipfs-api 3.6 完成UI逻

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明. 附上: 官网地址