P4: Programming Protocol-Independent

P4: Programming Protocol-Independent Packet Processors Paper Review for "P4: Programming Protocol-Independent Packet Processors"   Abstract Definition: P4 is a high-level languange for programming protocol-independent packet processors   - works in c... 阅读详情

P4: Programming Protocol-Independent

Packet Processors


We propose P4 as a strawman proposal for how OpenFlow should evolve in the future.

本篇论文中将P4作为OpenFlow的未来发展方向

P4旨在增加网络编程的灵活性

三个目标:

  1. 字段独立性:程序员能够自定义、改变包头字段(OpenFlow固定了包头字段数目,限制了南向协议)
  2. 协议独立性:交换机不应绑定到任何特定的网络协议。
  3. 目标独立性:程序员应该能够独立于底层硬件的具体细节来描述软件包的处理功能。

请添加图片描述

随着网络发展,OpenFlow协议规范越来越复杂,字段数不断增加,所以,P4提出:

不能再一直扩展OpenFlow规范,而应该支持更为灵活的解析数据包和 “匹配-动作” 的机制,且让控制器应用程序利用一个通用的开放接口来利用这些功能

总的来说:P4用来配置交换机,告诉交换机如何处理数据包


抽象转发模型

对于到达的数据包:

  1. 解析器处理:从报头中识别并提取字段,从而定义了交换机所支持的协议
  2. 将提取的报头字段传递给 “匹配-动作” 表,该表分为两部分:
    • Ingress Pipeline:数据包可以被转发、复制(用于组播、跨度或发送到控制平面)、丢弃或触发流控制
    • Egress Pipeline:执行对数据包头的每个实例的修改,例如,对组播复制

Packets can carry additional information between stages, called metadata, which is treated identically to packet header fields

请添加图片描述


一个P4实例

考虑一个L2网络部署的例子,使用顶部机架(ToR)的交换机,假设终端主机的数量正在增长,而核心L2表正在溢出

解决方案:

  • MPLS协议:为每个数据包打个Tag,只根据Tag转发(不足:难以实现具有多个标签的标签分发协议)
  • PortLand:重写MAC地址(不足:可能会破坏现有的网络调试工具,且需要新的代理来响应ARP请求)
  • P4:mTag(二者的结合)通过用4字节(32位)的Tag对“源路由”或者目的地定位器(例如PortLand’s Pseudo MAC)进行编码。每个核心交换机只需要检查其中的1个字节,并打开该信息即可

包解析器

P4的解析器其实是Header之间转换的状态机,根据检测到的值,跳转到下一个解析器

  • P4的解析器都从其start状态开始检测数据包,在stop状态或者出错时停止
  • 解析器提取到的包头信息将会交给 “匹配-动作” 表

请添加图片描述

  • 对于具有可编程解析器的设备,编译器将解析器描述转换为解析状态机
  • 对于固定解析器,编译器仅仅验证解析器描述是否与目标的解析器一致

操作规范

P4语言中动作是由一系列原语组成的:

  • set_field:设置某一包头中的某一个字段
  • copy_field:把某报头的某字段复制到另一报头的某字段
  • add_header:添加新报头
  • remove_header:删除报头
  • increment:修改报头某一字段的值
  • checksum:计算报头校验和

控制程序

经过解析处理之后:于是就来到了这里

请添加图片描述

  1. 包解析后,"source_check"表检查数据包和入口端口之间的一致性(例如,带有mTag的包只能从与核心交换机相连的端口收到)"source_check"表同时还会剥掉mTag头部,并在metadata中记录这个数据包是否带有mTag头部,防止重复的贴标签。
  2. "local_switching"表:
    • " miss ":表明数据包不是发给本地主机,交给"mTag"表进行匹配,再给"egress_check"表
    • " hit ":直接给"egress_check"表
  3. "egress_check"表:根据匹配结果或本地主机位置转发数据包,把未知目的地址的包交给SDN控制器

OpenFlow : targets fifixed-function switches

The control plane cannot express how packets should be processed to best meet the needs of control applications.

P4 : more flexible switches

The programmer decides how the forwarding plane processes packets without worrying about implementation details

请添加图片描述


参考链接:isLiuhy (cnblogs.com)

