在2020网络数据平面峰会上,来自英特尔互联部门BXD(barefoot networks)产品线的客户解决方案架构师——Selena Ding,为我们讲述了可编程交换机在未来的应用。
Barefoot交换机已经面世接近6年,与传统固定功能的交换芯片相比,很多应用都是由编程者自己定义,不会依赖于芯片的设计人员,因此可编程交换机在业界带来了更多的创新。那么可编程的交换机是如何使用的?
(文末有视频)
减少复杂,增加容量
首先它能够减少芯片应用的复杂度,同时能增加表项的大小。
可编程芯片在被编程之前是空的,应用人员写一个P4程序,只需放入个人需要的功能,不需要把所有的功能放进这个P4程序。比如你只支持IP三层Ipv4、Ipv6,支持一些 Fail over、QoS的功能,那其他不相关的功能就不需要实现了。
接下来把程序通过编译器编译之后生成的二进制代码下载到芯片里,芯片就会实现你所需要的功能,而不相关的功能不会在芯片上。因此该芯片非常简洁,在运行过程中也不会受到困扰,维护起来也方便,相应的资源可以最大限度的给所需要的这些功能来用。
快速实现功能
可编程交换机可以迅速实现新功能。以下几点是一些新功能怎样快速应用的实例。
有应用者用Barefoot交换机构建出世界上最快的middle box。最常见的例子一个是 Layer-4的load balance,另外一个就是Firewall和DDoS的detector。这两种传统的应用,以前通常是用server来做,server当然可以做得非常灵活,但是随着网络的建设发展,随着带宽的需求越来越高,那如何支持一个大带宽的Layer-4的load balance和Firewall和DDoS的detector呢,用可编程的交换机是非常容易实现的。
在互联网的应用中,有很多大表项的需求,但Tofino的芯片上可能不足以支持的这种超大的表项,在L4 Load Balance里,如果只是用Tofino实现,只能支持几个million的连接,但这是远远不够的。
对此,英特尔的新方案Tofino XLT可以解决,Tofino XLT是一种扩展的方案,Tofino通过外接的FPGA连接DRAM,如此可以支持超大表项。可以把FPGA,DRAM和Tofino看作成一个虚拟的芯片,它拥有非常灵活的可编程能力和非常大的表项支持。
Data-plane Telemetry
可编程交换机另一个热门应用是Data-plane的Telemetry。在交换机可编程功能出现之前, Data-plane的Telemetry的功能非常有限的,实现控制面的Telemetry精度不高,没有办法去精确地知道队列里发生的Micro burst,或是短时间里发生的各种拥塞情况。这些也是网络运维的朋友最关心的4个问题:
对于这4个问题,Barefoot交换机能够完美解决。
Tofino的Telemetry可以灵活使用多种模式。
第一种是INT-MD模式。这种模式下,获得的Telemetry信息,比如switch ID、到达的时间等信息都被直接封装在报文里,在下一级的交换机可能又有新的Telemetry信息,再把新的信息继续封装到原始的报文里,在最后的节点可能有好几条交换机里面的Telemetry信息,最后把这些信息封装成一个新的packet,送到Monitor Sever去分析。这种模式的副作用是原始报文的内容和长度会发生变化。
如果你希望原始报文的长度和内容不发生任何变化,你可以使用另一种模式——INT-XD模式。在这种模式下,交换机里所有的Telemetry信息封装成报文,到每个交换机都会生成新的Telemetry 信息,这些信息都直接送到Monitor Sever做进一步处理。这种模式的优点是布网灵活,原来的报文不会有任何变化,但报文的个数会略多。
总的来说,P4 Data-plane Telemetry真正带来的好处是:
上图是在monitor server上面跑Deep insight看到的Microburst的情况。Telemetry的信息来自Barefoot交换机,送到Server上把Microburst的信息在以图形化的方式显示出来。这张图中每一个颜色代表一条流,可以看到不同的流在队列里占比的情况,以及所花费的时间,同时窗口也是可以调整的,可以调整到更小的时间窗,也可以用更大的时间窗来观察。
更多功能
除了标准的交换机功能,Barefoot可编程交换机还可以实现更多的功能。
回顾GPU,GPU最开始是处理一些图形运算,随着图形运算的发展,GPU可以做更复杂的运算,包括机器学习、虚拟现实等。可编程交换机Tofino和Tofino的下一代,也是同样的情况,最开始是实现一些基本的交换,后来引申出data plan的Telemetry,Tofino可编程交换机的应用范围越来广。
Tofino如何实现机器学习的加速呢?GPU在机器学习运算上所花的时间越来越短,但对于机器学习总体来说,它的表现并没有相应的提高,它还有很多时间消耗在不同 worker之间的等待。而使用Tofino可以帮助机器学习消除等待时间,因为Tofino本身有很大的带宽去支持交换,Tofino交换机可以把数据做一些运算再分发给大家,由此可以大大节省所有worker之间的等待时间。
通过上图可以看到在不同模型下实验的数据,最好的达到了接近三倍的加速。
对于拥塞管理,在2019 SIGCOMM上,阿里巴巴、哈佛、 MIT、 cambridge联合发布了一篇文章,最早提出了HPCC概念,提出用接近于0的队列来高效实现拥塞管理,其中使用的一个关键技术是Tofino可编程交换机以及基于Telemetry做数据面的一些改造,在这种模式下,系统可以得到每个节点交换机上的Telemetry信息,这个信息再传到server,再给发送端做一个反馈,通过这种实时地采集数据,并且做一个反馈的操作,就可以非常高效地实现拥塞管理。
以上内容就是Selena Ding关于可编程交换机应用的全部分享。
视频回顾
https://v.qq.com/x/page/k3108z69idk.html