一般而言,虚拟拓扑仅仅是实施转发的逻辑网络。融入高级功能(如鉴权)后,虚拟拓扑能传达应用层面的语义(比如,允许谁和谁通话),并且允许网络Hypervisor在网络层面实施这些策略。
如今,操作员可以通过抽象方式下发需求,网络Hypervisor可完全自行决定如何满足这些需求。这一点非常重要。
起初,我们曾认为交换机在角色和功能上是相似的。目前,网络使用报文头来让主机与网络通信,或者让报文与路由器或交换机通信。收到报文后,交换机首先会问:“主机需要我把这条报文发到哪里?”之后,各个交换机会说:“根据上个问题的答案来查找转发站,决定下发路径”。
SDN为操作员提供一个清晰的全可编程方式来控制网络。然而,SDN不会分离主机网络和报文路由器接口。报文头仍用于查找路由器或交换机。
将MPLS融入SDN
多协议标签交换(MPLS)在区分网络边界和核心方面起到重要作用。报文到达第一个上层路由器时,边界路由器会问:“主机想干什么?”,然后在报文中加入标签,这个标签只有在本地网络中有意义。网络核心无须了解报文头,只是说:“从现在起,MPLS标签足以让我了解如何转发报文”。
早在5年前,我们就应该把MPLS融入SDN,让边界路由器来读取整个报文头并将MPLS标签嵌入报文,让核心路由器来读取报文。我们目前正在努力将MPLS融入SDN。
融入MPLS后,整个网络被分解成模块。在模块化网络中,各项任务只执行一次:网络边界完全负责主机接口;网络核心通过标签管理报文路由器接口;SDN管理操作员接口。
我们提出分离网络边界和网络核心的理由之一,是让网络核心专注于报文发送,而访问控制和隔离功能则由网络边界来完成。显然,网络核心必须负责报文发送,包括组播和服务质量(QoS),而其它工作由网络边界来完成。
经过简化后,网络核心只用负责一项任务,即在网络边界之间发送报文。这样一来,网络核心的工作性能得到大幅提升。
试想一下,一旦分离了网络边界和网络核心,为什么不让主机靠近网络边界呢?要实现这点,就得在主机上安装可信的硬件和软件(如主机网络接口卡)以及大量分布式系统和安全措施。不过,我们可以想象把网络部署在只看得见由主机生成的标签的位置。
过去,网络完全由硬件交换机组成。如今,软件交换机成为了常见的网络组成部分。在部署包括边界和核心部分的网络时,所有边界交换机都应该是软件交换机。这是我们的第二个激进的观点。
数据中心已经在使用虚拟交换机和Hypervisor。Verizon、AT&T和德电等大型互联网服务提供商的所有带宽都经过网络边界。为了转发这些流量,他们要花多少钱才能买到足够的网络核心设备呢?答案是他们需要花15万美元,不及一台中型路由器的价格。纵观其他企业的网络,我认为在网络边界采用软件转发这种方式并非行不通。
当然硬件转发和软件转发在速度上存在两个数量级的差别,我认为可以用软件来满足边界转发需求,提高边界软件的灵活性让我们受益;无需在网络核心实施软件交换,因为核心只负责根据标签来进行流量转发,而硬件就能实现转发。
边界软件转发让网络架构演进和多样化成为可能。整个网络中,只有网络边界的软件需要了解本领域的协议,其它网络部分无须了解协议。只需更改SDN控制程序,就能实现网络架构更新(如IPv4到IPv6)。一切就这么简单。
可以在一个域中并行运行多个架构。“在一个主机中并行支持多个架构”这种想法看似很激进,但所需要的改变都非常简单,都在我们的技术能力范围内。关键在于要说服人们,让他们觉得落实这个想法是值得的。
|