`
steeven
  • 浏览: 312354 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

P4 behavioral-model: BMv2

    博客分类:
  • p4
阅读更多
今天是10/15/2016,如果时间太久请移步https://github.com/p4lang/behavioral-model参考最新信息。

BMv2是一个交换机模拟引擎,和p4-factory不同,不依靠代码生成,而是根据p4c-bm编译生成的JSON动态生效。

安装:
===================================================
因为之前安装了p4-factory,所以相关软件可能已经安装好,如果缺东西,请参考github
还是ubuntu1404:
git clone https://github.com/p4lang/behavioral-model.git
cd behavioral-model
./autogen.sh
./configure --with-pdfixed
make
sudo make install
sudo ldconfig
#注意内存要够大,我的vm 1.5G内存要切换到runlevel 1才编译成功。
#make install 会安装bm开头的命令和simple_switch,用于启动bmv2, 编译switch项目必须
#运行simple_switch, 如果提示libruntimestubs.so.0找不到,需要运行sudo ldconfig


启动:
=======================================================
启动BMv2参考前面文章安装p4c-bm, 然后执行:
tools/veth_setup.sh
p4c-bm --json simple_router.json targets/simple_router/simple_router.p4 //生成JSON文件
sudo targets/simple_router/simple_router --log-console -i 0@veth2 -i 1@veth4 simple_router.json
引用
Thrift port was not specified, will use 9090
Adding interface veth2 as port 0
Adding interface veth4 as port 1
Thrift server was started

设备成功启动~
#Targets下面各个目录的启动脚本都一样,建议看看其它参数。
#没有--log-console出错居然看不到。操作端口需要sudo权限
然后新开一个窗口运行tools/runtime_CLI.py, 在命令窗口中运行命令来操作BMv2的表、端口、
引用
RuntimeCmd: port_add veth4 2
RuntimeCmd: show_ports
  port #       iface name       status  extra info
==================================================
    0            veth0            UP
    1            veth2            UP
    2            veth4            UP

查看targets/simple_router/commands.txt里面有更多命令可以参考。

Mininet:
===================================
上面单独启动BMv2还是不方便用veth需要自己绑定到交换机或者容器去测试,这里有个现成的方式:
sudo python mininet/1sw_demo.py --behavioral-exe targets/simple_router/simple_router --json targets/simple_router/simple_router.json
启动后一样h1 ping h2不通,因为转发表还没配置。在新窗口中运行:
tools/runtime_CLI.py < targets/simple_router/commands.txt
导入规则之后mininet窗口h1 ping h2成功。

开发自己的p4模型:
===================================
应该是这样:
1. 写好p4文件
2. 用p4c-bm编译成json
3. 启动mininet加载json
4. 启动runtime_CLI.py配置


====================================
BMv2可以定制,如果你是设备商或者芯片厂家,要定义自己的设备来模拟,需要生成参考doxgen:
doxgen Doxfile
生成的文档在doxgen-out目录
分享到:
评论
3 楼 steeven 2017-03-23  
chenguo962332430 写道
请问sudo targets/simple_router/simple_router --log-console -i 0@veth2 -i 1@veth4 simple_router.json 中simple_route是不是要加.p4,表明是对这个simple_route.p4文件进行转换?我看不太懂。楼主能说明下吗,谢谢


本文第一句:“根据p4c-bm编译生成的JSON动态生效。 ”
2 楼 chenguo962332430 2017-03-09  
请问sudo targets/simple_router/simple_router --log-console -i 0@veth2 -i 1@veth4 simple_router.json 中simple_route是不是要加.p4,表明是对这个simple_route.p4文件进行转换?我看不太懂。楼主能说明下吗,谢谢
1 楼 steeven 2016-10-28  
http://schd.ws/hosted_files/2016p4workshop/9f/Barefoot%2C%20Antonin%2C%20P4%20workshop%202016.pdf

相关推荐

    p4环境配置安装包(behavioral-model+gmock-1.7.0+p4c+protobuf-3.2.0+thrift-0.9.2)

    p4环境配置安装包(behavioral-model+gmock-1.7.0+p4c+protobuf-3.2.0+thrift-0.9.2),配置教程链接:https://blog.csdn.net/qq_34039018/article/details/88843937

    behavioral-model:参考P4软件开关

    行为模式(bmv2) 这是参考P4软件开关的第二个版本,昵称为bmv2(用于行为模型版本2)。 软件开关是用C ++ 11编写的。 它以从您的P4程序生成的JSON文件作为输入,并将其解释为实现该P4程序指定的数据包处理行为。 这...

    KMV的MATLAB的代码-CarND-Behavioral-Cloning:CarND行为克隆

    【标题】"KMV的MATLAB的代码-CarND-Behavioral-Cloning:CarND行为克隆" 涉及的是一个自动驾驶技术中的行为克隆项目,使用MATLAB进行实现。行为克隆是一种机器学习方法,通过观察人类驾驶员的行为(通常是驾驶时的...

    behavioral-auth:行为认证 Chrome 插件

    在这个案例中,“behavioral-auth”插件利用JavaScript来捕捉和分析用户的在线行为,创建一个用户行为模型。 **JavaScript在行为认证中的应用** JavaScript是实现行为认证的关键,因为它可以在前端实时收集数据。...

    behavioral-patterns:模式研讨会

    在这个名为"behavioral-patterns"的项目中,我们聚焦于JavaScript中的行为模式。这个项目源于一个在慕尼黑工业大学(TUM)举办的设计模式研讨会。 行为模式主要包括以下几个方面: 1. **策略模式(Strategy)**:...

    p4-guide:p4lang存储库指南以及有关P4的其他一些公共信息

    该存储库中有三个安装脚本,可以帮助您构建和安装p4c和behavioral-model项目以及它们对Ubuntu p4c或20.04 Linux计算机的依赖性。 请参阅使用这些脚本的。 有关各种P4主题的文章 请参阅以获取此存储库中包含的文章...

    PyPI 官网下载 | discovery-behavioral-utils-2.4.8.tar.gz

    《PyPI官网下载:discovery-behavioral-utils-2.4.8.tar.gz——深入探索Python库的实用工具》 PyPI(Python Package Index)是Python开发者们分享和获取软件包的重要平台,其中包含了丰富的Python库资源。本文将...

    sdcn-4-behavioral-cloning:在模拟游戏中克隆人类玩家的行为以使用神经网络控制汽车

    model.h5 :火车模型 model.py :训练模型的脚本 Pipfile : pipenv描述 prepare_dataset.py :原始sim图像到训练数据集转换器 sdcn_4_transfer.ipynb :用于在Google Colab上训练模型的最终笔记本 video.mp4 :自主...

    CarND-Behavioral-Cloning:Udacity的无人驾驶汽车纳米学位课程第四个项目

    model.py(用于创建和训练模型的脚本) drive.py(用于开车的脚本-随时修改此文件) model.h5(训练有素的Keras模型) 报告撰写文件(降价或pdf) video.mp4(您的车辆在赛道上自动行驶至少一整圈的视频记录) ...

    EDA复习题(含答案).docx

    2. FPGA设计流程通常包括设计输入、逻辑综合、时序仿真、编程下载和硬件测试。这一流程体现了现代EDA设计的系统化和自动化。 3. 设计实体由库与程序包、实体和结构体三部分组成,分别用于声明资源、描述外部接口和...

    PyPI 官网下载 | discovery-behavioral-utils-2.5.9.tar.gz

    《PyPI官网下载 | discovery-behavioral-utils-2.5.9.tar.gz》 PyPI,全称为Python Package Index,是Python社区最重要的资源库,它提供了大量的Python软件包供开发者下载和使用。"discovery-behavioral-utils-...

    Behavioral-Cloning:使用提供的模拟器,神经网络可用于克隆给定用户的驾驶行为

    行为克隆 使用提供的模拟器,神经网络可用于克隆给定用户的驾驶行为。 概述 使用模拟器,我们可以记录行驶中的汽车的转向角和速度。 模拟器中的汽车具有三个摄像头:左,中和右。 此设置类似于Nvidia发表的论文《 ...

    div的源程序

    -- Module Name: div_4 - Behavioral -- Project Name: -- Target Device: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments:

    CarND-Behavioral-Cloning-P3:自驾车ND项目3-行为克隆

    行为克隆项目-最终提交 该项目的目标/步骤如下: ...2.提交内容包括功能代码 使用提供的Udacity模拟器和我的drive.py文件,可以通过执行以下命令自动在轨道上驾驶汽车 python drive.py model.h5 3.提

    Behavioral-Finance-Game:行为金融学小游戏

    出的数字进行统计,计算出的平均数,再转换平均数乘以1/2,获得标准值。其中最接近的得到最高奖励。那么请问,你会选择1-100之间的哪个数字呢? 目标: 每30分钟(暂定)进行一轮投票,参与玩家仅可以看到当前参与...

    C-Sharp-Behavioral-Design-Patterns:行为设计模式的例子

    行为设计模式在软件工程中,行为设计模式是一种设计模式,用于标识对象之间的通用通信模式并实现这些模式。 通过这样做,这些模式增加了执行此通信的灵活性。 责任链一种在一系列对象之间传递请求的方式命令将命令...

    CarND-Behavioral-Cloning-P3.zip_Behavioral_Cloning_behavioral cl

    在本项目"CarND-Behavioral-Cloning-P3.zip"中,我们探讨的是行为克隆(Behavioral Cloning)技术在自动驾驶领域的应用。行为克隆是一种机器学习方法,它通过观察人类驾驶员的行为,利用大量的驾驶数据来训练深度...

    巴黎银行-新兴市场-外汇策略-ZAR:基于因子模型的长期策略-0308-7页.pdf

    在这里,BNP Paribas使用了两个模型:短期的EM-BEER模型(Emerging Market Behavioral Exchange Rate Model)和长期的FEER模型(Fundamental Equilibrium Exchange Rate Model)。这两个模型分别考虑了不同时间段内...

Global site tag (gtag.js) - Google Analytics