onos教程.docx

上传人:b****6 文档编号:4373771 上传时间:2022-12-01 格式:DOCX 页数:20 大小:950.09KB
下载 相关 举报
onos教程.docx_第1页
第1页 / 共20页
onos教程.docx_第2页
第2页 / 共20页
onos教程.docx_第3页
第3页 / 共20页
onos教程.docx_第4页
第4页 / 共20页
onos教程.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

onos教程.docx

《onos教程.docx》由会员分享,可在线阅读,更多相关《onos教程.docx(20页珍藏版)》请在冰豆网上搜索。

onos教程.docx

onos教程

1介绍

1.1前提条件

1.计算机:

2G内存和5G自由空间,快速的处理器可以加速虚拟机的运行性能。

2.能运行VirtualBox的操作系统。

3.安装VirtualBox,需要管理员权限。

4.SDN,OpenFlow和Mininet的基本概念。

请事先完成OpenFlowtutorial和Mininetworkthrough

5.并非必须,但是强烈建议完成FlowVisortutorial。

熟悉ApacheKaraf将会很有帮助。

1.2卡住了?

返现了bug?

有问题?

Email:

onos-discuss@

高效的提交bug报告:

https:

//wiki.onosproject.org/display/ONOS/ONOS+Mailing+Lists

2环境设置

2.1安装需要的软件

下载并安装VirtualBox最新版,下载TutorialVM:

http:

//downloads.onosproject.org/vm/onos-tutorial-1.0.0r161-ovf.zip

2.2创建虚拟机

解压缩下载的TutorialVM,双击OVF文件将自动启动VitualBox和导入虚拟机对话框。

导入虚拟机,即可。

虚拟机内的GuestOS帐号和密码如下:

USERNAME:

tutorial1

PASSWORD:

tutorial1

2.3重要的命令提示符

ONOS的命令提示符:

onos>

Mininet的命令提示符:

mininet>

2.4重置

桌面上的Reset快捷方式用户快速重置Tutorial所做的所有改动为初始状态。

2.5启动Mininet

本教程所有的联系都是使用相同的网络拓扑(如下图所示)。

网络中有6台交换机,4台外边的交换机上连接了6台主机,这4台交换机又连接到中间互连的2台交换机上。

启动Mininet(双击桌面的Mininet图标)即可启动此网络拓扑。

3激活数据包转发(ReactiveForwarding)

双击桌面上的ONOS图标,打开一个ONOS命令行提示符。

3.1Noping?

Why?

上面的网络拓扑中主机之间是不能ping通的。

在mininet提示符中输入下面的命令:

mininet>h11ping-c3h41

得到如下的结果:

mininet>h11ping-c3h41

PING10.0.0.19(10.0.0.19)56(84)bytesofdata.

From10.0.0.1icmp_seq=1DestinationHostUnreachable

From10.0.0.1icmp_seq=2DestinationHostUnreachable

From10.0.0.1icmp_seq=3DestinationHostUnreachable

---10.0.0.19pingstatistics---

3packetstransmitted,0received,+3errors,100%packetloss,time2009ms

“ReactiveForwarding”是一个非常简单的SDN应用程序,它为每一个被送到控制器的数据包安装流表。

但是此应用默认没有被加载。

使用如下命令查看已经被加载的应用程序列表:

onos>list

110|Active|80|1.0.0.SNAPSHOT|onos-rest

116|Active|80|1.0.0.SNAPSHOT|onos-of-api

117|Active|80|1.0.0.SNAPSHOT|onos-of-ctl

118|Active|80|1.0.0.SNAPSHOT|onos-lldp-provider

119|Active|80|1.0.0.SNAPSHOT|onos-host-provider

120|Active|80|1.0.0.SNAPSHOT|onos-of-provider-device

121|Active|80|1.0.0.SNAPSHOT|onos-of-provider-packet

122|Active|80|1.0.0.SNAPSHOT|onos-of-provider-flow

136|Active|80|1.0.0.SNAPSHOT|onos-cli

