87 | | === 5.1 Exercise A: Configure Routing === |
| 87 | === 5.1 Exercise A: Test Connectivity === |
| 88 | |
| 89 | ==== 5.1.1 Send IP traffic ==== |
| 90 | The first simple experiment that we will run is to verify the IP connectivity between our hosts. |
| 91 | |
| 92 | a. Check the interfaces of your nodes. In the terminal type: |
| 93 | {{{ |
| 94 | sudo ifconfig |
| 95 | }}} |
| 96 | You should see at least three interfaces: |
| 97 | * A single '''control interface'''. This is the interface you use to access the node, e.g. ssh into your host. The control interface is mainly used for control traffic, i.e. traffic for controlling the node and the experiment. |
| 98 | * The '''data interfaces'''. These are the interfaces that are used for sending experimental traffic. These interfaces connect to the other hosts of your experiment through GENI. The links between these interfaces are the ones that allow you to run non-IP experiments. '''The data interfaces are the ones that have an IP address and mask that match what you configured before you reserved your resources.''' |
| 99 | b. Fill in the worksheet, noting the name and IP address of the control and of the data interfaces for each node. |
| 100 | {{{ |
| 101 | #!html |
| 102 | |
| 103 | <table id="Table_02" border="0" cellpadding="5" cellspacing="0"> |
| 104 | <tr> |
| 105 | <td> |
| 106 | <img src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/Symbols-Tips-icon.png?format=raw" width="50" height="50" alt="Tip"> |
| 107 | </td> |
| 108 | <td> |
| 109 | The command prompt on each node may say "NodeA", "NodeB", and "NodeC" respectively. |
| 110 | </td> |
| 111 | </tr> |
| 112 | </table> |
| 113 | }}} |
| 114 | c. From NodeA, `ping` the adjacent NodeB '''data plane interface'''. From the terminal window that is logged in to the client type : |
| 115 | {{{ |
| 116 | ping <NodeB data IP addr> -c 5 |
| 117 | }}} |
| 118 | For example: |
| 119 | {{{ |
| 120 | ping 192.168.2.11 -c 5 |
| 121 | }}} |
| 122 | d. Now, `ping` the NodeB '''control plane interface'''. From the terminal window that is logged in to NodeA type : |
| 123 | {{{ |
| 124 | ping <NodeB control IP addr> -c 5 |
| 125 | }}} |
| 126 | For example: |
| 127 | {{{ |
| 128 | ping 172.17.1.9 -c 5 |
| 129 | }}} |
| 130 | |
| 131 | |
| 132 | ==== 5.1.2 Install and use `iperf` ==== |
| 133 | a. Install the `iperf` software on both NodeA and NodeB: |
| 134 | {{{ |
| 135 | sudo apt-get install iperf |
| 136 | hash |
| 137 | }}} |
| 138 | |
| 139 | b. Start an `iperf` server on NodeB: |
| 140 | {{{ |
| 141 | iperf -s |
| 142 | }}} |
| 143 | c. From NodeA, run an `iperf` client via the data plane: |
| 144 | {{{ |
| 145 | iperf -c <NodeB data IP addr> |
| 146 | }}} |
| 147 | For example: |
| 148 | {{{ |
| 149 | iperf -c 192.168.2.11 |
| 150 | }}} |
| 151 | ''What is the bandwidth of this link?'' |
| 152 | |
| 153 | ''Why?'' |
| 154 | d. On NodeA, run an `iperf` client via the control plane: |
| 155 | {{{ |
| 156 | iperf -c <NodeB control IP addr> |
| 157 | }}} |
| 158 | For example: |
| 159 | {{{ |
| 160 | iperf -c 172.17.2.2 |
| 161 | }}} |
| 162 | ''What is the bandwidth of this link?'' |
| 163 | |
| 164 | ''Why?'' |
| 165 | e. Type `CTRL-C` on NodeB to stop the `iperf` server. |
| 166 | |
| 167 | |
| 168 | === 5.2 Exercise B: Configure Routing === |
| 169 | |
142 | | === 5.2 Exercise B: Explore the Data and Control Planes === |
143 | | |
144 | | ==== 5.2.1 Send IP traffic ==== |
145 | | The first simple experiment that we will run is to verify the IP connectivity between our hosts. |
146 | | |
147 | | a. Check the interfaces of your nodes. In the terminal type: |
148 | | {{{ |
149 | | sudo ifconfig |
150 | | }}} |
151 | | You should see at least three interfaces: |
152 | | * A single '''control interface'''. This is the interface you use to access the node, e.g. ssh into your host. The control interface is mainly used for control traffic, i.e. traffic for controlling the node and the experiment. |
153 | | * The '''data interfaces'''. These are the interfaces that are used for sending experimental traffic. These interfaces connect to the other hosts of your experiment through GENI. The links between these interfaces are the ones that allow you to run non-IP experiments. '''The data interfaces are the ones that have an IP address and mask that match what you configured before you reserved your resources.''' |
154 | | b. Fill in the worksheet, noting the name and IP address of the control and of the data interfaces for each node. |
155 | | {{{ |
156 | | #!html |
157 | | |
158 | | <table id="Table_02" border="0" cellpadding="5" cellspacing="0"> |
159 | | <tr> |
160 | | <td> |
161 | | <img src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/Symbols-Tips-icon.png?format=raw" width="50" height="50" alt="Tip"> |
162 | | </td> |
163 | | <td> |
164 | | The command prompt on each node may say "NodeA", "NodeB", and "NodeC" respectively. |
165 | | </td> |
166 | | </tr> |
167 | | </table> |
168 | | }}} |
169 | | c. From NodeA, `ping` the adjacent NodeB '''data plane interface'''. From the terminal window that is logged in to the client type : |
170 | | {{{ |
171 | | ping <NodeB data IP addr> -c 5 |
172 | | }}} |
173 | | For example: |
174 | | {{{ |
175 | | ping 192.168.2.11 -c 5 |
176 | | }}} |
177 | | d. Now, `ping` the NodeB '''control plane interface'''. From the terminal window that is logged in to NodeA type : |
178 | | {{{ |
179 | | ping <NodeB control IP addr> -c 5 |
180 | | }}} |
181 | | For example: |
182 | | {{{ |
183 | | ping 172.17.1.9 -c 5 |
184 | | }}} |
185 | | |
186 | | |
187 | | ==== 5.2.2 Install and use `iperf` ==== |
188 | | a. Install the `iperf` software on both NodeA and NodeB: |
189 | | {{{ |
190 | | sudo apt-get install iperf |
191 | | hash |
192 | | }}} |
193 | | |
194 | | b. Start an `iperf` server on NodeB: |
195 | | {{{ |
196 | | iperf -s |
197 | | }}} |
198 | | c. From NodeA, run an `iperf` client via the data plane: |
199 | | {{{ |
200 | | iperf -c <NodeB data IP addr> |
201 | | }}} |
202 | | For example: |
203 | | {{{ |
204 | | iperf -c 192.168.2.11 |
205 | | }}} |
206 | | ''What is the bandwidth of this link?'' |
207 | | |
208 | | ''Why?'' |
209 | | d. On NodeA, run an `iperf` client via the control plane: |
210 | | {{{ |
211 | | iperf -c <NodeB control IP addr> |
212 | | }}} |
213 | | For example: |
214 | | {{{ |
215 | | iperf -c 172.17.2.2 |
216 | | }}} |
217 | | ''What is the bandwidth of this link?'' |
218 | | |
219 | | ''Why?'' |
220 | | e. Type `CTRL-C` on NodeB to stop the `iperf` server. |
221 | | |
222 | | ==== 5.2.3 Bring down one of NodeB's data interfaces ==== |
| 224 | === 5.3 Exercise C: Explore the Data and Control Planes === |
| 225 | |
| 226 | |
| 227 | ==== 5.3.1 Bring down one of NodeB's data interfaces ==== |