Changes between Version 13 and Version 14 of ClickExampleExperiment


Ignore:
Timestamp:
06/22/12 14:33:07 (7 years ago)
Author:
Mark Berman
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ClickExampleExperiment

    v13 v14  
    129129== Configure your routers ==
    130130
    131 In each of your four router hosts, run the extractClickConfig script as shown below.
     131''In each of your four router hosts,'' run the extractClickConfig script as shown below.
    132132
    133133{{{
     
    149149(If you are prompted for a password, check to make sure that you provided the -A switch in your xterm command above.)
    150150
    151 The extractClickConfig script produces router configurations for your experiment. It also creates a diagram of your experiment. Copy it back to the '''click-example''' directory on your local host so you can view it. There's a copy on each of your routers hosts, I've chosen top, but it doesn't matter. You'll need to copy the host name from the script output above.
     151The extractClickConfig script produces router configurations for your experiment. It also creates a diagram of your experiment. Copy it back to the '''click-example''' directory on your local host so you can view it. There's a copy on each of your router hosts. I've chosen top, but it doesn't matter. You'll need to find the host name in the script output above.
    152152
    153153{{{
     
    155155}}}
    156156
    157 Your slice will look something like the one below (see [attachment:sampleDiagram.png]). The overall configuration should be the same, with two end hosts, named hostA and hostB, and four routers (top, left, right, bottom) in a diamond configuration. The host names, interface names, and MAC addresses will be different, depending on the actual resources assigned to your slice.
     157Once you have the '''myslice.png''' on your local machine, open it in a browser other viewer program. Your slice will look something like the one below (see [attachment:sampleDiagram.png]). The overall configuration should be the same, with two end hosts, named hostA and hostB, and four routers (top, left, right, bottom) in a diamond configuration. The host names, interface names, and MAC addresses will be different, depending on the actual resources assigned to your slice.
    158158
    159159[[Image(sampleDiagram.png, nolink, 25%)]]
    160160
    161 The four routers interconnected by solid lines are your "core network," which runs a non-standard, non-IP protocol. The dashed lines out to the end hosts carry standard IP traffic.
     161The four routers interconnected by solid lines are your "core network," which will run a non-standard, non-IP protocol. The dashed lines out to the end hosts carry standard IP traffic.
     162
     163== Turn off internet protocol ==
     164
     165At this point, your network is still running IP. You can check by running a ping. In your '''hostb''' terminal window, run this command.
     166
     167{{{
     168ping -c 3 hostb
     169}}}
     170
     171The command should succeed, with output like this:
     172
     173{{{
     174PING hostB-link-B (10.10.6.2) 56(84) bytes of data.
     17564 bytes from hostB-link-B (10.10.6.2): icmp_seq=1 ttl=61 time=1.38 ms
     17664 bytes from hostB-link-B (10.10.6.2): icmp_seq=2 ttl=61 time=1.19 ms
     17764 bytes from hostB-link-B (10.10.6.2): icmp_seq=3 ttl=61 time=1.53 ms
     178
     179--- hostB-link-B ping statistics ---
     1803 packets transmitted, 3 received, 0% packet loss, time 2004ms
     181rtt min/avg/max/mdev = 1.193/1.370/1.531/0.138 ms
     182}}}
     183
     184Since our experiment doesn't want IP, let's turn it off. ''On each of your four router hosts,'' run this command:
     185
     186{{{
     187sh ./stopIP.sh
     188}}}
     189
     190You'll get output like this (the interface names may be different):
     191
     192{
     193Disabling IP on interface eth2
     194Disabling IP on interface eth4
     195}
     196
     197To verify that IP is really off, try another ping. On '''hosta''':
     198{{{
     199ping -c 3 hostb
     200}}}
     201
     202The command should take several seconds to time out, then fail with output like this:
     203
     204{{{
     205PING hostB-link-B (10.10.6.2) 56(84) bytes of data.
     206
     207--- hostB-link-B ping statistics ---
     2083 packets transmitted, 0 received, 100% packet loss, time 11999ms
     209}}}
    162210
    163211== Start your routers ==
    164212
    165 The extractor script produces a click configuration file for each of your routers. The deployment script, '''deployClick.sh''' copies these files to your routers and starts a user-space router on each. Run the script, and you should get output like this:
    166 
    167 {{{
    168 [mberman@molasses click-example]$ sh deployClick.sh
    169 Setting user shell on top.StupidSliceName.emulab-net.emulab.net
    170 Changing shell for mberman.
    171 Shell changed.
    172 Copying top.click to top.StupidSliceName.emulab-net.emulab.net
    173 Waiting for click to build on top.StupidSliceName.emulab-net.emulab.net ...................
    174 Stopping any running click router on top.StupidSliceName.emulab-net.emulab.net
    175 Disabling IP routing on top.StupidSliceName.emulab-net.emulab.net
    176 Starting click router on top.StupidSliceName.emulab-net.emulab.net
    177 
    178 <similar output for {left,right,bottom} routers>
    179 }}}
    180 
    181 Depending on how long you waited between creating your slice and running the '''deployClick.sh''' script (and how powerful your allocated router machines are), you may need to wait a few minutes while click finishes compiling.
    182 
    183 You are now running a non-IP core network on your four routers, along with a (primitive) non-IP multipath routing algorithm. You're ready to experiment with this configuration.
     213The extractor script produces a click configuration file for each of your routers.  ''On each of your four router hosts,'' run this command:
     214
     215{{{
     216sh ./startClick.sh
     217}}}
     218
     219You'll get output like this. (Don't worry about the warning messages, Click is just reminding you that you have no IP addresses in your core network.) The shell prompt won't come back, but you'll see the debugging output of the Click router in the terminal window.
     220
     221{{{
     222Stopping any running Click routers
     223Starting Click router
     224top.click:34: While initializing ‘FromDevice@18 :: FromDevice’:
     225  warning: eth2: no IPv4 address assigned
     226top.click:35: While initializing ‘FromDevice@21 :: FromDevice’:
     227  warning: eth4: no IPv4 address assigned
     228}}}
     229
     230Congratulations! You are now running a non-IP core network on your four routers, along with a (primitive) non-IP multipath routing algorithm. You're ready to experiment with this configuration.
    184231
    185232== Send some traffic ==
    186233
    187 Now you'll log into your two edge hosts, '''hostA''' and '''hostB''', and send some traffic between them.  Since these end hosts  are not running your modified protocol, they'll rely on the '''top''' and '''bottom''' routers to transform their IP packets into your modified protocol on entry to the core network and back into IP packets on exit.
    188 
    189 In two different windows, use '''ssh -F ssh_config hostA''' and '''ssh -F ssh_config hostB''' to connect to your two end hosts. (Don't forget to work in your '''click-example''' directory.)
    190 
    191 On '''hostB''', instruct '''nc''' to listen for a UDP connection on port 24565 (or some other port that catches your fancy).
     234Now you'll use your two edge hosts, '''hostA''' and '''hostB''' to send traffic along your network.  Since these end hosts are not running your modified protocol, they'll rely on the '''top''' and '''bottom''' routers to transform their IP packets into your modified protocol on entry to the core network and back into IP packets on exit.
     235
     236In your terminal window on '''hostB''', instruct '''nc''' to listen for a UDP connection on port 24565 (or some other port that catches your fancy).
    192237{{{
    193238[mberman@hostb ~]$ nc -ul 24565
    194239}}}
    195240
    196 Then connect to it from '''hostA''':
     241Then connect to it from your terminal window on '''hostA''':
    197242{{{
    198243[mberman@hosta ~]$ nc -u hostb 24565