1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么?
分为三个阶段,第一个阶段是主动网络(从20世纪90年代中期到21世纪初),它在网络中引入了可编程功能,以实现更大的创新;第二个阶段是控制和数据平面分离(从2001年到2007年左右),开发了控制和数据平面之间的开放接口;以及第三个阶段OpenFlow API和网络操作系统(2007年至2010年左右),代表了广泛采用开放接口的第一个实例,并开发了使控制数据平面分离可扩展且实用的方法。
(1)主动网络阶段的贡献:
a、对主动网络的研究开创了可编程网络的概念,降低了网络创新的障碍
b、网络可虚拟化,以及基于数据包头对软件程序进行多路分解的能力
c、为middlebox编排提供统一架构的构想
d、提供了平台的可移植性和一些代码安全
e、主动网络是第一批干净的网络架构方法
(2)控制和数据平面分离阶段的贡献:
a、提出控制面和数据面之间的开放接口
b、在逻辑上对网络进行集中控制
c、提出了两个概念:使用数据面的开放接口进行集中逻辑控制和分布式状态管理
d、为Openflow的创建奠定了基础,尤其是乙烷的简单开关设计成为最初OpenFlow API的基础
(3)OpenFlow API和网络操作系统阶段的贡献:
a、为学生和科研人员实现新协议和新算法提供一个很好的试验平台
b、代表了广泛采用开放接口的第一个实例,并开发了使控制数据平面分离具有可扩展性和实用性的方法。
c、分布式状态管理技术。分离控制层和数据层带来了国家管理方面的新挑战。运行多个控制器对于可伸缩性、可靠性和性能至关重要,但是这些副本应该像单个逻辑集中式控制器一样协同工作。
2.网络虚拟化与SDN的关系
网络虚拟化表示从底层物理设备分离的网络的抽象,网络虚拟化允许多个虚拟网络在共享基础设施上运行,并且每个虚拟网络可以具有比底层物理网络更简单(更抽象)的拓扑。例如,虚拟局域网(VLAN)提供了一个跨越多个物理子网的单一LAN的假象,多个VLAN可以在相同的交换机和路由器集合上运行。网络虚拟化(从逻辑网络的角度对物理网络进行抽象)显然不需要SDN。同样,SDN(逻辑集中控制平面与底层数据平面的分离)并不意味着网络虚拟化。尽管网络虚拟化在概念上独立于SDN,但近年来这两种技术之间的关系变得更加密切。而SDN和网络虚拟化主要有三种关系:
a、SDN作为网络虚拟化的一种支持技术
云计算使网络虚拟化变得突出,因为云提供商需要一种方式,允许多个客户(或“租户”)共享同一网络基础设施。Nicira的网络虚拟化平台(Network Virtualization Platform,NVP)提供了这种抽象,而不需要底层网络硬件的任何支持,解决方案是使用覆盖网络为每个租户提供连接其所有虚拟机的单个交换机的抽象。然而,与先前在覆盖网络上的工作相比,每个覆盖节点实际上是物理网络的一个扩展——一个软件交换机(如Open vSwitch),它封装了发送到其他服务器上运行的虚拟机的流量。逻辑集中式控制器在这些虚拟交换机中安装规则,以控制如何封装数据包,并在虚拟机移动到新位置时更新这些规则。
b、网络虚拟化用于评估和测试SDN
SDN控制应用程序与底层数据平面分离的能力使得在应用程序部署到操作网络之前,能够在虚拟环境中测试和评估SDN控制应用程序。例如,Minine使用基于进程的虚拟化在同一物理(或虚拟)机上运行多个虚拟OpenFlow交换机、终端主机和SDN控制器,每个控制器都作为单个进程,在一台机器上有数百个主机和交换机。
c、虚拟化(切片)SDN
在传统网络中,对路由器或交换机进行虚拟化是很复杂的,因为每个虚拟组件都需要运行自己的控制平面软件。相比之下,虚拟化一个sdn交换机要简单得多,FlowVi-SOR系统使校园能够在承载生产流量的同一设备的基础上支持网络研究的试验床,它的主要思想是将业务流空间划分为“片”,其中每个片有一个网络资源共享,由不同的SDN控制器管理。