码农学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

南向和北向是传统网络中的术语,可以从网络工程师的角度来理解,而如果从软件工程师的角度来说,称为生产者、消费者。

2. 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(SDNLAB)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

19440
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

11210
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

26440
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

15020
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

26630
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.1K20
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

43230
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

50620
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13150
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

17230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励