P4连接ONOS——导入ONOS虚拟机

2023-05-16

/*******************************************************/

补充:2020年5月11日 13点07分

近期有同学私信我安装过程中有这个报错,如下图

根据报错信息,似乎是下载这个包服务器501出错,很可能是因为内网无法下载这个包

我忘记说了,我当时是可以访问外网的,所以遇到这个问题我的建议是:

1.确保自己的虚拟机(不是宿主机)能够访问外网

2.如果仍无法解决,建议百度/google 报错信息,大部分都是可以解决的。

/*********************************************************/

补充:2020年3月7日13:16:03

不少人私信说下载出错等问题,我把虚拟机文件上传到我百度云了,需要的同学自己下吧,如果链接或者下载有问题可以私信我或者给我发邮件,gyphust@qq.com 

 

链接:https://pan.baidu.com/s/1nP0CSNSsbaN4Pr6iXRVDCQ 
提取码:bq0o

/************************************************************************************/

1.下载虚拟机镜像文件

官方教程:https://github.com/opennetworkinglab/onos/tree/master/apps/p4-tutorial

备注:官方教材是建议采用virtual box,但是在导入虚拟机过程中,一直报错,很久都未能解决问题,因此采用VMware进行虚拟机导入。

下载官方onos镜像,如下图所示:

onos镜像:https://www.virtualbox.org/wiki/Downloads

username:sdn

password:rocks

安装好VMware Workstation 

 

自定义安装的位置,然后点击“导入”

 

在按照教程打开ONOS并运行的过程中,遇到了两种情况,一种是顺利的时候直接就打开了,不顺利的时候会报错说找不到 ok,恰好我两种情况都遇到了,这里分两种情况记录。

理论上来说,这个环境是官方配置好的,应该是不用配置的。

不过在这折腾了很久,最后发现真的很有意思。

建议大家看顺利情况下的配置过程。

 

2 顺利情况下

进入系统,打开终端,输入命令:

sudo chown -R sdn:sdn .mozilla
sudo chown -R sdn:sdn .cache

输入上面两条命令之后,界面上的Firefox浏览器可以正常访问。

开启终端,直接运行命令

cd onos
ONOS_APPS=proxyarp,hostprovider,lldpprovider ok clean

耐心等待,构建结束,第一次构建比较慢,我当时构建了半个多小时。

构建结束后,会进入运行阶段。之后的流程可以直接开始运行测试了。

 

3 不顺利情况下,配置onos环境,安装依赖

因为直接运行onos的命令“ok clean”无法识别,经查阅资料,发现需要配置onos的环境,接下来的操作主要参考这篇博客教程。

参考网站:https://www.sdnlab.com/15092.html

3.1需要安装Karaf

apache-Karaf的版本至少为3.0,笔者安装版本3.0.9。操作如下

 安装apache-karaf

mkdir ~/Applications
cd ~/Applications
wget http://apache.fayea.com/karaf/3.0.9/apache-karaf-3.0.9.tar.gz
tar -xzf apache-karaf-3.0.9.tar.gz

CSDN下载地址:https://download.csdn.net/download/qq_34039018/11079908

3.2 安装apache-maven

apache-maven的版本至少为3.0,笔者安装版本3.2.2。操作如下

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.2-bin.tar.gz
tar -xzf apache-maven-3.2.2-bin.tar.gz
mv apache-maven-3.2.2 /usr/local/apache-maven

CSDN下载地址:https://download.csdn.net/download/qq_34039018/11079913

设置apache-maven的环境变量,编辑/etc/profile,添加如下几行命令

export M2_HOME=/usr/local/apache-maven
export PATH=$PATH:$M2_HOME/bin

然后执行

source /etc/profile

3.3 安装java(如果已经安装可以跳过)

安装java8有多种方法,笔者就按照官网提供的方法操作。

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default -y

执行下面的操作后,设置JAVA_HOME。编辑/etc/profile文件,添加下面一行。

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

