可编程网络的发展历史

网友投稿 269 2022-11-23

可编程网络的发展历史

在小型计算机之上实现路由器的这种方法足以满足当时所需的适度转发速率。例如,IMP论文报告说,IMP的最大吞吐量约为700kbit/s,足以在两个方向上服务于多条50kbit/s的线路。此类基于微型计算机的路由器也非常出色:可编程路由器的功能仅需升级微型计算机上的转发软件即可。

到1990年代中期,由于互联网和万维网的迅速采用,软件已无法满足对更高链接速度的需求。瞻博网络的M40路由器是1998年硬件路由器的早期示例。M40包含用于实现路由器的数据平面的专用芯片以及用于实现路由器的控制平面的控制处理器。正如我们在前面中所描述的那样,自1990年代中期以来,最快的路由器主要由专用硬件构成,因为硬件专业化是维持链路速度逐年提高的唯一方法。

图1:自1969年ARPANET上的第一台路由器以来,软件路由器的总容量。直到1990年代中期,软件路由器才够用。但是,从那时起,最快的路由器主要是固定功能的设备,这些设备是由专用的非可编程硬件构建而成的,与最好的软件路由器相比,这些路由器的性能提高了10-100倍。

2、主动网络(1990年代中期)

1990年代中期,有源网络得到了发展,这种方法提倡网络是可编程的或“有源的”,以允许在网络基础架构中部署新服务。主动网络至少有两种方法。首先,可编程路由器方法,它允许网络运营商以受限方式对路由器进行编程。其次,封装方法,其中最终主机会将程序作为封装嵌入到数据包中,然后由路由器执行。

即使使用提供有效隔离的技术(例如SNAP),在通用处理器上执行数据包转发时,也会对性能造成重大影响。例如,SNAP在2001年报告的转发速率为100Mbit/s,比1998年开发的JuniperM4040Gbit/s硬件路由器慢了两个数量级。

胶囊方法可能是所有主动网络愿景中最雄心勃勃的方法,由于安全方面的考虑,它并未以最通用的形式出现。但是,最近的系统向终端主机公开了路由器功能的一个更为受限的子集(例如,终端主机读取路由器状态但不写入路由器状态的能力),这使人想起了封装方法。另一方面,可编程路由器方法已经以各种形式被采用:软件定义的网络和可编程路由器芯片都为网络运营商提供了不同种类的受限路由器可编程性。

3、软件路由器(1999年至今)

已经发现软件路由器被用作对路由器进行编程的一种手段,但是却牺牲了性能。在链接速度较低但计算要求较高的情况下,它们特别有用。例如,该方法已被用于实现WiFi中的MAC层算法和无线物理层中的信号处理算法。

4、软件定义的网络(2004年至今)

从2000年代初期开始,研究人员就主张将路由器的控制平面(运行分布式路由协议以计算其路由表的路由器部分)与路由器的数据平面(通过查看路由表的数据来转发数据包)分开。作为示例,链路状态路由协议的实现将是控制平面的一部分,而基于最长前缀的表查找的实现将是数据平面的一部分。

这种方法背后的思想,后来被称为软件定义网络(SDN),是网络运营商在管理大型网络(例如流量工程,访问控制,创建虚拟网络)时所需要的大部分灵活性。与控制平面有关,与数据平面无关。此外,与数据平面相比,控制平面执行的频率相对较低:每几毫秒一次,而不是每几纳秒一次。因此,虽然必须以硬件来实现数据平面以提高性能,但控制平面操作的相对少见的性质允许将其从路由器移出并移至商品通用处理器,在此可以更轻松地进行操作程序。

SDN还引入了集中控制的概念:通过将路由器控制平面从路由器移到通用处理器上,可以将整个网络控制平面集中在几个服务器上。这样一来,这几台服务器就可以利用全局网络可见性来计算整个网络的路由。SDN有效地用了更简单的集中图计算(例如,使用Dijkstra算法的最短路径)代替了易于出错的分布式路由计算协议。

