SDN课程阅读作业(2)
1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么?
- 在过去20年中可编程网络的发展可以分为以下三个阶段:
- (1)交流网络(从20世纪90年代中期到21世纪初),它在网络中引入了可编程功能,以实现更大的创新;
- (2)控制和数据平面分离(从2001年到2007年左右),开发了控制和数据平面之间的开放接口;
- (3)OpenFlowAPI和网络操作系统(2007年至2010年前后),代表了第一个广泛采用开放接口的实例,并开发了使控制数据平面分离具有可扩展性和实用性的方法。
如图:
(1)主动网络(Active networking,20世纪90年代中期到21世纪初):在网络中引入了可编程功能,以实现更大的创新。
- 开创了可编程网络的概念,以此来降低网络创新的障碍。
- 主动网络是第一批干净的网络架构方法。
- 提供了平台的可移植性和一些代码安全。
- 网络虚拟化,以及基于数据包头对软件程序进行多路分解的能力。
- 为middlebox编排提供统一架构的构想。
(2)将控制面与数据面分离(Separating Control and Data Planes,2001年-2007年左右):开发了控制和数据平面之间的开放接口。
- 催生了两项创新:控制平面与数据平面之间的开放接口和在逻辑上对网络的集中控制。
- 将控制功能从网络设备转移到单独的服务器上。逻辑集中式路由控制器是通过开源路由软件的出现而实现的,它降低了创建原型实现的障碍。服务器技术的进步意味着单个商品服务器可以存储所有的路由状态并计算大型ISP网络的所有路由决策。着反过来又启用了简单的主备份复制策略,其中备份服务器存储于主服务器相同的状态并执行相同的计算,以确保控制器的可靠性。
- 提出了两个概念:使用数据平面的开放接口进行逻辑控制和分布式状态管理。
- 4D项目主张四个主要层:数据平面(用于基于可配置规则处理分组)、发现平面(用于收集拓扑和流量测量)、发布平面(用于安装分组处理规则),以及决策平面(由逻辑上集中的控制器组成,这些控制器将网络级目标转换为分组处理状态)。乙烷项目及其直接前身SANE为企业网络中的访问控制创建了一个逻辑上集中的、流级的解决方案。乙烷根据高级安全策略将交换机减少到由控制器填充的流表。乙烷项目及其在斯坦福计算机科学系的运行部署为创建OpenFlow奠定了基础。特别是,乙烷中的简单开关设计成为了最初OpenFlow API的基础。
(3)OpenFlow API和网络操作系统(OpenFlow and Network OSes,2007年-2010年左右):代表了广泛采用开放接口的第一个实例,并开发了使控制数据平面分离可扩展且实用的方法。
- 创建了全球网络创新环境,满足了网络研究社区的需求。
- 概括了网络设备和功能。以前的路由控制工作主要集中在根据目的地IP前缀匹配流量。相反,OpenFlow规则可以基于13个不同的数据包头的任意一组定义流量上的转发行为。OpenFlow还推广了ruleinstallation技术,允许从预先安装粗粒度规则(即,对许多头字段使用“通配符”)到根据应用程序被动安装细粒度规则。
- 网络操作系统的构想。与先前提出节点操作系统的主动网络研究不同,OpenFlow的工作导致了网络操作系统的概念。网络操作系统是从控制网络行为的逻辑和应用程序中抽象出网络交换机状态安装的软件。
- 分布式状态管理技术。分离控制层和数据层带来了国家管理方面的新挑战。运行多个控制器对于可伸缩性、可靠性和性能至关重要,但是这些副本应该像单个逻辑集中式控制器一样协同工作。最近,ONOS系统提供了具有类似功能的开源控制器,使用现有的开源软件来保持分布式状态的一致性,并将网络拓扑数据库提供给控制器应用程序。
2.网络虚拟化与SDN的关系?
网络虚拟化表示从底层物理设备分离的网络的抽象。网络虚拟化允许多个虚拟网络在共享基础设施上运行,并且每个虚拟网络可以具有比底层物理网络更简单(更抽象)的拓扑。例如,虚拟局域网(VLAN)提供了一个跨越多个物理子网的单一LAN的假象,多个VLAN可以在相同的交换机和路由器集合上运行。尽管网络虚拟化在概念上独立于SDN,但近年来这两种技术之间的关系变得更加密切。
网络虚拟化(从逻辑网络的角度抽象物理网络)显然不需要SDN。同样,SDN(从底层数据平面分离逻辑集中控制平面)并不意味着网络虚拟化。然而,有趣的是,网络虚拟化和SDN之间的共生关系已经出现,这已经开始催化几个新的研究领域。SDN和网络虚拟化主要有三种关系:
(1)SDN作为网络虚拟化的一种支持技术。
云计算突出了网络虚拟化,因为云提供商需要一种方式,允许多个客户(或“租户”)共享同一网络基础设施。Nicira的网络虚拟化平台(Network Virtualization Platform,NVP)提供了这种抽象,而不需要底层网络硬件的任何支持。解决方案是使用覆盖网络为每个租户提供连接其所有虚拟机的单个交换机的抽象。然而,与先前在覆盖网络上的工作相比,每个覆盖节点实际上是物理网络的一个扩展——一个软件交换机(如Open vSwitch),它封装了发送到其他服务器上运行的虚拟机的流量。逻辑集中式控制器在这些虚拟交换机中安装规则,以控制如何封装数据包,并在虚拟机移动到新位置时更新这些规则。
(2)用于评估和测试SDN的网络虚拟化。
将SDN控制应用程序与底层数据平面分离的能力使得在应用程序部署到操作网络之前,能够在虚拟环境中测试和评估SDN控制应用程序。Mininet使用基于进程的虚拟化在同一物理(或虚拟)机上运行多个虚拟OpenFlow交换机、终端主机和SDN控制器,每个控制器都作为单个进程。使用基于进程的虚拟化允许Mininet模拟一个网络,在一台机器上有数百个主机和交换机。在这样的环境中,研究人员或网络运营商可以开发控制逻辑,并在生产数据平面的全面仿真上轻松地对其进行测试;一旦对控制平面进行了评估、测试和调试,就可以将其部署到实际的生产网络上。
(3)虚拟化(“切片”)SDN。
在传统网络中,虚拟化路由器或交换机是很复杂的,因为每个虚拟组件都需要运行自己的控制平面软件实例。相比之下,虚拟化“哑”SDN交换机要简单得多。FlowVisor系统使校园能够支持在承载生产流量的相同物理设备上进行联网研究的试验台。其主要思想是将业务流空间划分为“片”(PlanetLab的早期工作中引入的概念),其中每个片有一个网络资源共享,由不同的SDN控制器管理。FlowVisor作为hypervisor运行,向每个SDN控制器和底层交换机讲OpenFlow。最近的工作建议对家庭网络进行分层控制,以允许不同的第三方服务提供商(如智能电网运营商)在网络上部署服务,而无需安装自己的基础设施。最近的工作提出了用自己的逻辑拓扑和地址空间来表示软件定义网络的每个“片段”的方法。