然后执行 

source /etc/profile

正确安装后,java -version和mvn --version打印的java版本应该一致。

3.4 环境变量配置

配置环境变量:

需要注意,ONOS_ROOT可以写成  ONOS_ROOT=~/onos  或者  ONOS_ROOT=/home/sdn/onos中,sdn是当前系统的用户名,需要改为自己的,比如本机系统的用户名为sdn

查看当前用户名
export ONOS_ROOT=~/onos
export KARAF_ROOT=~/Applications/apache-karaf-3.0.9
export M2_HOME=/usr/local/apache-maven
export PATH=$PATH:$M2_HOME/bin

然后执行:

source /etc/profile
source $ONOS_ROOT/tools/dev/bash_profile

4 打开并构建ONOS

4.1 新开一个终端1

进入onos的目录,开启一个终端1,开启ONOS服务,运行下面的命令:

cd onos
ONOS_APPS=proxyarp,hostprovider,lldpprovider ok clean

4.2 新开一个终端2

i.打开ONOS命令行,执行以下命令,访问ONOS CLI:

cd onos
onos localhost

ii.输入以下命令以激活BMv2驱动程序:

onos> app activate org.onosproject.drivers.bmv2

在ONOS日志上看到以下消息,具体内容可能与版本相关,大概意思是org.onosproject.drivers.bm2已经激活开启,同时终端1也会有相应的日志输出。

终端1:Application org.onosproject.drivers.bmv2 has been activated

终端2:Activated org.onosproject.drivers.bmv2

iii.输入以下命令以激活pipeconf:

onos> app activate org.onosproject.p4tutorial.pipeconf


 

终端1输出多行内容,

New pipeconf registered:p4-tutorial-pipeconf

Application org.onosproject.p4tutorial.pipeconf has been actived

终端2:Activated org.onosproject.p4tutorial.pipeconf

iv.要验证是否已激活所有必需的应用程序,请运行以下命令:

onos> apps -a -s
org.onosproject.generaldeviceprovider ... General Device Provider
org.onosproject.drivers               ... Default Drivers
org.onosproject.proxyarp              ... Proxy ARP/NDP
org.onosproject.lldpprovider          ... LLDP Link Provider
org.onosproject.protocols.grpc        ... gRPC Protocol Subsystem
org.onosproject.protocols.p4runtime   ... P4Runtime Protocol Subsystem
org.onosproject.p4runtime             ... P4Runtime Provider
org.onosproject.drivers.p4runtime     ... P4Runtime Drivers
org.onosproject.hostprovider          ... Host Location Provider
org.onosproject.drivers.bmv2          ... BMv2 Drivers
org.onosproject.p4tutorial.pipeconf   ... P4 Tutorial Pipeconf

\

v.可选操作

更改流规则轮询间隔。在ONOS CLI中运行以下命令:

onos> cfg set org.onosproject.net.flow.impl.FlowRuleManager fallbackFlowPollFrequency 5

此命令告诉ONOS每5秒检查一次交换机上的流规则状态(默认值为30)。这用于获取更频繁的流规则统计信息,例如字节/数据包计数器。它还有助于更快地解决在ONOS存储中安装某些流规则但在设备上没有安装的问题(在同一VM中模拟大量设备时通常会发生这种情况)。

4.3 新开一个终端3

在终端窗口3上,运行Mininet以设置BMv2设备的拓扑

i.运行Mininet,请使用以下命令:

sudo -E mn --custom $BMV2_MN_PY --switch onosbmv2,pipeconf=p4-tutorial-pipeconf --controller remote,ip=127.0.0.1

--custom参数告诉Mininet使用bmv2.py自定义脚本来执行BMv2交换机。环境变量$BMV2_MN_PY 指向脚本的确切位置(您可以使用该命令 echo $BMV2_MN_PY查找位置)。

