一. 缘由
好的流表设计,在大量网络产品中是一个相当重要的环节,如dpi产品、取证产品、内容审计产品等。
二. 简介
1.介绍
在数据中心的当代,集群和工作负载的调度是一个非常普遍的任务。许多工作负载在集群中需要有一个确切的分区key空间。当一个包进入集群,在进入节点直接将数据包分发的处理节点。例如,具有分解存储的数据中心使用存储元数据将I/O请求转发到正确的后端存储集群的中,有状态的数据包检查将匹配流表中标签来发送进入的数据包到其预期的深度数据包检测(DPI)设备,等等其他。
EFD是为每条流key使用完美hash生成一个目标或值的分发库。它具有以下优点:首先,因为它使用完美的散列,它不存储密钥本身,因此查找性能不依赖于密钥大小。其次,目标/值可以是任意值,因此系统设计者和/或 运营商可以更好地优化服务速率和群集间网络流量定位。 第三,由于存储要求远小于基于散列的流表(即更适合于CPU缓存),所以EFD可以扩展到数百万个流密钥。 最后,利用当前优化的库实现,性能完全可扩展,任意数量的CPU内核。
2.基于流的分发
2.1基于计算的方案
流量分发和/或负载均衡可以简单地使用无状态计算完成,例如使用轮询调度或基于流key作为输入的简单计算。例如,可以使用散列函数来基于流key(例如h(key)mod n)将特定流引导到目标,其中h(key)是流key的哈希值,并且n是可能的目标。 在该方案(图13.1)中,前端服务器/分发/负载平衡器从输入包中提取流key(如五元组)