137|Active|80|8.1.15.v20140411|Jetty:

:

Websocket

138|Active|80|1.0.0.SNAPSHOT|onos-gui

151|Active|80|1.0.0.SNAPSHOT|onos-core-net

152|Active|80|1.0.0.SNAPSHOT|onos-core-trivial

3.2加载ReactiveForwarding应用

在ONOS提示符中输入如下命令(可以使用tab键提示输入内容):

ONOS>feature:

installonos-app-fwd

在Mininet提示符中再次输入ping命令,即可ping通:

mininet>h11pingh41

PING10.0.0.19(10.0.0.19)56(84)bytesofdata.

64bytesfrom10.0.0.19:

icmp_req=1ttl=64time=9.12ms

3.3启动和停止

在ONOS命令行提示符中输入如下的命令停止和启动应用:

onos>stoponos-app-fwd

停止应用程序后,不能ping通。

onos>startonos-app-fwd

启动应用程序后,能ping通。

4ONOSCLI命令

ONOS有很多命令,本节学习最常用命令。

获得命令行帮助的方法如下:

onos>helponos

4.1devices命令

如果没有设备去控制的话,SDN控制器就没什么用。

列出控制其中现有的设备列表:

onos>devices

id=of:

0000000000000001,available=true,role=MASTER,type=SWITCH,mfr=Nicira,Inc.,hw=OpenvSwitch,sw=2.1.3,serial=None,protocol=OF_10

id=of:

0000000000000002,available=true,role=MASTER,type=SWITCH,mfr=Nicira,Inc.,hw=OpenvSwitch,sw=2.1.3,serial=None,protocol=OF_10

id=of:

000000000000000b,available=true,role=MASTER,type=SWITCH,mfr=Nicira,Inc.,hw=OpenvSwitch,sw=2.1.3,serial=None,protocol=OF_10

id=of:

000000000000000c,available=true,role=MASTER,type=SWITCH,mfr=Nicira,Inc.,hw=OpenvSwitch,sw=2.1.3,serial=None,protocol=OF_10

id=of:

000000000000000d,available=true,role=MASTER,type=SWITCH,mfr=Nicira,Inc.,hw=OpenvSwitch,sw=2.1.3,serial=None,protocol=OF_10

4.2links命令

显示系统中设备间的连接信息:

onos>links

src=of:

000000000000000e/1,dst=of:

0000000000000001/5,type=DIRECT,state=ACTIVE

src=of:

000000000000000d/1,dst=of:

0000000000000001/4,type=DIRECT,state=ACTIVE

src=of:

0000000000000001/1,dst=of:

0000000000000002/1,type=DIRECT,state=ACTIVE

4.3hosts命令

列出网络中的主机列表:

onos>hosts

id=00:

00:

00:

00:

00:

01/-1,mac=00:

00:

00:

00:

00:

01,location=of:

000000000000000b/3,vlan=-1,ip(s)=[10.0.0.1]

id=00:

00:

00:

00:

00:

13/-1,mac=00:

00:

00:

00:

00:

13,location=of:

000000000000000e/

4.4flows命令

流命令允许你查看系统中当前注册的流表项,流表项有如下几个状态:

∙PENDING_ADD –流被提交和转发给交换机。

∙ADDED –流已被添加到交换机。

∙PENDING_REMOVE –请求删除已被提交和转发给交换机的流。

∙REMOVED –流表规则已被删除

首先,在网络中开始发送一些流量:

mininet>h11pingh41

接着在ONOS的提示符中输入流命令,以查看流表信息:

onos>flows

deviceId=of:

0000000000000001,flowRuleCount=1

id=30000b889cb32,state=ADDED,bytes=8722,packets=89,duration=89,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

01},ETH_DST{mac=00:

00:

00:

00:

00:

13},IN_PORT{port=2}]

treatment=[OUTPUT{port=5}]

deviceId=of:

0000000000000002,flowRuleCount=1