一旦控制平面为每个路由器计算了路由,SDN还需要一种控制平面的机制来填充路由表的内容。在转发数据包时,数据平面将查询这些表。这些机制中最著名的是OpenFlowAPI,它公开了路由器硬件中路由表的最小接口。OpenFlow的目标是充当跨接口到不同路由器芯片中的路由表的最小公分母。这样一来,现有芯片就可以立即支持OpenFlowAPI。

尽管OpenFlowAPI使对网络的控制平面进行编程成为可能,但并不一定使它变得容易。因此,SDN的发展也导致了高级编程语言的发展,以对路由器的控制平面进行编程。尽管SDN在编程和验证丰富的控制平面策略方面进行了大量研究工作,但在启用数据平面中的可编程性方面却进行了很多工作。

5、网络功能虚拟化(2012年至今)

网络功能虚拟化(NFV)试图将更丰富的数据包处理功能(超出原始数据包转发功能)转移到商品通用处理器和云基础架构中。这种数据包处理功能包括深度数据包检查,负载平衡,入侵检测和WAN加速,通常统称为“中间盒”。出现了一些系统来对这种中间盒的数据和控制平面进行编程。

这种中间盒的一种常见用例是在网络的边缘(例如,在蜂窝基站处),其中,每当客户端访问因特网时,各种分组处理功能就在处理器集群上运行。由于NFV是在软件平台上执行数据包处理的,因此它也可以看作是链路速率要求相对较低的边缘上的软件路由器的实际用例。

6、基于边缘/终端主机的软件定义网络(2013年至今)

很快就清楚了,OpenFlowAPI不足以表达网络运营商的所有需求,因为它被设计为易于采用的通用最小分母API。OpenFlow缺乏表达能力,导致了基于边缘的软件定义网络方法。

通过这种方法,网络的路由器分为两类。边缘路由器位于网络的入口或边缘,并执行可编程的数据包处理。网络的核心是核心路由器,这些路由器简单地转发几乎没有可编程性的数据包。由于边缘路由器在空间上分布以服务于不同位置的客户端,因此每个边缘路由器只需要处理进出网络的总流量中的一小部分。

对于网络中不可用的应用程序上下文,基于边缘或基于最终主机的解决方案是必需的。例如,只有在终端主机上才能获得有关哪个应用程序使用了网络的知识(可能对监视有用)。同样,许多网络安全应用程序(例如,过滤垃圾邮件)最好在最终主机上运行,因为出于隐私原因,确定什么是垃圾邮件以及什么不是最好的信息留在最终主机上。此外,可以仅通过边缘可编程性来实现很多可编程网络功能(例如,网络虚拟化,访问控制,安全策略等)。

有人可能会提出一种混合网络架构,该架构将基于边缘的可编程性与更智能但固定的核心路由器相结合。这样的体系结构仍然将所有可编程性置于边缘,但是通过少量固定功能扩展了核心路由器,以支持来自边缘的可编程性。这种方法的示例包括通用数据包调度和带内网络遥测,它们通过细粒度的优先级队列扩展了路由器,并且能够将队列大小信息导出到数据包中,但是保留了所有到边缘的可编程性。

如果存在一小部分功能,这些功能对于固定功能路由器就足够了,那么这种混合方法将是面向未来的通用方法。如果确实存在如此少的一组固定功能,则构建固定功能路由器而不是可编程路由器将是更好且更简单的方法。但是最近几十年来,路由器中不断增加的功能不断涌现。在这种不断变化的功能中,网络内的可编程性为网络运营商提供了未来的证明和安心:能够在需要时快速向路由器添加功能,而无需冗长的硬件迭代周期。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:保存coco dataset注释为单一文件,并逐一显示所有图片的mask
下一篇:OpenCv截取任意形状 -- 实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~