生动的SDN基础内容介绍(一)--SDN基础结构

背景

本科毕设的时候做了一套意图驱动的SDN分布式协同测量系统。从接触SDN到最后差不多做完,用了满打满算接近三个月的时间,三个月来基本就是在弄这个。

整体挺复杂的,无论是SDN、意图驱动还是网络测量,之前都没有接触过。因此前序学习就花了很大的功夫,当时也是到处找资料。

然后就想着有时间把之前的一些碰到的坑,或者总结的一些内容分享一下,但是拖着拖着发现有些当时的实验都忘了(应该当时就发出来的呜呜呜)。。。

尽量地写一些吧,我接触这些也不是非常深,如果有错误欢迎指出。

SDN是什么

SDN是软件定义网络software defined networking的简称。

先放一张SDN的结构图:
SDN结构图

看不懂,没事,咱继续往下看。

首先先介绍一下为啥要有SDN,SDN的出现是为啥。

SDN与传统网络的区别

传统网络设备中负责智能决策的控制平面和负责高速转发的数据平面集合在一起都由硬件厂商进行控制,设备可编程能力弱。由于厂商设备的封闭性人们想添加新协议的行为收到了束缚不够灵活。

看完这句话后可能有点懵,先理解一下概念:

什么叫控制平面呢:控制平面决定数据报在端对端的路径上应该如何路由,即路由。
什么叫数据平面呢:数据平面决定数据报在每个路由器上该如何从input port转发到output port中,即转发。

可以把控制平面理解为大脑,数据平面理解为身体。大脑进行各种决策,做完决策后将指令下发给身体,身体不需要思考只需要按照指令执行各种动作。传统网络中每一台路由器都是由控制平面来作决策决定数据报的去向,而真正对数据报进行物理意义上的操作的是数据平面。

传统网络可以理解为不同人之间进行交流与互动,把每个人想象成路由器,人与人之间的动作交流想象成数据报的传递。但同时做路由器的厂商很多,每个厂商都有自己的接口,即每个人说的语言可能还不太一样。

这时候如果要干活了,领导给每个人分配任务。领导先组织一下语言跟A用中文交代一下任务,巴拉巴拉说了五分钟后,再跟B去交代,好不容易说完之后再跟C用英文交代任务。。。等过了半天终于都交代完了,领导抹了把汗。这时候领导突然想到自己忘了点事情没交待,坏了,还得分别交代一遍。

过了两天大家的活干完了,领导要分配新任务,跟上段说的一样再重新走一遍流程。折腾一段时间后领导累坏了,领导说不行,我得想个办法。领导想了个残忍的办法,把芯片植入到每个人的脑袋里,然后这个芯片和领导脑子里的芯片连在了一起。以后只要领导想干啥,在脑袋里过一遍流程(编一遍程序),然后每个人不用思考,他们的身体直接按着领导给的流程干活(好恐怖。。)。领导想干就干想停就停,美滋滋。

这种方法的优点有几个:
1、解决了需要挨个谈话交代任务的问题,这次只需要交代一遍。
2、解决了不同语言的问题,毕竟直接思维交流就可以了。
3、解决了任务的低变动性,以后改任务的时候要省心多了。
4、领导随时随刻都能知道每个人干的咋样(毕竟都植入芯片了),领导美滋滋,都不用挨个去问就知道大家干的咋样了。
而且大家该咋干活咋干活,身体是不变的,领导只是把大家的思维统一调控了。

上述就是传统网络与SDN的最大的几个区别,也是SDN的优点。

SDN的优点

上一段提到了SDN的几个优点,以更学术的话来说就是:

1、SDN只需要编程一次就可以把更新好的框架/任务下发给各个交换机,而不需要像传统网络中挨个交换机更新。

2、传统的网络基础设施,可以说是各种厂商、平台和协议解决方案的大杂烩,因为协议的增多,受到诸多控制。而SDN控制平面与数据平面打破了这种较为隔离的情况。

3、SDN大大增强了网络框架的灵活性,使得网络管理更为便捷。

4、控制的逻辑中心化使用户和运营商等可以通过控制器获取全局网络信息,从而优化网络,提升网络性能。

软件定义网络虽然重构了网络控制平面和数据平面,但是并没有改变底层的IP协议,这使得传统网络测量研究的成果可以应用在软件定义网络测量中,并且结合SDN的优势以更加灵活的方式实现。

到这里就差不多了解SDN为什么出现了吧。

SDN中各部分的作用

介绍完为啥要用SDN,那么就来了解下SDN里面都有啥。

SDN架构图二
回过头来看上面的SDN架构图。

转发平面里的网络设备其实就是一个个人,控制平面中的SDN控制器就是领导。那么应用平面又是什么呢,应用平面可以想象为甲方。甲方与领导有一套自己的交流方法(也就是北向接口,后续意图驱动会介绍),用这套交流方法给领导派活,领导用芯片进行思维上的控制(也就是南向接口),控制人们干活。

这样看是不是就生动(恐怖)多了。

自底向上看:

1、数据平面(转发平面):
由若干网元组成,每个网元包含一个或多个SDN数据路径,网元是一个被管理资源在逻辑上的抽象集合。每个SDN数据路径是一个逻辑上的网络设备(没有控制能力只单纯用来转发和处理数据)。

2、南向接口:
控制平面与数据平面的通信协议,一般是OpenFlow。

3、控制平面:
承担两个任务:一是将SDN应用层请求转换到SDN数据路径,二是为SDN应用提供底层网络的抽象模型。一个SDN控制器包含北向接口代理、SDN控制逻辑和控制数据平面接口驱动三个部分。

其实就是干三件事:上接应用的指示,自己做决策,然后统一调控让数据平面干活。

4、北向接口:
应用平面与控制平面的通信协议。

5、应用平面:
由若干SDN应用构成,应用可通过北向接口和SDN控制器交互,可通过可编程方式把需要请求的网络行为给控制器。一个SDN应用可以对本身功能进行封装来对外提供北向代理接口(即更高级的北向接口)。一个SDN应用可包含多个北向接口。

如果人们想进行网络管理,那么网络管理应用会下发相应的指令给控制器,然后控制器内部走一遍逻辑,把要干的话明确好,直接传给数据平面让数据平面干活。

SDN的关键特点

内容来自于《计算机网络自顶向下方法》这本书:
1、基于流的转发
2、数据平面与控制平面分离
3、网络控制功能:位于数据平面交换机外部
4、可编程的网络

2、3、4都很好理解,那么1为什么叫做“基于流的转发”呢。
由于我的毕设是关于网络测量的,网络测量基于数据流,刚开始接触的时候我对“流”flow这个概念很是模糊。

我不知道流的定义是什么样的,后来才知道传统网络中流的定义就是五元组相同的数据包组成的一组数据。

五元组定义数据流:
{ 源IP,目的IP,源端口,目的端口,协议 }

但是在SDN中,不只有五元组,只要是在一定时间内相同匹配域匹配到的数据包都属于同一条流(我是这么理解的)。

SDN流表项的数据统计也都是基于流的,我觉得SDN的操作也基本都是基于流的。

匹配域和流表项的概念在后面介绍OpenFlow协议的时候会讲解。

SDN的缺点

SDN在2008年被提出,经过了十几年的研究后仍无法撼动传统网络的地位,目前只能在一些中小规模的网络环境中使用,比如说数据中心或者园区的网络。

这说明SDN还是存在一些问题的。

我就说一下我切身体会的问题吧:资源和效率。

资源是流表项的资源,效率是流表项的下发与查询效率。

不清楚流表项的同学可以看下一章对OpenFlow协议的介绍。

SDN交换机中的流表项资源比较少,虽然现在市面上的SDN交换机里面都有几千个流表项,但是只是看起来多而已。交换机得同时负责正常的网络转发、应用的网络管理、还有时不时处理下发的网络测量任务,这样分给各个方向的流表项就不多了。所以流表项资源该如何省着用也是现在的一个研究热点。

我实习的时候和我们组的Leader讨论过SDN,他说最新出来的SDN交换机说是有2w条流表项,但是业内在应用的时候用到7、8000流表项的时候效率就大幅度地降低了。我在实现毕设的时候也发现大规模的下发与查询会有很高的延迟,并对网络本身产生一定的负担。

我认为SDN这个理念与架构解决了很多的问题,但是现在可能处于一种硬件跟不上理念的阶段,如果未来在硬件层面能有一定的突破,我认为SDN会更加大放光彩。

总结

本章介绍了SDN的最基础的知识,下一章会介绍一些OpenFlow协议的基础知识。
https://blog.csdn.net/weixin_44480014/article/details/123242026

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值