zoukankan      html  css  js  c++  java
  • P4编程环境搭建

    本文参照了sdnlab上相关文章的搭建推荐。 使用的系统环境为ubuntu 18.04


    组件介绍

    主要安装五个组件:

    • BMv2:是一款支持P4编程的软件交换机
    • p4c:是一款P4的编译器
    • PI:是P4 runtime的实现,用于控制平面对数据平面的控制。
    • mininet:这个之前用过,是一个虚拟的网络拓扑搭建软件。
    • p4 tutorials :提供了用于学习的示例代码。例如负载均衡,简单的隧道机制以及源路由等。

    额外说一个

    • scapy:一个python库,提供构建数据包,抓包,解析包等的功能。

    开始搭建

    这里介绍一个个组件安装的搭建,然后最后会有一个一键安装的脚本。

    搭建前的准备

    这里我们先创建一个P4的目录,然后加入一下环境变量 

    1 //创建一个p4的文件夹目录
    2 mkdir ~/P4 
    3 //进入目录
    4 cd ~/P4
    5 //写入环境变量
    6 echo "P4_HOME=$(pwd)" >> ~/.bashrc
    7 //更新环境变量
    8 source ~/.bashrc

    安装Protocol

    1 sudo apt-get install autoconf automake libtool curl make g++ unzip
    2 git clone https://github.com/google/protobuf.git
    3 ./autogen.sh
    4 ./configure
    5 make
    6 make check
    7 sudo make install
    8 sudo ldconfig

     这里比较比较建议加上git checkout v3.2.0

    安装bmv2

    在p4目录中 

     1 git clone https://github.com/p4lang/behavioral-model.git bmv2
     2 cd ~/P4/bmv2
     3 //安装依赖
     4 ./install_deps.sh
     5 //编译bmv2
     6 ./autogen.sh
     7 ./configure
     8 make
     9 //安装bmv2
    10 sudo make install
    11 //更新共享库
    12 sudo idconfig
    13 //测试
    14 sudo make check

    安装p4c

    这里从陈翔学长哪里剽到了一个直接安装p4c的脚本 installp4c.sh

    原来的安装方法 

     1 git clone --recursive https://github.com/p4lang/p4c.git
     2 //安装依赖
     3 sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump cmake
     4 //用于生成文档
     5 sudo apt-get install -y doxygen graphhviz texlive-full
     6 //构建
     7 mkdir build
     8 cd build 
     9 cmake .. [-DCMAKE_BUILD_TYPE=RELEASE|DEBUG] [-DCMAKE_INSTALL_PREFIX=<path>] [-DENABLE_DOCS=ON (default off)] [-DENABLE_P4RUNTIME_TO_PD=OFF (default on)]
    10 //安装
    11 sudo make install

    安装PI

    1 git clone git@github.com:p4lang/PI.git
    2 //安装依赖
    3 sudo apt-get install libjudy-dev libreadline-dev
    4 git submodule update --init --recursive
    5 //配置
    6 ./autogen.sh
    7 ./configure [--with-bmv2] [--with-proto]
    8 
    9 make

    关于这个参数,可以去原库中看readme

    安装mininet

    这个可以参考以前源码安装mininet的blog 源码安装mininet

    安装p4-tutorials

    1 git clone https://github.com/p4lang/tutorials

    这里大致的组件就安装完了。


    一键安装

    这里是sdnlab上P4编程理论与实践提供的一键配置。 p4-quick 先安装依赖 

    sudo apt-get update
    
    sudo apt-get install automake cmake libjudy-dev libpcap-dev libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libevent-dev libtool flex bison pkg-config g++ libssl-dev  -y
    
    sudo apt-get install cmake g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev libboost-graph-dev llvm pkg-config python python-scapy python-ipaddr python-ply tcpdump curl  -y
    
    sudo apt-get install libreadline6 libreadline6-dev  python-pip  -y 
    这里如果提示废弃就
    sudo apt install libreadline-dev
    
    sudo pip install psutil
    sudo pip install crcmod

    其中部分仓库克隆非常的慢,建议搞个梯子会快很多。

    然后运行上述那个p4-quick的env_up.sh脚本,就可以搭建完成了。

    其实在安装过程中有许多与上述内容有所出入的修改,在后续在一一说明。

  • 相关阅读:
    十四
    十三
    十二
    十一
    用Linq从一个集合选取几列得到一个新的集合-可改列名
    LINQ入门(完结篇)
    LINQ入门(下篇)
    LINQ入门(中篇)
    LINQ入门(上篇)
    MVC中View往Controllers传数据的方式-已发
  • 原文地址:https://www.cnblogs.com/pullself/p/10341891.html
Copyright © 2011-2022 走看看