| 68 | 2. ''start flowvisor.'' Unlike nox, there are no flags to throw it into the background. Here it is started on port 6655: |
| 69 | {{{ |
| 70 | flowvisor config.xml 6655 & |
| 71 | }}} |
| 72 | |
| 73 | 3. ''delete sample slices.'' After inspecting them with ''getSliceInfo'', remove them with ''deleteSlice''. There are two slices, "alice" and "bob". |
| 74 | {{{ |
| 75 | fvctl getSliceInfo alice |
| 76 | fvctl deleteSlice alice |
| 77 | fvctl getSliceInfo bob |
| 78 | fvctl deleteSlice bob |
| 79 | }}} |
| 80 | |
| 81 | 4. ''create your slice.'' This is done via ''createSlice''. The syntax goes roughly like this: |
| 82 | {{{ |
| 83 | fvctl createSlice <slice name> tcp:<controller's ip>:<controller's port> <your email> |
| 84 | }}} |
| 85 | |
| 86 | So for our example, we have a slice "nox-test," which expects a controller with ip 172.16.0.4 living on port 6656: |
| 87 | {{{ |
| 88 | fvctl createSlice nox-test tcp:172.16.0.4:6656 foo@sampledomain.com |
| 89 | }}} |
| 90 | |
| 91 | 5. ''create your flowspace.'' Flowspaces define the policy for your slices. Many parameters can be tacked onto ''addFlowSpace''. First, the syntax: |
| 92 | {{{ |
| 93 | fvctl addFlowSpace all <priority number> <policy> "Slice:<slice name>=<permissions>" |
| 94 | }}} |
| 95 | |
| 96 | * priority - a number between 0 and 2^31^. Higher value = higher priority |
| 97 | * policy - flow matching policies. Details are under '''FLOW SYNTAX''' in the fvctl(1) man pages. |
| 98 | * slice name - the name of your slice. |
| 99 | * permissions - similar to ''chmod'', with delegate=1, read=2, write=4. |
| 100 | |
| 101 | What we want is very minimal: allow all for the controller of the slice: |
| 102 | {{{ |
| 103 | fvctl addFlowSpace all 1000 any "Slice:nox-test=7" |
| 104 | }}} |
| 105 | |
| 106 | 6. ''start the controller.'' Start nox on the IP:port combination defined for the controller in the flowvisor slice: |
| 107 | {{{ |
| 108 | ./nox_core -i ptcp:6656 switch packetdump -d |
| 109 | }}} |
| 110 | |
| 111 | 7. ''start virtual switch.'' Here we instantiate an IP8800 switch with a virtual switch listening to flowvisor, which is 172.16.0.4: |
| 112 | {{{ |
| 113 | setvsi 22 37,38 tcp 172.16.0.4:6655 dpid 0x001010223232 |
| 114 | }}} |
| 115 | The datapath should come up as "connected" under ''showswitch''. |