--switch参数指定我们要内部Mininet运行类型的交换机实例。在这种情况下,我们运行的是BMv2版本,它还会生成一些ONOS用来发现设备的配置文件(请参阅下面的步骤),因此命名onosbmv2。该pipeconf 子参数是用来告诉ONOS这pipeconf在所有设备上部署。

所述--controller参数指定所述控制器,ONOS在这种情况下,这是我们正在执行的Mininet同一机器上运行的地址。

ii.作为此启动过程的一部分,/tmp文件夹中生成一组文件,以便查看它们(在单独的终端窗口上):

ls /tmp/bmv2-*

检查ONOS中每个应用程序插入的流规则。在ONOS CLI类型中:

onos> flows -s

你应该看到3个流程规则:

deviceId=device:bmv2:s1, flowRuleCount=3
    ADDED, bytes=0, packets=0, table=0, priority=40000, selector=[ETH_TYPE:arp], treatment=[immediate=[OUTPUT:CONTROLLER], clearDeferred]
    ADDED, bytes=0, packets=0, table=0, priority=40000, selector=[ETH_TYPE:bddp], treatment=[immediate=[OUTPUT:CONTROLLER], clearDeferred]
    ADDED, bytes=0, packets=0, table=0, priority=40000, selector=[ETH_TYPE:lldp], treatment=[immediate=[OUTPUT:CONTROLL

iii.检测主机之间的连通性

mininet> pingall

可以看到无法通信,原因是我们没有激活还没有任何ONOS应用主机之间的连接性。

iv.在Mininet上运行ping操作时,使用ONOS CLI激活Reactive Forwarding应用程序

再次pingall,发现能够正常通信

查看s1的流表规则

最初的时候,流规则为3条:

通信后:

 一段时间后,流规则过期,只剩4条:

 而因为过期被删除的两条恰好是h1->s1->h2和h2->s1->h1的流表,与Openflow的流表过期原理相近。

5 打开ONOS的web界面

网址:http://127.0.0.1:8181/onos/ui/login.html

用户名:onos      密码:rocks

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P4连接ONOS——导入ONOS虚拟机 的相关文章

  • Ubuntu 16.04 安装onos 2.2.0

    之前使用了别人分享的安装好的p4虚拟机 xff0c 应该是这个人的 xff0c 不过我记得的是用的谷永普的 xff0c 当时还是从微云上下载的 xff0c 但是找不到了 不过无所谓 xff0c 本文不讲p4的安装 xff0c 有需要的 xf
  • 【SDN控制器分析之一】ONOS架构概述

    ONOS 设计目标 ONOS是一个采用OSGI技术来管理子项目的SDN控制器开源项目 xff0c 在最初设计时有这么几个目标是明确的 xff1a 代码模块化 xff1a 支持把新的功能作为新的独立单元引入特性可配置 xff1a 无论是在启动
  • onos实现driver的自动加载

    AbstractDriverLoader 已知driverAdminServer 根据path读取配置文件的内容 1 进入到XMLDriverLoader里 xff0c 根据XML 创建Provider gt XMLDriverLoader
  • ONOS之开放分布式SDN操作系统

    为什么80 的码农都做不了架构师 xff1f gt gt gt 关于构建ONOS xff08 开放式网络操作系统 xff09 的项目专题 xff0c 是通过性能激发创建的实验性分布式 SDN 控制平台 xff0c 满足大型运营商网络的可扩展
  • ONOS预热篇之ONOS简介

    为什么80 的码农都做不了架构师 xff1f gt gt gt ONOS问世后引起广泛关注 xff0c 关于 ONOS 与 ODL 的纷争不绝于耳 xff0c 最近小编拜读了一下 ONOS 白皮书 xff0c 并做了一点粗浅总结 xff0c
  • ONOS意图框架

    1 意图基本概念 Intent是用于描述应用需求的不可变模型对象 xff0c ONOS核心根据其改变网络行为 在最低级别上 xff0c 可以用以下方式描述意图 即意图的组成 xff1a 1 Network Resource xff1a 一组
  • ONOS架构中的YANG、P4 Runtime

    本文总结自毛健炜的 ONOS架构中的YANG P4 Runtime 的演讲 ONOS xff0c 全称是开放网络操作系统 xff0c 通常以控制器的身份为人所知 它是由ON LAB组织发起的一个开源项目 xff0c 在与ONF组织合并之后
  • ONOS-ifwd-app源码分析总结

    ONOS ifwd源码分析 xff0c 参考资料 xff1a https www sdnlab com 10297 html 在之前的文章中 xff0c 介绍了ONOS sample apps的获取 xff0c 但是将其生成的oar文件导入
  • ONOS简介

    一 与ODL区别 ONOS与OpenDayLight 两个控制器之间的较量 ODL 立场 xff1a 设备厂商 xff1a Cisco Citrix Systems Red Hat Brocade Ericsson ClearPath HP
  • 集群源码安装ONOS

    集群源码安装ONOS 1 每一台待安装onos的配置 bin bash sudo mv apache karaf 3 0 3 tar gz opt sudo mv apache maven 3 3 1 bin tar gz opt cd o
  • ONOS源码笔记--机制

    app注册 private ApplicationId appId appId 61 coreService registerApplication 34 org onosproject fwd 34 注册应用 xff0c 一般在activ
  • 使用ONOS的REST API来下发流表

    1 启动ONOS后 xff0c 浏览器进入doc http 10 109 247 211 8181 onos v1 docs 2 找到Flow xff0c 并打开POST 3 可以直接在这个上面编辑flow stream里面模拟GET获得的
  • 从零开始安装ubuntu18+P4+ONOS

    1 安装VMware Tools xff08 前面VM虚拟机安装Ubuntu的教程太多 xff0c 就不写了 xff09 先从虚拟机下载好 xff0c 然后将压缩包里的文件夹移动出来 xff08 可以用解压或者直接点开压缩包 xff0c 移
  • ONOS 控制器安装和app新建和编译

    1 1 ONOS 控制器编译与安装 ONOS 1 8 版本起强制使用 BUCK 构建工具 xff0c 不再使用 maven xff0c 编译和打包方式与旧版本有所区别 步骤 xff1a 配置环境 gt 下代码 gt 编译 gt 运行 配置环
  • Mininet连接ONOS的一些问题

    Mininet连接ONOS的一些问题 一 启动ONOS二 简单小问题1 Mininet创建最简拓扑后连接不上远程控制器2 Mininet创建最简拓扑后主机之间ping不通3 不启动fwd应用自己通过REST API下发流表发现两台主机间pi
  • P4连接ONOS——导入ONOS虚拟机

    补充 xff1a 2020年5月11日 13点07分 近期有同学私信我安装过程中有这个报错 xff0c 如下图 根据报错信息 xff0c 似乎是下载这个包服务器501出错 xff0c 很可能是因为内网无法下载这个包 我忘记说了 xff0c
  • ONOS链路发现源码

    ONOS链路发现源码 send LLDP by ynogpu private void sendProbes Long portNumber String portDesc if context packetService 61 61 nu
  • Ubuntu16.04下基于BUCK安装onos

    踩了很多坑 xff0c 其中很多错误也没整明白怎么回事 xff0c 实在搞不了就重装系统 xff0c 经过多次测试 xff0c 找到了一个合适的安装步骤安装ONNO 1 13 2 1 安装mininet 需要可以安装 xff09 此步骤安装
  • 基于IDEA分析ONOS源码

    1 安装Java依赖 sudo apt get install software properties common y amp amp sudo add apt repository ppa webupd8team java y amp
  • java.lang.NoSuchFieldError:DEF_CONTENT_CHARSET

    我正在尝试运行 java 程序 但收到以下运行时错误 错误如下所示 Exception in thread main java lang NoSuchFieldError DEF CONTENT CHARSET at org apache

随机推荐