33

Intel Selena Ding:‍‍未来‍‍可编程交换机的应用

 3 years ago
source link: https://www.sdnlab.com/24257.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在2020网络数据平面峰会上,来自英特尔互联部门BXD(barefoot networks)产品线的客户解决方案架构师——Selena Ding,为我们讲述了可编程交换机在未来的应用。

Barefoot交换机已经面世接近‍‍6年,与传统固定功能的交换芯片相比,很多应用都是‍‍由编程者自己定义,不会依赖于芯片的设计人员。‍‍因此‍‍可编程交换机在业界‍‍带来了更多的‍‍创新。那么可编程的交换机是如何使用的?

减少复杂,增加容量

‍‍首先它能够‍‍‍‍减少‍‍‍‍芯片应用的复杂度,‍‍同时能增加表项的‍‍大小。

d01.png

可编程芯片在被编程之前是空的,应用人员写一个P4程序,只需‍‍‍‍放入个人需要的功能,不需要把所有的功能放进这个P4程序。‍‍比如你只支持IP‍‍三层Ipv4、Ipv6,‍‍支持一些‍‍ Fail over、‍‍QoS的功能,‍‍那其他不相关的功能就不需要实现了。

‍‍接下来把程序‍‍通过编译器编译之后生成的二进制代码‍‍下载到芯片里,芯片‍‍就会实现你所需要的功能,‍‍而不相关的功能不会在芯片上。‍‍因此该芯片非常简洁,在运行过程中‍‍也不会受到困扰,‍‍维护起来也方便,‍‍相应‍‍的资源可以最大限度的给所需要的‍‍这些功能来用。

快速实现功能

可编程交换机‍‍可以迅速实现新功能。‍‍‍‍以下几点是一些新功能怎样快速应用的实例。

  • 各种各样的tunnel。以前用固定功能的交换机实现一个tunnel,在芯片里是非常困难的,需要‍‍‍‍好几年‍‍来讨论到应用。而可编程交换机不需要这么长的周期,‍‍不管是PPP over Eth还是GTP tunnels,或者是其他‍‍客户‍‍自定义的tunnels,可编程的交换机都能够很快的通过编程来实现。
  • 在data-center的网络中,routing的规则可能有一些变化,对于这种不同规则的routing的实施,‍‍用P4可编程非常容易实现。
  • 对于‍‍‍‍拥塞的管理,后面会提到一个例子HPCC,使用可编程的特性‍‍来实现这种高效的‍‍‍‍拥塞管理。
  • 更多的‍‍领域上的应用,可以‍‍‍‍实现一些‍‍传统的‍‍运营商网络中间的应用,例如NFV的加速,‍‍或者5g承载网的加速。

有‍‍应用者用Barefoot交换机构建出世界上最快的middle box。‍‍最常见的例子‍‍‍‍一个是‍‍ Layer-4的load balance,另外一个就是Firewall和DDoS的detector。‍‍这两种传统的应用,‍‍‍‍以前通常是用server来做,server当然可以做得非常灵活,‍‍但是‍‍随着网络的建设发展,‍‍随着带宽的需求越来越高,‍‍那‍‍如何‍‍支持一个大带宽的Layer-4的load balance和Firewall和DDoS的detector呢,用可编程的交换机是非常容易实现的。

d02.png

在‍‍互联网的应用中,‍‍‍‍有很多大表项的需求,但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交换机能够完美解决。

d03.png

Tofino的Telemetry可以灵活使用多种模式。

‍‍第一种是INT-MD模式。这种模式下,‍‍获得的Telemetry信息,比如switch ID、到达的时间等信息‍‍都被直接封装在报文里,在下一级的交换机可能又有新的Telemetry信息,再‍‍把新的信息继续封装到原始的报文里,在最后的‍‍节点可能有好几条交换机里面的Telemetry信息,最后把这些信息封装成一个新的‍‍packet,‍‍送到Monitor Sever去分析。这种模式的‍‍副作用是原始报文的内容和长度会发生变化。

d04.png

如果你希望原始报文的‍‍长度和内容不发生任何变化,你可以使用另一种模式——INT-XD模式。在这种模式下,交换机里所有的Telemetry信息封装成报文,到每个交换机都会生成新的Telemetry 信息,这些信息都直接‍‍送到Monitor Sever做进一步处理。‍‍这种模式的优点是布网灵活,原来的报文不会‍‍有任何变化,但‍‍报文的个数会‍‍略多。

总的来说,P4‍‍ Data-plane Telemetry‍‍真正带来的好处是:

  • 首先,可编程的芯片上实现Data-plane的Telemetry是非常精细的。它可以基于流做Telemetry,可以基于每个报文做Telemetry,也可以基于每个事件(‍‍比如丢包、拥塞)‍‍做Telemetry。它的精度非常高,是基于纳秒级的Telemetry信息。
  • 第二,由于可以基于事件做Telemetry,‍‍那么也可以很好的管理 report message,一些‍‍无关的message不需要发到‍‍ server。‍‍所以对server来说,是一个‍‍减轻压力的Telemetry。
  • 第三,由于它的精度非常高,Microburst就可以被看到,Microburst在网络中间是普遍存在的,但是Microburst是非常短时间内发生的一些拥塞,‍‍发生完就消失了,用以前传统方法难以抓取。而Barefoot交换机的可编程的能力可以非常容易地抓到Microburst。

d05.png

上图是‍‍在monitor server上面跑Deep insight‍‍看到的Microburst的情况。Telemetry的信息来自Barefoot交换机,‍‍送到Server上‍‍把Microburst的信息‍‍在以图形化的方式显示出来。这张图中每一个颜色代表一条流,可以看到不同的流在队列里占比‍‍的情况,‍‍以及所花费的时间,‍‍同时窗口也是可以调整的,可以调整到更小的‍‍时间窗,也可以用更大的时间窗来观察。

更多功能

除了标准的交换机功能,Barefoot可编程交换机还可以实现更多的功能。

d06.png

回顾GPU,GPU最开始是处理一些图形运算,‍‍随着图形运算的发展,GPU可以做更复杂的运算,‍‍包括机器学习、‍‍‍‍虚拟现实等。可编程交换机Tofino和Tofino的下一代,‍‍也是同样的情况,最开始是实现一些基本的交换,后来引申出data plan的Telemetry,Tofino可编程交换机的应用范围越来广。

d07.png

Tofino如何实现机器学习的加速呢?GPU‍‍‍‍在机器学习运算上所花的时间越来越短,‍‍但‍‍对于机器学习总体来说,它的表现并没有相应的提高,它还有很多时间‍‍消耗在不同‍‍ worker之间的等待。而‍‍使用Tofino可以帮助‍‍机器学习消除等待时间,因为Tofino本身有很大的带宽去支持交换,Tofino交换机可以把数据做一些运算再分发给大家,由此可以大大节省‍‍所有worker之间的等待时间。

d08.png

通过上图可以看到在不同模型下实验的数据,‍‍最好的达到了接近‍‍三倍的加速。

d09.png

‍‍对于拥塞管理,在‍‍2019 SIGCOMM上,阿里巴巴、哈佛、‍‍ MIT、 cambridge联合‍‍发布了一篇文章,‍‍‍‍最早提出了HPCC概念,提出用接近于0的队列‍‍来高效实现拥塞管理,‍‍其中使用的一个关键技术是Tofino‍‍可编程交换机以及‍‍‍‍基于Telemetry做‍‍数据面的一些改造,在这种模式下,‍‍‍‍系统可以得到每个‍‍节点交换机‍‍上的Telemetry信息,这个信息‍‍再传到server,再给‍‍发送端做一个反馈,‍‍通过这种实时地采集数据,并且做一个反馈的‍‍操作,‍‍就可以非常高效地实现拥塞管理。

以上内容就是Selena Ding关于可编程交换机应用的全部分享。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK