...
Code Block |
---|
onos> intents id=0x223838ca0x0, state=INSTALLED, type=HostToHostIntent, appId=org.onlab.onos.gui constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] id=0x13e859c60x1, state=WITHDRAWN, type=HostToHostIntent, appId=org.onlab.onos.cli constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] |
...
Code Block |
---|
onos> intents -i id=0xffffffffe2a484dd0x2, state=INSTALLED, type=HostToHostIntent, appId=org.onlab.onos.ifwd constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] installable=[ PathIntent{id=0xffffffffc68cba730x4, 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=0xffffffffde7767b70x5, 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}}] |
...
Code Block |
---|
onos> intents -i id=0xffffffffe2a484dd0x0, state=INSTALLED, type=HostToHostIntent, appId=org.onlab.onos.ifwd constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] installable=[ PathIntent{id=0xffffffffc68cba730x1, 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=0xffffffffde7767b70x2, 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}}] |
...
The <tab> key will autocomplete the id that was associated the intent we just pushed. You should now see that your intent is in withdrawn statethere are no intents in the system.
Code Block |
---|
onos> intents
id=0xffffffffe2a484dd, state=WITHDRAWN, type=HostToHostIntent, appId=org.onlab.onos.ifwd
constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] |
This command will return nothing as there are no intents in the system.
State your intentions
One major advantage of using intents over simply using flow entries to program your network is that intents track the state of the network and reconfigure themselves in order to satisfy your intention. For example, if link were to go down the intent framework would reroute your intent (ie. your flows) onto an alternative path. But, what if there are no alternative path? Well, in this case the intent would enter the failed state and remain there until a path becomes available. Pretty cool, eh? Let's check this out in action.
...
Code Block |
---|
onos> intents id=0xffffffff8f64cf440x9, state=INSTALLED, type=HostToHostIntent, appId=org.onlab.onos.cli constraints=[LinkTypeConstraint{inclusive=false, types=[OPTICAL]}] |
...
ONOS Graphical User Interface
First , lets reload our reactive forwarding application.
Code Block |
---|
onos> feature:uninstall onos-app-ifwd
onos> feature:uninstall onos-app-fwd |
ONOS comes with a GUI. The GUI allows you to manipulate your network in a simple way.
First you You will need to load up the GUI bundle in ONOS, fortunately this is simple:
Code Block |
---|
onos> feature:install onos-gui |
To open the UI simply click on the 'ONOS GUI' icon. Initially, when the UI loads up you will see your network's topology over a map of the US. You can remove the map by hitting 'b'. In fact, the UI has a cheat sheet which can be toggled by hitting '/' which is easy to remember because it's the question mark key except you don't need to hit shift.
...
Code Block |
---|
mininet> pingall *** Ping: testing ping reachability h11 -> h12 h13 h14 h15 h16 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h12 -> h11 h13 h14 h15 h16 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h13 -> h11 h12 h14 h15 h16 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h14 -> h11 h12 h13 h15 h16 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h15 -> h11 h12 h13 h14 h16 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h16 -> h11 h12 h13 h14 h15 h21 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h21 -> h11 h12 h13 h14 h15 h16 h22 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 h22 -> h11 h12 h13 h14 h15 h16 h21 h23 h24 h25 h26 h31 h32 h33 h34 h35 h36 h41 h42 h43 h44 h45 h46 ..... |
At The hosts will not appear initially, simply type 'h' in your browser window and they will appear. At this point you should see something roughtly roughly similar to the image below.
GUI Features
Summary pane
...