P4      

     

       P4 (Programming protocol-independent packet processors),是一种语言,是一种针对网络转发层的语言。对于支持P4的网络设备,网络工程师可以通过下发P4脚本,实时更改该网络设备转发包的模式与方法,以响应网络需求。

       要介绍P4还是要从传统网络说起,传统网络是分布式控制的,网络设备内部是由数据转发层和控制层两个模块组成,对于网络管理员来说如同一个黑盒,在网络需求不大的年代,网络管理员尚可通过配置单个网络设备,来管理整个网络。当进入信息化及数据中心的时代后,各个厂家网络设备越来越复杂,只了解一个厂家设备就需要了解上万条指令;当业务发生变化时,一个个设备配下来,浪费大量的时间及人力成本。这样的网络配置及管理方式已经远远不能满足现代网络的需求。于是,怎样更快更有效率的管控网络成为大家关心的议题。在2008年,斯坦福大学的学者提出将数据转发层和控制层两个模块分离,通过集中控制器和标准化的接口对各种网络设备进行统一管理和配置。这就是最初 SDN(Software Defined Network)软件定义网络的概念。这为网络的管理,统一配置及网络资源的重新分配提供了广阔的空间。 SDN是一种分离了控制层和数据层的网络架构,并且把网络管理集中为“网络操作系统”,这种操作系统具有可编程性及易于升级的特点。这为网络层的智能应用提供了无限可能性。

       然而随着SDN在业界,主要是新兴数据中心的广泛应用,人们发现,Openflow做为SDN的协议在不断的被扩充,却仍然不能完全满足现在网络的需求。而设备厂家也疲于应付Openflow从1.0往上的不断升级。网络革新和硬件守旧的矛盾日益突出。于是提出SDN的那群斯坦福人提出了P4,这种针对网络转发层的语言,实际上就是促使硬件来适应网络需求,及网络可编程性的软件语言。P4语言简单,使网络管理员能够用软件改变硬件行为,对于网络无疑是革命性的变革。

     P4主要有下面三个特点:

  • 不受协议约束。P4只是定义转发层如何处理包。
  • 不受目标对象约束。P4适合从ASIC到软件交换机的任何形式的设备。
  • 现场可重构。P4允许网络工程师用他们的方式更改转发层处理包的方式。 

       上图为从P4 Specification【1】中截取的P4配置数据层的方式。网络工程师输入P4程序,经过P4编译器生成P4 runtime给数据层,同时编译器生成网络需求发给控制层。这样控制层可以通过生成的API接口实时更改数据层对网络包的处理。

       锐文科技的P4 IPcore Package,提供P4编译器,runtime module,自生成API,以及基于FPGA的P4 IP core;允许用户通过输入P4程序,完成数据层面的实时重构。为网络的实时可编程性提供从硬件层的实时支持。

 

 【1】https://p4.org/p4-spec/docs/P4-16-v1.0.0-spec.html

 

 


此内容为原创,版权归锐文科技所有。

欢迎转载,严禁抄袭。