SDN课程阅读作业(2)
阅读文章《The Road to SDN: An Intellectual History of Programmable Networks》,并根据所阅读的文章,书写一篇博客,回答以下两个问题:
1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么?
业界的目标是使计算机网络更具可编程性有助于网络管理的创新,并降低部署新服务的障碍。回顾可编程网络的早期工作,将历史分为三个阶段,如下图所示:
每个阶段对历史都有自己的贡献:
(1)主动网络(从20世纪90年代中期到21世纪初),它在网络中引入了可编程功能,以实现更大的创新
- 在20世纪90年代中期,由于网络协议标准化过程的缓慢,一些网络研究人员采用了一种开放网络控制的替代方法,大致是基于对独立PC重新编程相对容易的类比。具体地说,传统网络在任何意义上都不是“可编程”的,主动网络代表了一种激进的网络控制方法,通过设想一个编程接口(或网络API)来公开各个网络节点上的资源(例如,处理、存储和数据包队列),并支持构建应用于子集的定制功能,主动网络研究计划探索了传统互联网协议栈通过IP或异步传输模式(ATM)提供服务的根本替代方案。
- 主要贡献:网络可编程性降低了技术创新的障碍;提出网络虚拟化,以及基于包头对软件程序进行复用;创建中间件编排统一的架构
(2)控制和数据平面分离(从2001年到2007年左右),开发了控制和数据平面之间的开放接口
- 由于传统路由器和交换机体现了控制和数据平面之间的紧密集成,这种耦合使得各种网络管理任务,如调试配置问题和预测或控制路由行为,变得非常具有挑战性。为了应对这些挑战,各种分离数据和控制平面的努力开始出现。领先的设备供应商直接在硬件上实现包转发逻辑,独立于控制平面软件。此外,互联网服务提供商(ISP)正在努力管理其网络不断扩大的规模和范围,以及对更高可靠性和新服务(如虚拟专用网络)的需求。这些趋势催生出了两项创新技术:一是控制和数据平面之间的开放接口;二是网络的逻辑集中控制。
- 主要贡献:提出两项创新,分别为控制面和数据面之间的开放接口与在逻辑上对网络进行集中控制;将控制功能转移到了单独的服务器上,这样逻辑上集中的路由控制器降低了标准的实施障碍,服务器技术的进步意味着单一的商品服务器可以存储的所有的路由状态,并为一个大型网络计算所有的路由决策;提出了两个概念,分别为使用数据面的开放接口进行集中逻辑控制和分布式状态管理
(3)OpenFlow API和网络操作系统(2007年至2010年左右),代表了广泛采用开放接口的第一个实例,并开发了使控制数据平面分离具有可扩展性和实用性的方法。
- 在OpenFlow出现之前,SDN的基本思想面临着完全可编程网络和实用主义之间的紧张关系。但OpenFlow在这两个目标之间取得了平衡,它启用了比早期路由控制器更多的功能,并通过在商品交换机中越来越多地使用商用硅芯片组来构建现有的交换机硬件。尽管依赖现有的交换机硬件在一定程度上限制了灵活性,但OpenFlow几乎可以立即部署,这使得SDN的移动既实用又大胆。在OpenFlow API的创建之后,紧接着是NOX这样的控制器平台的设计,它支持创建许多新的控制应用程序。
- 主要贡献:OpenFlow为学生和科研人员实现新协议和新算法提供一个很好的试验平台;OpenFlow交换机在数据中心网络中的使用,使得网络和计算资源更加紧密的联系起来并实现有效的控制;基于OpenFlow技术实现的网络更加便于控制,在内部网络和外网的连接处应用OpenFlow交换机可以通过更改数据流的路径以及拒绝某些数据流来增强企业内网的安全性;基于OpenFlow实现SDN,在网络中实现了软硬件的分离以及底层硬件的虚拟化,为网络的发展提供了一个良好的发展平台;网络操作系统的诞生,让软件程序可以代替操作系统为网络计算机提供服务并借由网络互相传递数据与各种消息;网络操作系统的服务器可以管理服务器和网络上的各种资源和网络设备的共用,加以统合并控管流量,避免有瘫痪的可能性;它的客户端则能接收服务器所传递的数据并加以运用,可以清楚地搜索所需的资源
2.网络虚拟化与SDN的关系?
网络虚拟化在SDN的历史演进过程中扮演着重要的角色,它在SDN出现之前就已经有了实质性的发展,但作为SDN最早的重要用例之一,网络虚拟化已经扎根于SDN之上。
网络虚拟化(从逻辑网络的角度对物理网络进行抽象)显然不需要SDN。同样,SDN(逻辑集中控制平面与底层数据平面的分离)并不意味着网络虚拟化。然而,有趣的是,网络虚拟化和SDN之间的共生关系已经出现,这已经开始催化几个新的研究领域。
SDN和网络虚拟化主要有三种关系:
- SDN作为网络虚拟化的一种支持技术
云计算使网络虚拟化变得突出,因为云提供商需要一种方式,允许多个客户(或“租户”)共享同一网络基础设施。Nicira的网络虚拟化平台(Network Virtualization Platform,NVP)提供了这种抽象,而不需要底层网络硬件的任何支持,解决方案是使用覆盖网络为每个租户提供连接其所有虚拟机的单个交换机的抽象。然而,与先前在覆盖网络上的工作相比,每个覆盖节点实际上是物理网络的一个扩展——一个软件交换机(如Open vSwitch),它封装了发送到其他服务器上运行的虚拟机的流量。逻辑集中式控制器在这些虚拟交换机中安装规则,以控制如何封装数据包,并在虚拟机移动到新位置时更新这些规则。
- 网络虚拟化用于评估和测试SDN
将SDN控制应用程序与底层数据平面分离的能力,使得在将SDN控制应用程序部署到操作网络之前,可以在虚拟环境中测试和评估SDN控制应用程序。Mininet使用基于进程的虚拟化在同一物理(或虚拟)机上运行多个虚拟OpenFlow交换机、终端主机和SDN控制器,每个控制器都作为单个进程。使用基于进程的虚拟化允许Mininet模拟一个网络,在一台机器上有数百个主机和交换机。在这样的环境中,研究人员或网络运营商可以开发控制逻辑,并在生产数据平面的全面仿真上轻松地对其进行测试。一旦对控制平面进行了评估、测试和调试,就可以将其部署到实际的生产网络上。
- 虚拟化(切片)SDN
在传统网络中,虚拟化路由器或交换机是很复杂的,因为每个虚拟组件都需要运行自己的Controlplane软件实例,相比之下虚拟化“哑”SDN交换机要简单得多。FlowVisor系统使校园能够支持在承载生产流量的相同物理设备上进行联网研究的试验台,其主要思想是将业务流空间划分为“片”(Planetlab的早期工作中引入的概念),其中每个片有一个网络资源共享,由不同的SDN控制器管理。FlowVisor作为Hypervisor运行,向每个SDN控制器和底层交换机传递OpenFlow。