我的主要问题是为什么服务提供商不转向所有软件交换机?我知道答案一定是硬件交换机的速率、容量和端口密度。
那么,例如 Cisco ASR 1000 系列和在 Intel Xeon E5 系列上运行的软件交换机(DPDK 上的 OVS),支持的端口密度和硬件交换机/路由器的容量(就内存而言)之间有什么区别? ?
我的主要问题是为什么服务提供商不转向所有软件交换机?我知道答案一定是硬件交换机的速率、容量和端口密度。
那么,例如 Cisco ASR 1000 系列和在 Intel Xeon E5 系列上运行的软件交换机(DPDK 上的 OVS),支持的端口密度和硬件交换机/路由器的容量(就内存而言)之间有什么区别? ?
这归结为通过专用硬件/ASIC 加速的内容,以及可以将哪些流量转移到软件/CPU 进行处理。
由于专门用于网络交换的硬件 ASIC,物理交换机具有极快的交换速度。Xeon E5 可以做到,但速度较慢,因为它是通用芯片组。
也像其他人所说的那样,物理交换机旨在为最终用户/电话/服务器提供高端口密度,除非一切都已经是虚拟的,否则虚拟交换机无法匹配。
这就是为什么今天软件路由器比交换机更受欢迎的原因,因为许多路由任务通常在软件中通常被转移到 CPU,因此可以从物理路由器中提取并安装在 VM 中。Cisco CSR1000v 是用于终止 VPN、动态对等互连、SD-WAN 控制平面等的生产就绪软件路由器的一个很好的例子。
通用计算的基本架构就是——通用。它非常擅长将大量处理能力应用于各种各样的工作负载,但它并没有真正擅长其中的许多工作。
例如 - 使用 GPU 是因为它们在某些类型的计算方面非常出色,并且可以执行相当于由数十或数百个物理 CPU 执行的工作,同时消耗的功率和空间大大减少,同时产生的热量也少得多。我们可以用大量的 CPU 并行构建高性能显卡并只使用软件吗?也许吧,但这会有点荒谬。
这同样适用于网络。应用如何以分布式方式移动大量 I/O 的问题也不能很好地映射到所有处理基本上都在少数大型中央 CPU 上处理的架构。与现在 CPU 和主内存之间的带宽量一样令人印象深刻,即使是几个 40GE 连接的总吞吐量也只是其中的一小部分。更糟糕的是,外部专用硬件架构(例如 CPU)必须为要转发的每个数据包处理中断。哦,这只是转发数据包 - 没有加密,没有翻译,封装或其他密集的过程。
计算一下,即使在 10GE 链路上,每秒也需要转发多少数据包,在一个方向上每秒大约有 1480万个数据包(小数据包)。一个基本的商用 48 端口 10GE 交换机必须每秒读取、处理和重新生成 14亿个数据包(......在任何类型的控制平面功能之上)。那是针对十年前被认为是新技术的开关。此时,具有近 300 个100千兆位端口的交换机很容易获得,更高的密度和速度只是产品发货日期的问题。
解决方法是采用分布式方式——将尽可能多的处理负载推送到运行在靠近端口的专用芯片上的半自主处理器上。在单片硅上处理太比特是科幻的。但是,在数百个并行端口 ASIC 上处理数百个千兆比特?完毕。
那么为什么 SP 不只是将网络移动到一堆 Linux 机器上,或者更好的是,将其推送到公共云?因为所有这些计算只有在其计算被可以为其提供数据的专用硬件包围时才能以有用的方式存在(当然,反过来,网络硬件仅与计算相关)。在网络设备的可编程性方面是否存在一些交叉?绝对地。是否有一些用于控制平面的通用硬件?当然。云路由器?完全。
然而,最终,就像机器学习人员开始使用通用计算,但已经转移到 GPU 群,最近,专用 ASIC 也可以在通用计算上运行许多基本网络任务(绝大多数网络设备从未见过)在其生命周期中的任何时候都接近 100% 的利用率),但最终经济和实际工程意味着将始终有专用的网络硬件。
(哦 - 让你知道一个肮脏的秘密,很长一段时间以来,几乎所有的网络都是软件定义的。)