背景
传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以大家希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以像升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。
SDN是什么?
SDN(Software Defined Network,软件定义网络)是一种新兴的控制与转发分离并直接可编程的网络架构。
传统网络设备紧耦合的网络架构被分拆成应用、控制、转发三层分离的架构。控制功能被转移到了服务器,上层应用、底层转发设施被抽象成多个逻辑实体。
SDN是一种思想
SDN不是一种具体的技术,而是一种思想,一种理念
SDN的核心诉求:让软件应用参与到网络控制中并起到主导作用,而不是让各种固定模式的协议来控制网络
为了满足这种核心诉求,SDN思想指导下的网络必须设计一种新的架构
SDN的三个基本的特点
架构角度:控制平面与数据平面分离
业务角度:抽象物理网络
运营角度:可编程接口
控制转发分离
传统网络
传统网络设备的CP与DP 不分离;
设备之间通过控制协议交互转发信息
新型网络
SDN 的思路是将网络设备的控制平面集中上收到Controller;
网络设备上指保留转发平面(转发表项);
通过Controller实现网络统一部署和网络自动化;
网络的抽象
通过Controller实现了对基础网络设施的抽象;
应用程序看到的是Controller提供的网络服务
可编程接口
传统网络
传统的网元都具备管理接口,可以通过网关协议(SNMP、NETCONF)或CLI实现简单的编程;
但传统接口常导致应用程序需要与网元设备之间通过某种代理或翻译器来通信。副作用是在应用设备与网元设备之间的反馈回路的时间长。
新型网络
一些新型接口协议如XMPP、Thrift、JSON等可以更灵活的以异步的方式操作网络设备;
一些新的协议如I2RS可以直接对网络路由系统进行直接的、快速的应用优化的修改/编程。
SDN可编程接口不是传统的网络管理,而是一种在应用与网元之间双向的、紧密联系的通信通道,可以实现传统网络不具备的网络快速优化能力。
SDN与传统网络的区别
SDN区别于传统网络技术的关键是“通过可编程性,将应用与网络设备之间的交互更紧密结合”。二这种紧密结合性,需要上述三种思路:“控制转发分离”、“物理网络抽象”、“可编程接口”。
可编程性是SDN的核心。将控制和管理平面从交换机、路由器中移到设备外的软件中,并通过SDN协议来连接网络设备。这些设备外的软件平台有自己的API、处理逻辑,以及向网络提要求、接受事件、处理SDN通信协议的能力,这些软件平台就是“控制器/Controller”。
应用开发人员只使用控制器提供的API来实现网络自动化、网络编排和操作网络。
控制器被认为代表了支持SDN的应用程序的基础架构,体现了SDN的可编程性。