概念
SDN(Software Defined Network)翻译成中文就是“软件定义网络”。SDN中的软件其实就是指各种应用程序(Application),如一套视频监控管理软件、一个防火墙控制软件、路径规划软件、基于网络虚拟化的自动化部署软件。
因此 SDN 等价的名字可以是ADN(Application Defined Network)。
SDN 并不是一个具体的技术,他是一个框架,一种网络设计理念。
SDN 是一种优化和简化网络操作的体系结构方式,将应用与网络服务、设备之间的交互(如服务开通配置、消息传递、告警等)更紧密地结合再一起,无论它们是物理的还是虚拟的。
特点
- 控制面与转发分离;
- 开放的可编程接口;
- 集中化的网络控制
- 网络业务的自动化应用程序控制;
其中前两点被认为是SDN的核心属性,宽泛的说,只要符合这两点,无论它的名称是什么(如:OpenFlow、OpenDayLight)都可以被认为是是 SDN 架构。
SDN要解决什么问题
全球化竞争的压力迫使各个企业和组织要不断利用技术来提高自己的竞争力。而一种新技术之所以会出现是因为业务需求发生了变化。
新技术发展
- 数据中心合并。更多企业将公司内部部分或全部网络迁移到大的数据中心或者是公有云提供商。导致数据中心很大,设备更多,布线复杂。
- 服务器虚拟化。
- 云计算。
- 新的应用架构。大量基于服务和基于Web的应用,促使数据中心要创建大量服务器到服务器之间的通信连接,而且不同应用之间要相互隔离。
新技术带来的问题
新技术使得传统网络中设备越来越多,而且存在有各种各样的厂家设备(统一更换是要投入大量资金的),没有统一的管理平台。最大的问题是:
- 传统网络设备是单独控制的,完全分布式;
- 控制面跟转发面再同一个设备中,紧密耦合;
- 网络协议转发是固定模式(如:路由协议只靠Dst IP来转发,不考虑Src IP地址和端口号;MPLS 只能靠MPLS Label 转发),基本无法修改的;
- 多个网络报文的转发完全是独立控制的;
- 管理员无法直接控制转发行为(如根据Src IP地址和Src 端口剔除某些Package),设备就是个黑盒子。
如何解决
SDN 把每台设备的控制面从设备中剥离出来,放到一个统一的外部控制器(一般称为 SDN Controller),由该控制器通过统一的指令集来集中管理转发路径上的所有设备。
SDN Controller 还可以通过提供的开放 API 被上层应用程序通过编程控制。减少大量手动配置过程,提高业务部署灵活性。
SDN Controller(控制器)
SDN控制器()体系结构的一个关键之处就是有一个标准化的北向API。 每个控制器都拥有独自的API,它允许应用程序进行编码从而与控制器进行交互。 把该API定义为行业标准,好处是:允许并鼓励应用程序的可移植性(application portability) 。