1. 让我们通过回顾图4.2和图4.3来快速设置学习网络控制平面的背景。在这里,我们看到转发表(在基于目的地的转发的情况下)和流表(在通用转发的情况下)是链接网络层的数据和控制平面的主要元素。我们了解到,这些表指定了路由器的本地数据平面转发行为。我们看到,在通用转发的情况下,采取的操作不仅可以将数据包转发到路由器的输出端口,还可以丢弃数据包、复制数据包和/或重写第234层数据包首部字段。<br />在本章中,我们将研究如何计算、维护和安装这些转发和流表。在4.1节对网络层的介绍中,我们了解到有两种可能的方法来实现此目的。
    • 每台路由器控制(Per-router control)。图5.1说明了路由算法在每台路由器中运行的情况;每台路由器都包含转发和路由功能。每台路由器都有一个路由组件,该组件与其他路由器中的路由组件通信,以计算其转发表的值。这种按路由器控制的方法在互联网中已经使用了几十年。我们将在5.3和5.4节中学习的OSPF和BGP协议就是基于这种按路由器控制的方法。

    image.png
    Figure 5.1 ♦ Per-router control: Individual routing algorithm components interact in the control plane
    图5.1♦每路由器控制:各个路由算法组件在控制平面中交互

    • 逻辑上集中控制(Logically centralized control)。图5.2说明了逻辑集中式控制器计算和分发要由每台路由器使用的转发表的情况。正如我们在4.4和4.5节中看到的,通用匹配加动作抽象允许路由器执行传统的IP转发以及一组丰富的其他功能(负载共享、防火墙和NAT),这些功能以前在单独的中间盒中实施。

    image.png
    Figure 5.2 ♦ Logically centralized control: A distinct, typically remote, controller interacts with local control agents (CAs)
    图5.2♦逻辑集中控制:一个不同的、通常为远程的控制器与本地控制代理(CA)交互

    控制器通过定义明确的协议与每个路由器中的控制代理(control agent,CA)交互,以配置和管理该路由器的流表。通常,CA具有最低限度的功能;它的工作是与控制器通信,并执行控制器命令。与图5.1中的路由算法不同,CA不直接相互交互,也不主动参与计算转发表。这是每路由器控制和逻辑集中控制之间的关键区别。
    通过“逻辑集中”控制 [Levin 2012],我们的意思是路由控制服务的访问就好像它是单个中央服务点一样,即使出于容错和性能可扩展性的原因,该服务可能通过多个服务器实现。正如我们将在第 5.5 节中看到的,SDN 采用了逻辑集中控制器的概念——这种方法在生产部署中得到越来越多的使用。 Google 使用 SDN 来控制其内部 B4 全球广域网中的路由器,该网将其数据中心互连 [Jain 2013]。 SWAN [Hong 2013] 来自 Microsoft Research,使用逻辑上集中的控制器来管理广域网和数据中心网络之间的路由和转发。主要的 ISP 部署,包括 COMCAST 的 ActiveCore 和德国电信的 Access 4.0,正在积极将 SDN 集成到他们的网络中。正如我们将在第 8 章中看到的,SDN 控制也是 4G/5G 蜂窝网络的核心。 [AT&T 2019] 指出,“……SDN 不是愿景、目标或承诺。这是一个现实。到明年年底,我们 75% 的网络功能将完全虚拟化并由软件控制。”中国电信和中国联通正在数据中心内和数据中心之间使用 SDN [Li 2015]。