P4语言——mri

这篇教程介绍了如何通过扩展L3转发来实现多跳路由监测(MRI)。利用INT,用户可以追踪每个包经过的路径和队列长度。文章详细描述了一个P4程序,该程序在包头中添加ID和队列长度信息,并在目的地根据交换机ID顺序验证这些信息。

练习:多跳监测

本教程的目的是用带内网络遥测(INT)的缩小版扩展基本的L3转发,我们称之为多跳路由检查(MRI)。
磁共振成像允许用户跟踪路径和队列长度,每个包经过。 为了支持这个功能,您需要编写一个P4程序,将ID和队列长度附加到每个包的头栈。 在目的端,交换机ID的顺序与路径对应,每个ID后面跟着交换机端口的队列长度。
在这里插入图片描述

P4文件

/* -*- P4_16 -*- */
#include <core.p4>
#include <v1model.p4>

const bit<8>  UDP_PROTOCOL = 0x11;
const bit<16> TYPE_IPV4 = 0x800;
const bit<5>  IPV4_OPTION_MRI = 31;

#define MAX_HOPS 9

/*************************************************************************
*********************** H E A D E R S  ***********************************
*************************************************************************/

typedef bit<9>  egressSpec_t;
typedef bit<48> macAddr_t;
typedef bit<32> ip4Addr_t;
typedef bit<32> switchID_t;
typedef bit<32> qdepth_t;

header ethernet_t {
   
   
    macAddr_t dstAddr;
    macAddr_t srcAddr;
    bit<16>   etherType;
}

header ipv4_t {
   
   
    bit<4>    version;
    bit<4>    ihl;
    bit<8>    diffserv;
    bit<16>   totalLen;
    bit<16>   identification;
    bit<3>    flags;
    bit<13>   fragOffset;
    bit<8>    ttl;
    bit<8>    protocol;
    bit<16>   hdrChecksum;
    ip4Addr_t srcAddr;
    ip4Addr_t dstAddr;
}

header ipv4_option_t {
   
   
    bit<1> copyFlag;
    bit<2> optClass;
    bit<5> option;
    bit<8> optionLength;
}

header mri_t {
   
   
    bit<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值