P4: Programming Protocol-IndependentPacket Processors 例如,程序员可能会声明一个IPv4标头,包含版本,头长度,服务类型,总长度,标识符,标志,片偏移,生存时间,协议,校验和,源IP地址和目标IP地址等字段。入口匹配+操作确定出口端口并确定数据包放入的队列,出口匹配+操作对包报头执行每个实例的修改,数据包可以在阶段之间携带称为元数据的附加信息,操作将数据包映射到队列,队列被配置为接收特定的服务规则,其被选择为交换机配置的一部分。每个转换都可能由当前标头中的值触发。中的特定字段,这些字段的值取决于该交换机在层次结构中的位置,以及数据包的传递方向(上行或下行)。 阅读详情

相关推荐

【P4论文分享】P4: Programming Protocol-IndependentPacket Processors

本文致力于将解决OpenFlow定义新协议的困难,根据抽象转发模型定义了一种用于交换机数据包处理的语言P4,该语言具有现场可重构、协议无关性和目标无关性的特性。

zoetu 3178

BCM交换芯片之L4分析

1 ContentAware processor 1.1 各厂家的L4功能 交换芯片ACL功能在不同的厂家中有不同的叫法,BCM称为ContentAware processor,Marvell称为Policy Control List(简称PCL),Realtek和Centec称为Access Control List 。 ContentAware Process(CAP)可用于ACL、DSCP、Qos等类型的运用。过滤功能可以作用于10/100/100...

wangyayayaya的专栏 5059

细读P4论文(Programming Protocol-Independent Packet Processors)

一、P4是什么?P4是一种高级语言,用来编写协议无关的包处理器,P4和SDN 控制协议Openflow一起工作。如何一起工作?我们可以看到SDN引入了控制平台和转发平台,而P4和OpenFlow就工作在控制平台和转发平台之间。那么都运行在其之间,OpenFlow和P4的区别在哪?OpenFlow没办法改变switch的处理逻辑,它只能通过表配置来对switch进行小小的控制,相当于OpenFlow...

zhangmeimei_pku的博客 9355

P4语言概述

P4 语言概述 目录 P4 语言概述 一. P4的语言特性 二. P4的模型结构 一. P4的语言特性 斯坦福大学的Nick McKeown 教授为了充分解放数据平面的编程能力于2014 年首次设计并提出了数据平面特定领域编程语言P4,经提出就得到了学术界和工业界的广泛关注和认可。工业界纷纷跟进并着手研制了一系列高性能的可编程硬件,其中主要包含Barefoot Tofino,Caviu...

AlwaySimple的博客 2万+

P4基础知识

为了解决 OpenFlow 编程能力不足的问题,Nick 教授等人提出了 P4 高级编程语言。P4 的优点主要有以下三点: 可灵活定义转发设备数据处理流程,且可以做到转发无中断的重配置。P4 语言具有对交换机协议解析流程和数据处理流程进行编程的能力。 转发设备协议无关转发。P4 可以自定义数据处理逻辑,支持下发对应的匹配和动作表项去指导交换机进行数据的处理和转发。 设备无关性。P4 的编译器会将通用的 P4 语言处理逻辑编译成设备相关的指令并写入转发设备,从而完成转发设备的配置和编程。 P4 的抽象转发

diligent_lee的博客 3023

Visual Studio 2015 插件开发 从入门到放弃(一)

必需知识:C#和Visual Studio (1)安装 Visual Studio 2015 的时候选择 Visual Studio 扩展性工具(Visual Studio Extensibility Tools)。对于已经安装好 Visual Studio 2015 的小伙伴,可以找VS2015的安装包,或者在程序与功能中找VS2015双击,在VS2015界面中选择 修改,再选择

AncientPeople的博客 2万+

P4学习(二) 阅读《P4: Programming Protocol-Independent Packet Processors》论文

相较于不停地扩展首部字段长度,为了避免规范的首部字段泛滥现象。P4被提出用于解析数据包和匹配报头字段图一 P4与现有API的关系新的“OpenFlow 2.0”API被配置用于灵活的机制来解析数据包和匹配报头字段可编程解析器:数据包首先通过一个可编程解析器。与OpenFlow假设的固定解析器不同,P4的模型支持可编程解析器,这允许定义新的报头格式,从而增加处理不同类型数据包的灵活性。匹配+动作阶段:经过解析器处理后,数据包进入多个匹配+动作阶段。这些阶段可以是串行的、并行的,或者两者的结合。

