软件定义网络(SDN):原理、协议与应用场景解析
1. 开放性与复杂性
开放性备受青睐,但实现细粒度边缘功能却十分复杂。这种复杂性可能存在于专用集成电路(ASIC)、底层微代码或高层指令中,且并非所有方法都同样高效或灵活。
高层语言的标准化可隐藏复杂性,但对于许多功能,开发者仍需深入底层。底层语言具有价值,因其接近实际硬件,能提供灵活性。不过,它们本质上具有特定性,若追求通用性,便会失去这种特定性。硬件的差异必须被暴露出来,因为供应商为使 ASIC 与众不同,添加了许多创新元素。若不暴露这些差异,创新将流失,系统也会抑制创新。
在底层,硬件与其编程软件的关系十分紧密。试图插入一个中间层,即便该层是行业定义的,也未必能推动创新。标准化网络设备的编程方式能否带来创新,还是会减缓新功能的实现,只有时间能给出答案。
2. SDN 概述
SDN 由开放网络论坛定义为:网络控制平面与转发平面的物理分离,且一个控制平面可控制多个设备。软件定义网络(SDN)是一种新兴架构,具有动态、可管理、经济高效和适应性强的特点,非常适合当今高带宽、动态的应用环境。该架构将网络控制和转发功能分离,使网络控制可直接编程,并为应用和网络服务抽象底层基础设施。OpenFlow™ 协议是构建 SDN 解决方案的基础元素。
3. 控制与转发平面的分离
控制平面与转发平面的分离是推动 SDN 应用的关键要素。然而,一些工程师认为这种分离在他们的网络中已存在多年。例如,Juniper 和 Cisco 路由器在 20 世纪 90 年代就明确分离了控制和转发平面,即便它们运行在同一物理机箱中,这种分离对互联网的发展至关重要。Juniper