练习:多跳监测
本教程的目的是用带内网络遥测(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<

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

被折叠的 条评论
为什么被折叠?