qq_51976556的博客 1704

数学建模灵敏性分析(一阶、二阶灵敏度)python代码+懒人专用版

对于勉强看懂了灵敏度分析的同学来说,本文给出一个方便移植、修改的python程序,可以很方便地进行灵敏度分析。

春江花朝秋月夜 1万+

P4:编写协议无关的包处理器(译自:《P4: Programming Protocol-Independent Packet Processors》转自:SDNLAB--译者毛健炜)

摘要 P4是一门编写协议无关的包处理器的高级语言。P4与SDN控制协议联合在一起工作,比如OpenFlow。在OpenFlow当前的协议形态中,它精确地指定了供它操作的协议头。这个协议头集合已经在短短的几年时间中,从12个域增长到了41个域,这同时也增加了协议的复杂性,但是仍然没有提供添加新的自定义首部的灵活性。 在这篇论文中我们将P4作为一个展示了OpenFlow在未来应该如何演进的草案协议...

Tasdily的博客 4005

中移物联ML307C模组OPENCPU开发环境搭建全攻略

本文详细介绍了中移物联ML307C模组OPENCPU开发环境搭建的全过程。从OPENCPU模式的核心优势解析,到SDK获取、Python与scons工具安装,再到解读SDK目录结构与实战编译命令,最后提供常见问题避坑指南,帮助开发者快速构建高效的物联网应用编译环境。

weixin_29168393的博客 742

从SolidWorks到URDF:插件使用、关节配置与PyBullet仿真避坑指南

本文提供了一份从SolidWorks导出URDF模型并导入PyBullet进行仿真的完整实战指南。详细讲解了SolidWorks插件的正确安装与配置、关节类型的选择与坐标系对齐的核心技巧,并针对PyBullet仿真中常见的模型散架、路径错误、物理属性异常等问题提供了深度避坑解决方案,帮助机器人开发者高效完成从设计到仿真的全流程。

weixin_29081101的博客 542

Programming Protocol-independent Packet Processors (P4)

P4语言:数据面可编程 OpenFlow:控制面可编程 类比C语言 C语言源代码-GCC编译-可执行文件-运行在CPU; P4怨言源代码-P4编译器-硬件或其他形式输出-运行在CPU,FPGA,ASIC中;

RToax 461

基于粒子群算法的PID控制器优化设计

粒子群算法、PID、寻优

qq_46107700的博客 2万+

Programming Protocol-Independent Packet Processor

P4 學習論文:https://arxiv.org/pdf/1312.1719.pdf%20

biefeidu5783的博客 315

YOLOv11改进策略【Conv和Transformer】| IJCAI 2024 利用FreqFormer中的SFA 空间 - 频率注意力和CTA 通道转置注意力 二次改进C3k2

在FreqFormer模型中,SFA(Spatial-Frequency Attention)和CTA(Channel Transposed Attention)模块是关键组成部分,它们针对传统Transformer在图像超分辨率任务中的不足而设计,旨在更好地恢复高频细节,提升模型性能。

Limiiiing的博客 758

反应动力学仿真软件:Kintecus_(4).用户界面及操作指南

在 Kintecus 中,反应方程的定义非常灵活。您可以定义简单的一阶反应、复杂的多步反应以及不同类型的反应机制。

kkchenjj的博客 1182

Programming Protocol-Independent Packet Processors

引言 OpenFlow协议固定的包头域数目,使得南向协议过于死板。 P4可以实现自定义包头,增加灵活性。 P4是OpenFlow未来发展的方向。 We propose P4 as a strawman proposal for how OpenFlow should evolve in the future. P4的三个目标: 可重新配置。 协议无关性。 目标无关性:强调了P4的通用...

weixin_30847271的博客 691

反光柱定位算法中的移动机器人姿态计算原理-经典三边定位最小二乘法计算定位-直接法计算定位