id=30000b889cf4d,state=ADDED,bytes=8624,packets=88,duration=88,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

13},ETH_DST{mac=00:

00:

00:

00:

00:

01},IN_PORT{port=5}]

treatment=[OUTPUT{port=2}]

deviceId=of:

000000000000000b,flowRuleCount=2

id=30000b88a8321,state=ADDED,bytes=8722,packets=89,duration=89,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

13},ETH_DST{mac=00:

00:

00:

00:

00:

01},IN_PORT{port=2}]

treatment=[OUTPUT{port=3}]

id=30000b88a833e,state=ADDED,bytes=8722,packets=89,duration=89,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

01},ETH_DST{mac=00:

00:

00:

00:

00:

13},IN_PORT{port=3}]

treatment=[OUTPUT{port=1}]

deviceId=of:

000000000000000c,flowRuleCount=0

deviceId=of:

000000000000000d,flowRuleCount=0

deviceId=of:

000000000000000e,flowRuleCount=2

id=30000b88a8e45,state=ADDED,bytes=8722,packets=89,duration=89,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

01},ETH_DST{mac=00:

00:

00:

00:

00:

13},IN_PORT{port=1}]

treatment=[OUTPUT{port=3}]

id=30000b88a8e82,state=ADDED,bytes=8722,packets=89,duration=89,priority=10,appId=org.onlab.onos.fwd

selector=[ETH_TYPE{ethType=800},ETH_SRC{mac=00:

00:

00:

00:

00:

13},ETH_DST{mac=00:

00:

00:

00:

00:

01},IN_PORT{port=3}]

treatment=[OUTPUT{port=2}]

从上面的输出中可以看出,ONOS提供了很多交换机上流表的详细信息。

例如:

每一条流表项定义一个“selector”和一个“treatment”,他们被流表项进行流量匹配,和匹配的流量如何被处理。

每一个流表项被appId标记,指出此流表项被那个应用程序安装,这是非常有用的特性,因为它能帮助管理员区分那个应用程序行为不当或耗费较多的资源。

4.5apps命令

列出当前在ONOS上运行的应用程序列表:

onos>apps

id=1,name=.intent

id=2,name=org.onlab.onos.fwd

如上所示,目前为止,本tutorial加载了2个应用程序。

4.6paths命令

对于给定的网络拓扑,ONOS计算所有任意两个节点见的最短路径。

这一点对于那些获取路径信息用于流表安装的应用程序特别有用。

当然也可用于其他用途。

paths命令有两个参数(分别是两个设备)。

可以使用ONOS的tab键的命令补全功能。

onos>paths

of:

0000000000000001of:

0000000000000002of:

000000000000000b

of:

000000000000000cof:

000000000000000dof:

000000000000000e

ONOS会列出可用的设备列表,方便找到你需要的设备。

下面是paths命令的一个输出结果示例:

onos>pathsof:

000000000000000bof:

000000000000000e

of:

000000000000000b/1-of:

0000000000000001/2==>of:

0000000000000001/5-of:

000000000000000e/1;cost=2.0

of:

000000000000000b/2-of:

0000000000000002/2==>of:

0000000000000002/5-of:

000000000000000e

4.7Intent命令

ONOS中的intent命令允许我们查看系统中的intents。

“intents”存在如下几个状态:

– SUBMITTED –“intent”已经被提交,很快将被处理。

– COMPILING –“intent”正在被编译,这是一个瞬态(transientstate)。

– INSTALLING –安装的“intent”正在被处理。

– INSTALLED –安装的“intent”安装成功。

.

– RECOMPILING –“intent”遭遇失败后,正在被重新编译。

– WITHDRAWING –“intent”正在被撤销。

– WITHDRAWN –“intent”已经被删除。

– FAILED –由于“intent”不能被满足,而处于失败状态。

更多关于Intents的详细,参考:

https:

//wiki.onosproject.org/display/ONOS/The+Intent+Framework

onos>intents

