p4学习笔记-1

准备工作

在官网下载p4的虚拟机之后在virtualbox上运行

虚拟机是在https://p4.org/events/2018-06-06-p4-developer-day/里找到的

下载链接如下(需要翻墙)

https://drive.google.com/uc?id=1f22-DYlUV33DsR88_MeMb4s7-1NX_ams&export=download

打开虚拟机之后就可以按GitHub里的tutorials进行学习

第一个是验证实施基本转发(Implementing Basic Forwarding)

但是basic这个文件夹里的basic.p4文件是不完整的,运行这个原本的basic.p4没有收到消息,因为每个交换机都是按照编程的basic.p4,它会在到达时丢弃所有数据包。需要填充以下内容(您的交换机将具有单个表,控制平面将使用静态规则填充该表。每个规则都会将IP地址映射到下一跳的MAC地址和输出端口。我们已经定义了控制平面规则,因此您只需要实现P4程序的数据平面逻辑。)

在solution文件夹里有一个官方提供的完整的可以参考一下的basic.p4文件。


## 官网教程

### 第1步:运行(不完整的)入门代码

在扩展basic.p4文件之前,让我们编译不完整的basic.p4并在Mininet中调出一个开关来测试它的行为。

在你的shell中,运行:

```

make run

```

这会:

- 编译basic.p4,和

- 启动一个Mininet实例与三个开关(s1,s2,s3)以三角形构造中,每个连接到一个主机(h1,h2,和h3)。

- 该主机被分配的IP地址10.0.1.1,10.0.2.2和10.0.3.3。

您现在应该看到Mininet命令提示符。打开两个端子h1和h2,分别为:

```

mininet > xterm h1 h2

```

每个主机都包含一个基于Python的小型消息传递客户端和服务器 在h2的xterm中,启动服务器:

```

./receive.py

```

在h1的xterm中,发送消息给h2:

```

./send.py 10.0.2.2 "P4 is cool"

```

将不会收到该消息。

键入exit以保留每个xterm和Mininet命令行。然后,停止mininet:

```

make stop

```

并删除所有pcaps,构建文件和日志:

```

make clean

```

没有收到消息,因为每个交换机都是按照编程的basic.p4,它会在到达时丢弃所有数据包。您的工作是扩展此文件,以便转发数据包。

#### 关于控制平面的说明

P4程序定义了数据包处理流水线,但每个表中的规则都由控制平面插入。当规则与数据包匹配时,将使用控制平面提供的参数作为规则的一部分来调用其操作。

在本练习中,我们已经为您实现了控制平面逻辑。作为启动Mininet实例的一部分,该 make run命令将在每个交换机的表中安装数据包处理规则。这些在sX-runtime.json文件中定义,其中 X对应于交换机编号。

重要提示:我们使用P4Runtime来安装控制平面规则。文件内容是sX-runtime.json指表,键和操作的特定名称,如编译器生成的P4Info文件中所定义(build/basic.p4info执行后查找文件make run)。添加或重命名表,键或操作的P4程序中的任何更改都需要反映在这些sX-runtime.json文件中。

### 第2步:实施L3转发

该basic.p4文件包含一个骨架P4程序,其中关键的逻辑部分被TODO注释替换。您的实现应遵循此文件中给出的结构---将每个TODO实现替换为实现缺失部分的逻辑。

完整basic.p4包含以下组件:

以太网(ethernet_t)和IPv4(ipv4_t)的标头类型定义。

TODO:

- 用于填充ethernet_t和填充以太网和IPv4的解析器ipv4_t。

- 使用丢弃数据包的操作mark_to_drop()。

TODO:

- 一种行动(称为ipv4_forward):

- 设置下一跳的出口端口。

- 使用下一跳的地址更新以太网目标地址。

- 使用交换机的地址更新以太网源地址。

- 减少TTL。

TODO:

- 一个control:定义一个表,该表将读取IPv4目标地址,并调用其中一个drop或ipv4_forward。

- apply应用表的块。

TODO:

- 一个deparser,用于选择字段插入传出数据包的顺序。

- package解析器,控件和解析器提供的实例化。

通常,包还需要校验和验证和重新计算控制的实例。这些不是本教程所必需的,而是替换为空控件的实例化。

### 第3步:运行您的解决方案

按照步骤1中的说明进行操作。这次,您的消息 h1应该发送到h2。

**值得深思**

“测试套件”为您的解决方案---从发送消息h1到 h2---不是很强劲。您应该测试什么才能对您的实施充满信心?

虽然Python scapy库超出了本教程的范围,但它可用于生成用于测试的数据包。该send.py文件显示了如何使用它。

其他需要考虑的问题:

您如何增强您的计划以支持下一跳?

这个程序足以取代路由器吗?少了什么东西?

故障排除

在开发程序时可能会出现几个问题:

basic.p4可能无法编译。在这种情况下,make run将报告编译器发出的错误并暂停。

basic.p4可能编译但无法支持尝试使用P4Runtime安装的s1-runtime.json直通s3-runtime.json文件中 的控制平面规则make run。在这种情况下,make run如果无法安装控制平面规则,将报告错误。使用这些错误消息来修复您的basic.p4实现。

basic.p4可能会编译,并且可能会安装控制平面规则,但交换机可能无法以所需方式处理数据包。这些/tmp/p4s..log文件包含描述每个交换机如何处理每个数据包的详细日志。输出详细,可以帮助查明实现中的逻辑错误。

```

clean mininet

```

在上面的后两种情况中,make run可能会在后台运行Mininet实例。使用以下命令清除这些实例:

```

make stop

```

## 下一步

恭喜,您的实施工作正常!在下一个练习中,我们将在此基础上构建并添加对基本隧道协议的支持:basic_tunnel

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,861评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,263评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,033评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,999评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,000评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,483评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,850评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,827评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,366评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,404评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,525评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,130评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,853评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,293评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,426评论 1 276
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,082评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,590评论 2 366