P4学习(四)实验一:Basic Forwarding

目录

  • 一.前置知识
  • 二.实验过程记录
    • 1.找到实验文件
    • 2.拓扑图
    • 3.明确实验内容
    • 4.实验初体验
  • 三. 编写解决方案
    • 1.Parse部分
      • 1.1 Code
      • 1.2 知识点解析
    • 2.Ingress部分
      • 2.1 Code
      • 2.2 知识点解析
    • 3.Deparse部分
      • 3.1 Code
      • 3.2 知识点
  • 四.实验完成测试

一.前置知识

  1. Linux基础命令(vim)
  2. V!Model的架构图
  3. P4代码基本结构
  4. P4基本语法
  5. Mininet

二.实验过程记录

1.找到实验文件

在这里插入图片描述

2.拓扑图

在这里插入图片描述

3.明确实验内容

The objective of this exercise is to write a P4 program that implements basic forwarding. To keep things simple, we will just implement forwarding for IPv4.

4.实验初体验

basic.p4初始设置了丢弃所有的数据包,所以一开始会ping不到

  1. 跑起服务
make run

插一个知识点:
"make"是linux的一个工具,通过读取文件makefile来执行操作
所以这里的命令就是:会查找 Makefile 中名为 run 的目标,并执行与之相关的命令。

在这里插入图片描述

  1. 观察数据包传输情况
    在这里插入图片描述
    会发现全部ping不通,也就代表basic.p4中的丢弃所有的包是成功的

  2. 停止服务

make stop
make clean

三. 编写解决方案

1.Parse部分

在这里插入图片描述

Parse采用状态机风格
有三个预定义的状态:start, accept, reject

1.1 Code

在这里插入图片描述

1.2 知识点解析

state xxx{} 定义state "xxxx"
transition xxx; 跳转到state "xxx"select(){} 和 switch操作一样,不过不需要breakselect(data){valA: stateA;valB: stateB;......default: stateDefault;
}

所以本段code的思路是
①先从start这个state开始,直接跳到解析etherHead的部分
②从数据包里提取出Ethernet header
③判断包头中的Type是否为Ipv4
④若是,则跳转到pares_IPv4

2.Ingress部分

Match-Action 的流水线集合

2.1 Code

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.2 知识点解析

  1. 定义一个处理IPv4包转发的action,用于更新head的信息
  2. 在表中按照destAddr的lpm进行匹配action
  3. valid是header里的一个隐藏field,isValid可以判断ipv4头是否有效

3.Deparse部分

3.1 Code

在这里插入图片描述

3.2 知识点

①emit 用于将头部字段添加到正在构建的数据包中。
②写与Parse的extract的反逻辑就行

四.实验完成测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413509.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wins安装paddle框架

一、安装 https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/pip/windows-pip.html 装包(python 的版本是否满足要求: 3.8/3.9/3.10/3.11/3.12, pip 版本为 20.2.2 或更高版本 ) CPU 版:…

day01_ Java概述丶开发环境的搭建丶常用DOS命令

编程常识 什么是编程? 所谓编程,就是人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。 编程语言的发展历程 第一代:机器语言 ,机器语言由数字组成所有指令。计算器解析运行速度,最快…

DoYocms靶场(好像咩啥漏洞?)

这个doyocms靶场感觉没什么漏洞???不知道是不是我的错觉,还是说我的靶场配置有问题 OnlyOne 漏洞:支付漏洞 我们可以在靶场中找到一个商品购买界面 于是就可以先抓个包,就可以发现过滤的死死的 根本找不到鉴权参数&am…

《教师》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教师》杂志主要发表大中小学、幼儿园、特殊教育学校等各级各类学校教师的优秀教育、教学科研成果,旨在促进国内外学术交流,服务国家科学文化建设的需要。从创刊以来一直坚持“服务基础教育;探究教研教改;提高教师素质&#xff1…

SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动

目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中,但是不会进一步,导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…

网工内推 | 运维工程师,最高10K*15薪,思科认证优先

01 乐歌股份 招聘岗位:服务器运维工程师 职责描述: 1、负责公司云上云下所有服务器的日常运维工作,包括应用部署、巡检、备份、日志、监控,故障处理,性能优化等,保障公司相关系统稳定运行。 2、为开发、测…

MyBatisPlus学习笔记三-核心功能

接上篇: MyBatisPlus学习笔记二-CSDN博客 1、核心功能-IService开发基础业务接口 1.1、介绍 1.2、引用依赖 1.3、配置文件 1.4、用例-新增 1.5、用例-删除 1.6、用例-根据id查询 1.7、用例-根据ids查询 2、核心功能-IService开发复杂业务接口 2.1、实例-更新 3、…

JVM工作原理与实战(十九):运行时数据区-方法区

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、方法区 1.方法区介绍 2.方法区在Java虚拟机的实现 3.类的元信息 4.运行时常量池 5.字符串常量池 6.静态变量的存储 总结 前言 JVM作为Java程序的运行环境…

springcloud-cloud provider-payment8001微服务提供者支付Module模块

文章目录 IDEA新建project工作空间cloud-provider-payment8001微服务提供者支付Module模块建表SQL测试 IDEA新建project工作空间 微服务cloud整体聚合父工程Project 写pom文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"htt…

html画动态桃心

html画动态桃心 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetwindows-1252"><title></title><style>* {padding: 0;margin…

vue基于spring boot框架的发艺美发店理发店管理系统的设计q9xpe

店铺信息、美发信息是发艺美发店管理系统的重要组成部分&#xff0c;信息清晰、详细、准确&#xff0c;能够有效地促进发艺美发店管理系统的运行[5]。基础设定函数是对整个系统的总体布局进行合理安排&#xff0c;包括&#xff1a;店铺活动、物品信息、领用信息等。通过对各类资…

UI设计中插画赏析和产品色彩分析

插画赏析&#xff1a; 1. 插画是设计的原创性和艺术性的基础 无论是印刷品、品牌设计还是UI界面&#xff0c;更加风格化的插画能够将不同的风格和创意加入其中&#xff0c;在激烈的竞争中更容易因此脱颖而出。留下用户才有转化。 2. 插画是视觉触发器&#xff0c;瞬间传达大量…