01.02 境无止境!SDN网络的流表需求切勿贪多不烂

在以太网络诞生的40多年里,IT技术迅猛发展,我们都有幸见证了以太网是如何经历了一次次的革命而实现每一次的技术创新。软件定义网络(SDN)则是网络行业最具革命性的创新之一。SDN技术通过控制与转发层面的分离将传统的黑盒网络设备打开,将更多的网络信息提供给应用(用户),从而提升了网络的灵活性和可控性。


境无止境!SDN网络的流表需求切勿贪多不烂

在SDN网络的控制与转发层面间最开放的南向接口就是ONF组织制定的OpenFlow协议,OpenFlow协议作为南向接口其主要目的是优化特定流在源与目的间的路径,但是在落地过程中面临的挑战是现有的硬件平台ASIC芯片能够支持的流数目有限:大约在1K-10K条流的数量级。乐观的人认为这是个短期的限制,ASIC很快就会大幅提升性能,比如Barefoot公司做出的尝试;也有些人认为这个问题只能通过基于x86或者网络处理器NP的方案来解决,可以在损失一定性能的情况下实现灵活的表规格;也有些人完全不赞成SDN设计,质疑是否有现实可行或经济适用的方案出现。

目前ASIC的流表实现主要靠芯片内部的TCAM(三态内容寻址存储器)来完成流匹配,这是一种成本高昂且功耗颇大的技术。因此希望通过TCAM来扩展流条目的成本是很高的(无可避免的导致售价攀升),那么其实最现实可行的做法是充分挖掘硬件可利用资源并在软件层面通过归集实现流条目的优化。

我们都知道目前的SDN交换机大部分基于传统的网络交换芯片搭建,在这些芯片内部除了TCAM之外还有大量的SRAM资源用于存储MAC表项,因此在交换机操作系统中可以利用交换芯片的特性模拟内存分配方案,使得交换设备在逻辑上除了可以使用支持OpenFlow的内存(TCAM)外还可以结合使用传统的交换路由表(FIB)。通过释放硬件的现有资源,我们可以将目前硬件交换机支持的流条目数提升到数十万条,满足高密度低延时环境下所需的高扩展性需求。

另外,在部署SDN网路时是否真的需要上百万条流才能解决网络的突出问题呢?在提升硬件资源的利用率基础之上,通过提升流分发规则设计将逻辑流与物理流分离,软件和硬件分离也是有效降低流表需求的途径。通常典型的ToR交换机具有50个端口左右,每个端口最多有几百条流。对于任何的数据中心或者企业应用这都是不够用的,更不要说汇聚交换机。但是以主机托管数据中心为例,如果可以通过VLAN ID和MAC地址来归类流量,那么就有可能用不到一百条流来处理流量。真实场景中,大量的网络应用只需要很少的流就可以分发业务,即使是汇聚层也不例外。

回想一下个人电脑时代,当时PC-XT只有256KB DRAM,因此程序员必须想办法应付有限的存储空间使得程序跑在有限的物理内存上。但是随着技术的发展,新的操作系统可以处理物理存储和逻辑存储:内存管理通过分页技术可以从物理内存中将没有使用的页置换到页面文件中,同时将逻辑存储的相关页面传递至物理内存。通过这种方式基本上解决了系统的逻辑内存问题,极大得提升了PC的可编程性。与此同时,硬件厂家也逐渐通过技术的发展将DRAM从256KB扩展到现在的GB级别容量,在30年的时间内提升了近百万倍。

有理由相信流处理技术也会走相同的途径。如同分页技术从物理存储中开辟出逻辑内存,缓存也可以用来从物理流中分离出逻辑流。通过专注于现有平台的资源利用,我们就可以真正释放逻辑流的限制,解决实际部署中碰到的问题。软件总是会领先于硬件的突破,只要专注于SDN软件和应用的开发,软件定义网络作为基础实施必将释放出更大的能量。


分享到:


相關文章: