P4语言典型应用盘点与解析

小o 更新于 3年前

一、P4与SDN的关系

SDN是网络的未来,P4是SDN的未来,基于openflow的传统SDN专注于可编程的控制平面,数据平面仍然是由固定功能的ASIC组成,也就是说openflow的实现仍然需要配套的芯片支持,openflow是与目标硬件相关的。而P4专注于可编程的数据平面,可以自定义芯片对于数据包的处理方式,添加自己的新功能,新协议,或者对原有协议栈进行优化,更合理的分配片上资源。openflow利用匹配域可抽象整个TCP/IP协议栈的绝大部分功能,而P4可以完整描述openflow的功能。

二、可编程数据平面

1、快速开发和验证新协议

为了支持网络的快速演进,标准化组织不断推出新的封装和传输协议,GENEVE,NSH,VXLAN,GEP等等都是最近推出的,与此同时,数据中心也已经开始推出自己的协议用来隔离各个租户,使其业务互相不受影响。每一种自定义的协议都有其独特的优势,基于在大型网络中多年的运行经验。

2、移除一些无用的协议,简化和精简网络

网络世界里有数百种协议,然而一个数据中心网络中往往只需要三到四种,问题在于,不同的数据中心会使用不同的协议组合,因此固定功能的交换机会内置这些协议组合的超集,导致一些珍贵的交换机资源被用到了一些不需要的协议上。比如我们可以减少L2转发表的大小然后重新分配内存空间到L3路由表。在tofino中,我们可以将L3 IP路由表从 300k增加到1.2M 支持更大的网络和地址空间。移除不用的协议也意味着减少出错的机会,网络由于根本不用但是却写入到交换机ASIC中的协议错误而引起的中断。由于并不使用这些协议,所以很难做出判断来debug,使用P4 你只需要添加那些你需要的协议,专注于那些你所需要的表项,简化交换机结构,减少出错的机会。

3、INT实现整个网络的完全可视化,可追溯每一个数据包的转发过程

网络监控是可编程网络的一个典型应用,首先我们可以在几个小时内添加更好的监控特性,而不是需要修改整个转发逻辑而耗费好几年时间,其次,没有什么设备厂家比网络运维人员更清楚到底需要监控哪些指标,使用PDP 运维人员可以快速地添加强大的监控,分析和诊断特性,利用INT,举个例子运维人员可以详细决定什么信息他想获取,比如 数据包通过每一个交换机的精确延时,或者队列中其他数据包, 以及软件的版本,每个包所匹配的表项,因此每个数据包都可以成为一个探测包,不会产生任何新的流量,如此史无前例的可视化能力。基本实现已经可用的INT.p4,这个程序已经可以实现完全的自动化数据采集和修正,可作为self-driven网络的一部分。

4、将middlebox的功能集成到PDP上

许多网络运营商仅仅使用了middlebox中的很少部分功能,现在他们可以直接将需要的功能编程到交换机上, 淘汰掉大量昂贵的middlebox。已经有成功使用barefoot tofino交换机实现middlebox功能进行实际部署的案例,成本方面取得了显著的降低,在大部分情况下,他们的性能比之前更强,因为他们运行在tofino上实现了全线速转发,而不是传统CPU,在一个场景中,L4负载均衡被集成到tofino交换机上,维持十万台服务器的数千万个连接. DIP池可以调整大小,而无需中断此时的连接,所有这些只需几百行P4代码,相似的方法可以集成其他middlebox比如防火墙,入侵检测系统,地址端口转换器,流量重复数据删除等,我们正走在将middlebox合并到交换机中的革命之路上。

5、将部分分布式应用程序直接部署在网络上

一个大型数据中心里运行着大量的分布式应用,并且也有数千台交换机的规模,交换机是否具备加速分布式应用,卸载服务器load的能力呢?最近研究者们证明了如何使用paxos一致性协议可以添加到网络中通过利用P4实现其中的一小部分,并添加到交换机中,如此一来可以对分布式应用可以加速几个数量级,其余部分可以构建新的键-值管理服务直接部署到数据平面上,我们可以参与许多新型的快速的in-network应用和服务,来自由免费无缝集成到网络中。

这仅仅只是一个开始,冰山一角,用户可以使用这项技术完成更多的功能,我们的目标是将差异化的方法交到用户手中,他们可以对他们最熟悉的网络做出创新,PDP开启了网络用户自**的革命,使得研究者,开放网络社区可以自己演进。

总而言之barefoot首次将性能和可编程能力完美结合在一起,P4-enabled Tofino以及SDK的组合是革命性的,真正的可编程交换机和业界最强的性能。当高性能和可编程能力的优势逐渐普及开来后,我们相信一个经常被忽略的影响将会成为一个巨大的影响力,高性能和可编程能力改变了网络的所有者对于整个网络的洞察力,在过去,网络的可视化是芯片公司或者系统设备公司的领域,他们可以以此提高价格获取利润。如今,网络的运维人员可以在正在运行业务的网络上添加自己的应用程序来优化其工作状态,并且他们无需与系统或者芯片公司分享这些设计,这种由P4程序获得的对于网络的洞察力将成为其自己的知识产权,他们可以将这些IP移植到其他厂家的可编程交换机上,或者同厂家的不同产品上,甚至购买白盒设备,因此,网络的灵活性和开放性得到了进一步的提升。

三、典型应用

1、带内遥测in-band network telemetry (INT)
带内测量是混合测量方法的一个例子,在过去几年中获得了很大的动力。带内遥测[5]的思想是,路径上的每个节点都在数据平面数据包的报头中包含时间戳(和可能的其他信息),从而允许细粒度的测量和拥塞检测。这些方法被称为带内网络遥测(Int)[6]和现场oam(Ioam)[7],它们分别正在p4社区和ietf中讨论。

传统网络监控技术比如SNMP 基于通过控制平面向底层网络获取信息的方式,要么约束性太强要么速度太慢,类似的,比如netflow, sflow,synthetic探针等,并不足够精确来检测由于短时事件或者microbursts 等导致的问题,这可能会造成服务和应用程序的严重事故,缺少可以追溯以及可以将相关事件产生联系的metadata和历史信息都几乎不可能获取,特别是在规模很大的网络中,最后,Network Packet Broker (NPB)网络数据包代理的预先支付的成本和TCO可能会相当高。

INT 使得数据平面具有端到端的搜集能力,实时地状态信息。在端点上直接嵌入指令信息到数据包中列出网络状态的类型将被直接从网络中被搜集起来,每个网元在流经的数据包中插入被请求的网络状态信息,一个P4程序可以被用来作为一种自然的方式来表示INT中数据包所需要被解析和修改的包头类型。

搜集网络数据的过程如今可以直接在实际流量中完成,给与了可以在虚拟或者物理的端到端网络中实时地发现和搜集网络状态的能力,这样打开了无限可能性来监控你的网络,允许网络运维团队来快速捕获和描述哪些由于性能瓶颈,网络故障或者配置错误而出现的问题。

2、PLT(Path-Latency Tracking)路径延时跟踪
搜集每个包在每一跳的物理路径和单跳延时,端点将有用的数据导入分析引擎,INT sink会在事件触发后产生report发送到分析引擎,比如发现新的连接,以存在的链接路径发生变化,端到端或者hop by hop延时发生明显变化等,都会异常行为都会被快速发现并溯源。

PLT为什么有用?
1、实时的网络异常检测和产生告警信息;
2、快速检查链路拥塞,诊断哪些应用导致了拥塞;
3、交换机端口拥塞,异常排队延时的出现;
4、无用的交换机或者链路;
5、链路利用率不均衡(ECMP LAG);
6、网络中出现环路;
7、交互式分析;
8、按需路径可视(E2E 或者 src dst TOR对);
9、生成流量矩阵。

PLT的设计
如果每个包都向分析引擎发送report的话,将会导致产生大量冗余数据,采用智能的反冗余程序让SINK选择恰到时机发送report,report以镜像包的形式发到分析引擎。
分析引擎设计

可扩展型分布式快速数据处理系统,用于实时处理PLT报告,产生告警信息并将报告转存到数据库,基于开源工具集,kafka,spark streaming,cassandra。模块化设计使得用户可以无缝替换组件,是一种低系统开销的设计。

3、in-band DDoS带内防御系统

Barefoot networks公司描述了一种典型的DDOS检测和削弱的解决方案,这种方案有许多带外的DDOS检测应用来监控流量并将其引流到状态防火墙,在这个方案中,DDOS检测设备由于成本和规模问题不能监控所有的网络流量,因此运营商必须设置一些静态的流量镜像规则在边缘路由器上,来仅仅镜像一部分流量,举个例子,如果网络运营商想要保护DNS服务,他们将会镜像那些需要经过DNS的UDP流量到DDOS检测设备。

因此,随着分布性强且复杂的攻击行为,基础设施需要要么有能力扩大规模来检测T比特/秒级别的流量和数百万条连接,要么必须有能力交换更多的选择性模式在其中低精确度的监控小规模流量,以便提高检测速度而不引入额外的开销到控制平面,tofino应用程序也可以估计和阈值在数据平面上进行直接比较。在这种情况下 当DDOS检测开启时数据平面会告知控制平面(>带内DDOS检测的优势

1. tofino的应用程序可以保证在面对任何类型的攻击时保持高可扩展性和线速的性能,并且尽量减少片上资源的消耗;
2. 带内DDOS检测可以用tofino来实现并且保证高精度,和几乎可忽略不计的误判;
3  P4的可编程能力允许用户灵活地并可定制化DDOS检测方式和攻击削弱行为;
4. 细粒度的统计允许用户快速确定哪个应用和服务正在遭遇攻击;
5 当与其他DDOS解决方案,比如 netflow 进行比较时,基于tofino的方案在检测DDOS攻击时具有多个数量级的速度优势(几十毫秒 vs 几十秒)。

0个评论