软件定义网络 Software Defined Network
-
本文将从以下3个问题对SDN进行阐述
1、为什么要有SDN?
伴随云计算、移动互联网和物联网的蓬勃兴起,应用与业务日益多元,而且快速且多变。网络系统的亚健康问题逐渐明显起来。传统网络工程的弊端日益增加,不能满足生产者的需求。传统网络系统的症状是什么?那就是多元、多变的网络上层应用与业务和相对稳定的网络架构设计以及系统运维之间的矛盾。
一方面、上层应用需要网络在规模扩展和服务能力上具有很大的灵活性,能够体现以客户为中心,提供应用服务与业务体验所需要的自适应性和动态性。以云计算为例,它有三种典型的服务模式,分别是IaaS、PaaS、SaaS。它们都需要按需进行资源分配与调度的能力,需要借助资源池化,网络功能虚拟化,虚拟主机自动恢复和动态可迁移,不同用户或应用之间的安全隔离等机制来确保系统的自动化部署和资源的动态适配。再以运营商的广域网为例,如何才能快速动态响应移动端,类似抖音、微信这样“杀手”级应用的井喷式爆发,对于核心网络带来的巨大压力而不至于应接不暇或捉襟见肘?
另一方面,传统的网络规划和设计是以应用需求相对明确和稳定为前提的。包括网络架构、物理拓扑、IP连通性和安全与QoS策略都是根据明确的应用需求预设定义好的,也就是说它是相对静态的。所以尽管在网络的规划和设计阶段强调了冗余设计,从而可以在运维过程中根据上层应用变化做出一定的调整和应对。但是空间是相对有限的。而且传统网络的部署和运维是以人工为主,自动化为辅,再加上在分布式网络架构中网络类型以及厂商来源的多样性,调整的难度和复杂度是非常大。
要克服和解决上述矛盾,必须分析并找到问题的根源。归结起来有两种原因。
一是传统网络及其设备只可配置、不可编程。例如路由器、交换机和防火墙等,这些基础网络设备只能根据其上的系统版本进行配置,不能对其进行编程,增加、修改或者删除它们的某一个功能。
其次是网络的分布式控制与管理架构带来的制约。网络的部署、配置与管理需要落到每台设备上去手工完成。每个设备都紧耦合了三个平面,分别是管理平面、控制平面和数据平面。管理平面为配置和管理网络设备提供用户访问界面或接口。如命Linux系统的令行界面(终端)和图形化界面。在控制平面中预设了不同网络协议和功能的支持。在管理平面输入配置和管理指令,会在控制平面生成相应的控制表。如数据链路层的MAC交换表,网络层的路由表,MPLS的标签表,ACL访问控制表等。控制平面的相应的控制表则是数据平面转发的依据。即数据平面会根据控制平面相关控制表给出的信息,进行具体的报文处理或转发。
![](https://i-blog.csdnimg.cn/blog_migrate/26e4458841e414da1f1f9d7fec6bd211.png)
关于分布式网络管理和架构的问题。在传统分布式网络架构下,如果网络中新增加了一个应用,那么该应用的数据包所流经的所有网络设备都有可能要在规划和配置上作出相应的改变。显然管理的工作量非常大。特别是当网络中的应用非常多元与多变的时候,网络管理的效率就会变得非常低,从而对上层应用与业务弹性响应也随之变差。
2、SDN是怎么产生的?
从上面的根源分析发现,矛盾的根源不在于网络系统的生命周期,而在于网络系统的设计思想、网络架构以及管理模式。因此,针对上述问题根源。软件定义网络技术引入了两项重要的改变和创新。
- 第一项
首先在分布式网络设备连接之上引入一个集中统一的控制与管理层来实现对网络的全局控制与管理和对上层应用与业务的动态响应。为此需要对网络设备的三大平面进行解耦。在基础网络设备中仅保留原有的数据平面,将控制平面和管理平面划分到新的层面即上述的集中统一的控制与管理层。于是一种基于软件定义的全新网络架构就应运而生
→ ![](https://i-blog.csdnimg.cn/blog_migrate/80c003c80d6d479cc369c1b786cca769.png)
SDN软件定义网路包含三层架构。最上层的是应用层,包含了网路所承载的多元业务与应用。最下层称为网络基础设施层,拥有庞大数量的网络设备。但这些设备并不是传统的网络设备,它们的控制平面和管理平面都已经被拉出来,放在另一个层面——集中控制层。所以基础设施层的设备功能非常简单:只负责包的转发。被拉出来的控制和管理平面都被放到了集中控制层(即SDN集中控制器)。集中控制层在应用层和基础设施层中间起到了承上启下的全局管控作用。
![](https://i-blog.csdnimg.cn/blog_migrate/d24dd8e1926c7c8753fd614c1ecb1e43.png)
其次是能够弹性响应上层应用变化的网络可编程从而能够及时响应上层应用与业务的变化,对网络规划与配置作出自适应的动态调整。在控制器和应用层中间提供了不同的API接口,也称为北向接口。通过这些接口实现控制器和上层应用的交互。在控制器和基础设施层间提供了控制数据平面接口,也称为南向接口。在所有SDN控制器里通过软件定义生成各种流表,都通过南向接口灌输到基础设施层的设备中,引导这些设备的包转发行为。
通过这种“控制”、“管理”、“转发”的分离,网络的控制和管理效率会更高,弹性的响应也会更好。
3、什么是SDN?
SDN是具有集中化管理、控制和转发分离且可编程的新一代网络架构。
SDN作为新一代网络架构,同时引导网络进入全新架构。归纳起来有四个方面:
底层网络设备,通过解耦实现了简单化;
网络的管理,通过集中控制器实现了全局化;
网络的运维,通过SDN南向接口与协议实现了自动化;
网络的应用,通过SDN北向接口与协议实现了人性化。
参考文献:中国大学MOOC(慕课)软件定义网络技术