(二)计算姿态方式是我们已经通过最小二乘得到了小车在地图中的位置或者是雷达在地图中的位置,又因为我们知道雷达与小车的安装坐标,所以可以求解出一其中一个坐标的知量,通过小车在地图中坐标与雷达在地图中坐标可以得到一条向量,通过计算向量在地图中的角度就能得到姿态了。与最小二乘三边测量法相比,新算法在动态调整、优化过程和鲁棒性方面优势明显,尤其适合动态环境下的机器人定位,而最小二乘三边测量法在动态复杂环境中精度相对较低。(一)与(二)的区别主要是在计算姿态上的算法不同。经典三边定位最小二乘法 (法一)

苏凯的博客 1140

p4c编译器完全指南:从入门到精通P4_16参考编译器的终极教程

p4c是P4_16编程语言的参考编译器,为网络数据平面编程提供了完整的开发工具链。这个强大的编译器支持P4-14和P4-16两种语言版本,是网络工程师和研究人员进行可编程网络开发的必备工具。无论您是网络编程的新手还是经验丰富的开发者,本指南将带您全面了解p4c编译器的核心功能、安装配置和实际应用场景。 ## 🚀 什么是p4c编译器? p4c编译器是P4编程语言的官方参考实现,专门用于将高级网

gitblog_00931的博客 1033

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SDN 编程语言 p4(SDN programming language P4)

行业趋势,SND是未来. P4 是未来。 SDN is inevitably, and P4 is inevitably。 P4 =Programming Protocol-Independent Packet Processors Cisco 感到压力了。 OpFlex: An Open Policy Protocol White Paper Cisco reveals Ope...

weixin_30906425的博客 1236

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

P4论文翻译浅读

P4原论文研读 P4: Programming Protocol-Independent Packet Processors 这里原文翻译就是:可编程的协议无关的数据包处理器 摘要 P4是一种用于编程协议无关的包处理器的高级语言。在支持P4语言的地方都能够应用,主要还是交换机(路由器)上的应用。 P4工作在SDN的控制平面,就像openflow,openflow有一些缺点,需要针对特定的协议头尽心操作,操作集合字段几年就从12个增加到41个,复杂性增长了并且针对新的头部协议处理不够灵活。 P4作为openf

Ds的博客 3287

SDN-iot通过p4协调访问控制的过程

在OpenFlow+RBAC/ABAC 方案的基础上,下面对P4 可编程 SDN 访问控制等新型访问控制方案进行解析。P4可以极大减少 PacketIn 报文,海量 IIoT 终端并发下控制器无性能瓶颈;P4 可编程数据面 SDN 访问控制(下一代 OpenFlow 替代方案)工控协议深度解析能力极强,可在转发层拦截恶意工控指令;转发时延微秒级,完美满足 PLC 硬实时控制要求。

Hiyajo pray的博客 163

P4实战:从零构建ARP转发逻辑,掌握可编程数据平面核心

地址解析协议(ARP)是局域网通信的基石,它通过广播请求和单播应答,实现IP地址到MAC地址的动态映射,解决了网络设备间直接通信的寻址问题。其核心价值在于为上层网络协议提供了透明的地址转换服务,是TCP/IP协议栈中不可或缺的环节。随着软件定义网络(SDN)和可编程数据平面技术的发展,网络工程师得以深入协议内部,自定义报文处理逻辑。本文聚焦于利用P4语言,在BMv2软件交换机上亲手实现ARP报文的解析、匹配与转发流水线,通过构建一个包含主机发现与地址响应的完整实验环境,演示如何从协议原理出发,完成一个具备实

weixin_33835103的博客 428

P4实战:从零构建ARP代理,掌握数据平面可编程核心

地址解析协议(ARP)是局域网通信的基石,它通过广播请求和单播应答,解决了IP地址到MAC地址的映射问题。其工作原理基于查询-响应机制,是网络设备实现二层转发的基础。在现代软件定义网络(SDN)和数据平面可编程的背景下,理解ARP处理流程的技术价值尤为突出。通过可编程语言(如P4)重新定义ARP转发逻辑,开发者能够深入网络数据包的解析、匹配与修改过程,实现诸如ARP代理等高级功能,从而优化网络性能与安全性。这一实践是理解网络协议栈底层运作、迈向云网络、智能网卡及高性能网关开发的关键一步。本文将以P4编程为例

weixin_30675247的博客 447
上一篇: SDN(Software Defined Network) 软件定义网络学习
下一篇: 【实操+学习】Git相关操作
K_Haki
博客等级 码龄5年 18粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K_Haki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值