编程语言正式进入大众视野

发表时间:2020-10-25 11:33:11 人气:2234

2014年,P4作为一种全新的专用编程语言正式进入大众视野,并且在网络界引起了极大地反响和关注。6个年头过去,随着P4的发展成熟,行业生态也逐步走向繁荣。业界首款完全P4可编程芯片Tofino于2016年推出,其后的Tofino 2于2018年推出。本篇将介绍基于可编程交换芯片的硬件负载均衡应用场景。Tofino系列以太网交换机ASIC是P4可编程ASIC,其灵活的P4可编程性使网络建设者能够在其网络中进行更好的交换和路由,包括高效的负载平衡。传统的硬件交换价广泛使用基于可配置的header 信息或流信息做静态哈希来实现硬件的负载均衡,主要的应用就是基于二层转发的LAG 和基于三层转发的等价路由ECMP。但是,在实际应用中,基于流信息的HASH来实现的负载均衡有明显的缺陷。在现实世界中,流量是动态的,有些流的速率低,而有些流的速率却非常高。流的速率也可能是随着时间的变化而变化。静态哈希负载均衡无法感知动态流的变化信息,因此在实际应用中对物理带宽的使用效能可能不佳。也许有些用户可能通过配置不同的哈希算法,添加静态因子,选择不同的流信息等方式尝试匹配实际流量模型。但是静态哈希负载均衡始终无法在现实世界中实现动态流量的真正均衡。Tofino可以为我们带来哪些高效的动态负载平衡?


首先,Tofino可以支持所有当前现有的固定哈希算法硬件负载平衡。支持丰富的标准哈希函数,例如CRC,XOR和相同的字段哈希或随机哈希。 Figure 1, ECMP path selection基于基本的哈希多项式,Tofino可以支持客户自定义的哈希多项式。用户可以增加静态ECMP / LAG成员的权重,也可以在ECMP / LAG成员之间进行轮循。如果接收端可以容忍流的重新排序,则用户还可以P4 编程Tofino将数据包逐个分发到ECMP / LAG成员,以实现非常公平的硬件负载平衡。Tofino还可以支持弹性哈希,以确保当ECMP / LAG的一个端口出现故障时,现有流保持其当前未受影响的路径,并且仅为新建流以哈希算法在无故障出口中选择均衡路径。Tofino还能提供更漂亮的想法。用户可以通过对Tofino进行P4编程,以针对实际的动态流量场景进行各种动态负载平衡。什么是Flowlet?Flowlet实际上就是micro-flow。一条流可以分成很多个flowlet,拥有相同的五元组。传统上每个流的ECMP选择路径,通常通过5元组或报文头的某种组合来检测流。在现实应用中,流量并非完全相同或相似。有些是老鼠流,有些是大象流。流的流量经常会随时间变化。有时,流量速率非常低,或闲置,有时流量速率很高。基于流的ECMP不能真正在任何时间之间实现流之间的平衡。好消息是TCP流量通常都是burst。在一个流中,有许多突发,并且在突发之间有相对较长的空闲时间,我们可以假设空闲时间大于等于α。每个突发都是一个小流。相同流的小流可以通过不同的ECMP路径,这不会引起任何重新排序问题。由于所有流量都被分成细小流量,因此在老鼠流或大象流之间也可以实现平衡。通过P4编程Tofino可以很容易地实现流量开关flowlet 识别和均衡转发。通过对Tofino进行P4编程,以检测每个流和数据包延迟。这段只需几十行的P4代码,即可在数据平面中自动完成操作,而不会干扰控制平面。用户可以定义最小的空闲时间α,然后通过计算每个流的空闲时间来识别出Flowlet,并为每个Flowlet分配一个Flowlet ID。之后,只需基于<5-tuple,flow_id>运行ECMP选路。通过用户特有流量模型选路,或通过流状态选路


此文关键字:

相关咨询

工厂展示

香港蓝月亮精选二四六 香港蓝月亮精选二四六

联系我们

香港蓝月亮精选二四六

联系人:文先生

手机:13183865499

QQ:1977780637

地址:成都市金牛区星辉西路2号附1号(台谊民生大厦)407号