id=0x0,state=INSTALLED,type=HostToHostIntent,appId=org.onlab.onos.gui

constraints=[LinkTypeConstraint{inclusive=false,types=[OPTICAL]}]

id=0x1,state=WITHDRAWN,type=HostToHostIntent,appId=org.onlab.onos.cli

constraints=[LinkTypeConstraint{inclusive=false,types=[OPTICAL]}]

使用上面的命令在添加“intent”之前,是看不到任何“intent”。

在本教程的下一节中,你将加载“intentreactiveforwarding”应用程序,它可以在需要的时候自动添加intents。

下面的命令(intents-i)能输出intent被编译后的“sub-intents”。

onos>intents-i

id=0x2,state=INSTALLED,type=HostToHostIntent,appId=org.onlab.onos.ifwd

constraints=[LinkTypeConstraint{inclusive=false,types=[OPTICAL]}]

installable=[

PathIntent{id=0x4,appId=DefaultApplicationId{id=2,name=org.onlab.onos.ifwd},

selector=DefaultTrafficSelector{criteria=[ETH_SRC{mac=00:

00:

00:

00:

00:

0D},ETH_DST{mac=00:

00:

00:

00:

00:

07}]},

treatment=DefaultTrafficTreatment{instructions=[]},constraints=[LinkTypeConstraint{inclusive=false,types=[OPTICAL]}],

path=DefaultPath{src=ConnectPoint{elementId=00:

00:

00:

00:

00:

0D/-1,portNumber=0},

dst=ConnectPoint{elementId=00:

00:

00:

00:

00:

07/-1,portNumber=0},type=INDIRECT,state=ACTIVE,durable=false}},

PathIntent{id=0x5,appId=DefaultApplicationId{id=2,name=org.onlab.onos.ifwd},

selector=DefaultTrafficSelector{criteria=[ETH_SRC{mac=00:

00:

00:

00:

00:

07},ETH_DST{mac=00:

00:

00:

00:

00:

0D}]},

treatment=DefaultTrafficTreatment{instructions=[]},constraints=[LinkTypeConstraint{inclusive=false,types=[OPTICAL]}],

path=DefaultPath{src=ConnectPoint{elementId=00:

00:

00:

00:

00:

07/-1,portNumber=0},

dst=ConnectPoint{elementId=00:

00:

00:

00:

00:

0D/-1,portNumber=0},type=INDIRECT,state=ACTIVE,durable=false}}]

例如,对于“hosttohost”的“intent”已经被编译成2条“pathintents”,这2条“pathintents”具有适当的流量选择和动作(withtheappropriatetrafficselectionsandactionscomputedonyourbehalf)

5IntentReactiveForwarding

ONOS中的另一个范例应用是“intentreactiveforwarding”。

与前面看到的,基于每个数据包推送流表项不同,“intentreactiveforwarding”应用提供“intent”。

特殊的,它提供一个“hosttohost”的“intent”(一个简单的connectivityintent),用于两个主机间的连通性。

5.1除旧迎新

首先,移除原先加载的“reactiveforwarding”应用,并且加载“intentreactiveforwarding”应用。

onos>feature:

uninstallonos-app-fwd

onos>feature:

installonos-app-ifwd

注意两个应用的名字差了一个“i”。

OK,查看一下应用是否加载正确:

onos>apps

id=0,name=.intent

id=1,name=org.onlab.onos.fwd

id=2,name=org.onlab.onos.ifwd

如上所示,“intentreactiveforwarding”被正确加载。

TheappId“ReactiveForwarding”应用的appId还在,所以如果你重新加载此应用,它将得到与先前相同的appId。

5.2IntentionallyReact

接下来,让我们转发一些流量:

mininet>h21pingh31

PING10.0.0.13(10.0.0.13)56(84)bytesofdata.

64bytesfrom10.0.0.13:

icmp_seq=1ttl=64time=25.7ms

64bytesfrom10.0.0.13:

icmp_seq=2ttl=64time=1.73ms

64bytesfr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1