前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >P4语言编程快速开始

P4语言编程快速开始

作者头像
SDNLAB
发布2018-03-30 15:33:00
2.2K0
发布2018-03-30 15:33:00
举报
文章被收录于专栏:SDNLABSDNLAB

经过前两篇的P4理论介绍,相信大家已经对P4有个基本的了解了,本片文章为大家带来P4语言编程实战。

1、系统环境安装

P4项目的官方文档上都是以Ubuntu为例,笔者惯用的linux系统也是Ubuntu,因此本篇文章中的实验都基于Ubuntu14.04完成的。开始安装环境之前,记得先下载P4项目源码(https://github.com/p4lang)。

本篇文章主要介绍如何手动编译安装P4开发环境并使用虚拟交换机(bmv2)进行实验,如果不想手动下载源码或单独编译、安装每个模块,也可以选择下载已经集成了P4编译开发环境Ubuntu系统镜像。传送门:https://drive.google.com/file/d/0BxHYRsv-PNVvaEpZYnJ5LTAyZkk/edit。注:请自备访问外国网站。

2、环境依赖包

P4项目主要由C++和Python语言开发,同时需要对源码进行编译安装,所以需要安装许多环境依赖包。当然,这里并不需要手动将安装每个依赖包,运行p4factory目录下的install_deps.sh脚本,可以一键安装所有的依赖包,包括运行bmv2所必须的thrift、nanomsg和nnpy等组件。

./install_deps.sh

由于我们是在虚拟环境下使用进行实验,所以需要创建多个虚拟以太网口。

./sudo p4factory/tools/veth_setup.sh

3、模块依赖

P4项目由很多模块组成,部分模块与模块之间存在依赖关系,安装也就必须按照依赖关系先后安装。每个子项目的作用在上篇文章《P4语言编程详解》中已介绍,这里不再赘述。图1中展示了P4项目主要模块的依赖关系,在进行编译安装时可以参考该依赖关系选择安装顺序。这里需要注意模块依赖图与P4架构图的区别。

图1 主要模块依赖关系图

To make your life easier,P4项目中对各个子模块的安装提供了完备的脚本,安装了各个子模块后就能直接使用对应模块的CLI脚本,CLI的详细使用方法可以使用-h参数查看命令帮助。

(1)安装hlir

cd p4-hlir

sudo python ./setup install

安装后提供的CLI:p4-validate,p4-shell, p4-graphs。

(2)安装p4c-bm

cd p4c-bm

sudo pip install –r requirements.txt

sudo python setup.py install

安装后提供的CLI:p4c-bmv2。

(3)安装behavioral-model(bmv2)

cd behavioral-model

./autogen.sh

./configure

make

Bmv2作为交换机提供了一系列的运行时CLI:

图2 bmv2运行时CLI

4、p4factory

P4项目中同时也提供了p4factory模块,该模块可以单独编译运行,目的就是方便用户/开发者快速开始。

cd p4factory

./autogen.sh

./configure

//创建虚拟以太网口

./sudo p4factory/tools/veth_setup.sh

5、动动手

环境安装完毕之后,就可以开始着手运行一些P4程序示例了。本章主要从源码-运行-抓包-脚本等方面介绍simple_router示例实验。

在看具体实例之前先回顾一下P4程序定义数据平面的流程:

图3 P4程序定义数据平面流程

这里介绍一下笔者在看P4程序时候的方法,仅供大家参考:首先,从流控制程序(control)开始,查看流水线(pipeline)中应用的匹配-动作表(table)有哪些;然后,依次查看每个table中可以匹配的字段(field)以及可以执行的动作(action),理清pipline中的match-action模型;最后,查看包头(header)和解析器(parser),获悉在pipeline中进行match-action的包头实例中存储的数据。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档