P4 Tutorial 快速上手 (1) 教程库简介

提示:本系列仅适用于软件交换机BMv2
P4 Tutorial 快速上手系列 (2)


文章目录

  • P4 Tutorial 快速上手 (1) 教程库简介
  • 前言
  • 一、P4 tutorial 库简介
  • 二、关键文件介绍
    • 1.exercises
    • 2.utils
    • 3.vm-ubuntu-20.04和vm
    • 4.P4_tutorial.pdf
    • 5.p4-cheat-sheet.pdf
    • 6.README.md
  • 总结

前言

目前,已有中文资料对P4开源代码库中用于教学的tutorial的讲解仅限于流程描述,缺乏对网络协议以及程序原理的系统讲解,对刚上手学习P4的新手过于不友好。因此,为了减少不必要的时间成本,以能够使用P4编程开发自己的数据平面应用为目的撰写P4 Tutorial 快速上手系列。请注意,该系列不会对P4的架构、流程等基础知识进行介绍,建议读者在实践前首先完成了对论文《P4: Programming Protocol-Independent Packet Processors》的精读。


一、P4 tutorial 库简介

开源代码库链接:https://github.com/p4lang/tutorials
从Readme文件看出,该库是配合“a live P4 tutorial class”使用的.即在学习该库时,理应配上一定的讲解,这也间接说明了为何该库中只有代码以及用于讲解的Slides。相关英文版课程可以在有土鳖搜索P4 tutorial找到,英语基础较好的朋友建议直接冲。

值得注意的是,2022年4月份该库提供了用于构建运行教程代码环境的vm,未找到官方镜像的同学可以参考vm-ubuntu-20.04中的内容构建镜像(也许需要跨越一道不存在的墙)。

二、关键文件介绍


Tutorial库文件目录如上图所示,接下来将对关键文件进行简单说明。

1.exercises

该文件夹中是需要学习的重点内容,一共12个练习,可分类为5个部分:Introduction and Language Basics, P4Runtime and the Control Plane, Monitoring and Debugging, Advanced Behavior 和 Stateful Packet Processing。

在具有良好的网络知识的前提下,仅需学习完Introduction and Language Basics, P4Runtime and the Control Plane即可开始着手设计并实现位于可编程交换机中的应用。但Toturial提供的例程都比较经典,每一个练习都值得思考其背后的协议原理,有助于深入理解计算机网络基本知识,了解可编程网络体系。

2.utils

utils文件夹中是教程制作者提供的工具类程序,基本都基于Python实现。包括简易的控制平面流程(appcontroller.py)、拓扑构建(apptopo.py)、编译运行练习(run_exercise.py)等。

3.vm-ubuntu-20.04和vm

用于建立可以运行Tutorial练习的环境

4.P4_tutorial.pdf

用于课程讲解的Slides,在学习时边看边练习。

5.p4-cheat-sheet.pdf

常用方法、元数据以及程序段的备忘录,方便进行练习时使用和记忆。

6.README.md

Toturial库的描述文件,Older tutorials部分包含了曾经开展的P4教程的相关信息,但信息量有限。


总结

以上就是本系列(1)的主要内容,仅仅简单介绍了本系列的主要目的以及Toturial库的现状,接下来将以最基础的程序basic.p4为例,开始上路。

P4 Tutorial 快速上手 (1) 教程库简介相关推荐

  1. P4 Tutorial 快速上手 (3) Basic_tunnel

    P4 Tutorial 快速上手 (3) Basic_tunnel 提示:本系列仅适用于软件交换机BMv2 P4 Tutorial 快速上手 (2) 文章目录 P4 Tutorial 快速上手 (3) ...

  2. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  3. Mobx-basic(快速上手)莞式教程

    Mobx-basic(快速上手)莞式教程 之前写过一篇redux的教程 可以参考redux的教程 本篇讲通过通俗易懂的方式让你快速上手mobx 的基本使用,虽然已经可以满足大部分开发中的需求但是详细 ...

  4. xmind快速上手使用教程,提高工作效率

    文章目录 1 xmind快捷键 1.1 文件 1.2 编辑 1.3 插入 1.4 查看 1.5 自定义快捷键 2 快速上手使用,创建一个好看的思维导图教程 3 使用xmind快速创建一个思维导图 1 ...

  5. smarty半小时快速上手入门教程

    本文讲述了smarty快速上手入门的方法,可以让读者在半小时内快速掌握smarty的用法.分享给大家供大家参考.具体实现方法如下: 一.smarty的程序设计部分: 在smarty的模板设计部分我简单 ...

  6. java 设计模式_快速上手Java设计模式之简介

    阅读本文约需要5分钟 大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务! 1.长期为你提供最优质的学习资源! 2.给你解决技术问题! 3.每天在朋友圈里分享 ...

  7. git 32位_完整的GIT笔记 快速上手小白教程

    GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...

  8. html高德地图api使用教程,快速上手-入门-教程-地图 JS API | 高德地图API

    按照「准备」篇完成页面准备工作之后就可以真正开始地图的开发工作了.本篇带您快速了解:地图.图层.点标记.矢量图形.信息窗体.事件的最基本使用方法. HELLO,AMAP! 简单创建一个地图只需要一行代 ...

  9. ansible入门快速上手使用教程

    1 安装ansible centos安装: # yum -y install epel-release //更新本地安装库 # yum list all *ansible* //查看相应的版本 # y ...

最新文章

  1. CVPR 2022 | 华南理工提出VISTA:双跨视角空间注意力机制实现3D目标检测SOTA,即插即用...
  2. 【斩获7枚offer,入职阿里平台事业部】横扫阿里、美团、京东、 去哪儿之后,写下了这篇面经!
  3. [转]不找情人的七种理由(献给已婚的男人)
  4. java 防止用户重复登录_JAVA 如何避免用户的重复登录
  5. 计算机网络读书笔记(1)
  6. 容器编排技术 -- Kubernetes StatefulSets
  7. 后台给前台传值 php,前后台传值的几种方式(html,js,php)
  8. 怎么删除flash弹出的广告_电脑桌面老是弹出广告怎么办?一个无需下载软件即可屏蔽的方法...
  9. c++获得鼠标当前位置
  10. python速学_【Python杂货铺】速学python基础
  11. android获取键值对,Android应用开发android中的键值对实例讲解
  12. 如何在Debian8.6 jessie上使用小度Wifi
  13. CODE【VS】2809 盗窃-月之眼
  14. Asp.net MVC下载文件的四种方法以及下载ZIP文件的一种方法
  15. Makefile编译忽略warning或者将warning视为error
  16. RTXa1000和a2000差距
  17. Mysql中的读写锁,表锁和行锁,间隙锁
  18. 树链剖分入门——[kuangbin]树链剖分
  19. 模拟CMOS集成电路设计入门学习(2)
  20. 云呐|事业单位资产管理、事业单位资产管理信息系统操作

热门文章

  1. pygame-KidsCanCode系列jumpy-part14-背景音乐及音效
  2. Excel文件双击打开后无内容且不可编辑,再次双击文件正常显示
  3. 你还在被触摸事件困扰吗?看看这篇吧
  4. 递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.
  5. [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)
  6. C#实现时间戳与标准时间的互转学习通http://www.bdgxy.com/
  7. springboot+Vue开发的 ktv预定管理系统
  8. 基于对抗生成网络的图像转换技术【论文笔记】
  9. Android GMS (谷歌移动服务)
  10. 论文解读:Generated Knowledge Prompting for Commonsense Reasoning