Changes between Version 20 and Version 21 of Workshops/Sig Comm2022/Mininet Optical


Ignore:
Timestamp:
Aug 19, 2022, 7:44:05 PM (2 years ago)
Author:
rajag
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Workshops/Sig Comm2022/Mininet Optical

    v20 v21  
    3030* Each compute node has 1 Ethernet interface:
    3131{{{
    32 srv1-co1-eth0
    33 srv1-lg1-eth0
    34 srv2-lg1-eth0
     32srv1_co1-eth0
     33srv1_lg1-eth0
     34srv2_lg1-eth0
    3535}}}
    3636
     
    6262Fig.1 Logical Topology of the hardware used
    6363
    64 This experiment demonstrates optical switching between the short (1-hop) path, between {{{srv1-co1}}} and {{{srv1-lg1}}}, and the long (2-hop) path, between {{{srv1-co1}}} and {{{srv2-lg1}}}. It represents changing of the light path in C-RAN when a "Client" wants to dynamically change its base-band processing location between a nearby "Edge Cloud" and a further away "Central Cloud".
     64This experiment demonstrates optical switching between the short (1-hop) path, between {{{srv1_co1}}} and {{{srv1_lg1}}}, and the long (2-hop) path, between {{{srv1_co1}}} and {{{srv2_lg1}}}. It represents changing of the light path in C-RAN when a "Client" wants to dynamically change its base-band processing location between a nearby "Edge Cloud" and a further away "Central Cloud".
    6565
    6666To simulate the topology in hardware, the network component names are kept the same.
     
    6868Experiment includes 3 servers:
    6969{{{
    70 srv1-co1 (192.168.1.1/24)
    71 srv1-lg1 (192.168.1.2/24)
    72 srv2-lg1 (192.168.1.3/24)]
     70srv1_co1 (192.168.1.1/24)
     71srv1_lg1 (192.168.1.2/24)
     72srv2_lg1 (192.168.1.3/24)]
    7373}}}
    7474
     
    8585
    8686{{{
    87 sw-da-co1-eth1 <--> srv1-co1-eth0
    88 sw-da-lg1-eth2 <--> srv1-lg1-eth0
    89 sw-da-lg1-eth3 <--> srv2-lg1-eth0
     87sw-da-co1-eth1 <--> srv1_co1-eth0
     88sw-da-lg1-eth2 <--> srv1_lg1-eth0
     89sw-da-lg1-eth3 <--> srv2_lg1-eth0
    9090}}}
    9191
     
    185185= Setting Up the Optical Topology =
    186186
    187 === Starting the Mininet-Optical Network ===
     187== Starting the Mininet-Optical Network ==
    188188
    189189All of these commands should be run in a terminal window for the VM or server where Mininet-Optical is installed.
     
    205205        swda_co1           swda_lg1--------------------------|
    206206           |                  |                              |
    207         srv1-co1           srv1-lg1                       srv2-lg1
     207        srv1_co1           srv1_lg1                       srv2_lg1
    208208
    209209This is for the SIGCOMM22 mini-tutorial at:
     
    218218----
    219219
    220 === Mininet-Optical API ===
     220== Mininet-Optical API ==
    221221
    222222In the COSMOS optical testbed, all devices are connected to a Calient S320 space switch. This switch serves as a programmable patch panel that allows any port to be connected to any other port, enabling realization of arbitrary topologies with fast re-connection between experiments.
     
    255255{{{#!python
    256256    # Servers
    257     srv1_co1 = self.addHost('srv1-co1')
     257    srv1_co1 = self.addHost('srv1_co1')
    258258        ...
    259259}}}
     
    431431m=~/mininet/util/m
    432432...
    433 $m srv1-co1 ifconfig srv1-co1-eth0 192.168.1.1/24
    434 $m srv1-lg1 ifconfig srv1-lg1-eth0 192.168.1.2/24
    435 $m srv2-lg1 ifconfig srv2-lg1-eth0 192.168.1.3/24
     433$m srv1_co1 ifconfig srv1_co1-eth0 192.168.1.1/24
     434$m srv1_lg1 ifconfig srv1_lg1-eth0 192.168.1.2/24
     435$m srv2_lg1 ifconfig srv2_lg1-eth0 192.168.1.3/24
    436436}}}
    437437
     
    442442=== Performing base test configuration
    443443
    444 Once you execute the script, the script will ask for a prompt to perform a base test. This test pings 'srv-co1' to 'srv-lg1'; and pings 'srv-co1' to 'srv2-lg1' without establishing any lightpath connections between ROADMS. Press `Return` key to perform the base test.
     444Once you execute the script, the script will ask for a prompt to perform a base test. This test pings 'srv-co1' to 'srv-lg1'; and pings 'srv-co1' to 'srv2_lg1' without establishing any lightpath connections between ROADMS. Press `Return` key to perform the base test.
    445445
    446446{{{#!shell-session
     
    448448press return to test base configuration>
    449449...
    450 *** srv1-co1 pinging srv1-lg1
     450*** srv1_co1 pinging srv1_lg1
    451451PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
    452452From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
     
    4574573 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2168ms
    458458...
    459 *** srv1-co1 pinging srv2-lg1
     459*** srv1_co1 pinging srv2_lg1
    460460PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
    461461From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
     
    469469As expected, none of the servers are able to ping each other because lightpath connections have not been established as of yet.
    470470
    471 === Ping Servers Manually (''For extra credits'') === #point2
     471=== Ping Servers Manually ===
    472472
    473473You can also ping all the servers manually in the mininet-optical CLI to check the connections with below steps:
    474474
    475 1. Open another terminal window and login to the node; using the same steps you used to open a new terminal window previously. Jump to the section on opening another terminal window [#point1 here]
    476 2. Now, `~/mininet/util/m` can be used to 'log in' to any one of the servers much as you would with `ssh`. So you can ping any two servers. [[BR]]
    477     Let's try to ping srv1-lg1 from srv1-co1 like below. Note that we previously assigned the address 192.168.1.2 to srv1-lg1 in the `config-sigcommtutorial.sh` file [#point3 here]
    478 {{{#!shell-session
    479 root@<node>:~/mininet-optical# ~/mininet/util/m srv1-co1 ping 192.168.1.2
    480 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
    481 From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
    482 From 192.168.1.1 icmp_seq=2 Destination Host Unreachable
    483 From 192.168.1.1 icmp_seq=3 Destination Host Unreachable
    484 ^C
    485 --- 192.168.1.2 ping statistics ---
    486 5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4146ms
    487 }}}
    488 3. Press CTRL+C to stop the ping. Similarly you can ping srv2-lg1 from srv1-co1 as below:
    489 {{{#!shell-session
    490 root@<node>:~/mininet-optical# ~/mininet/util/m srv1-co1 ping 192.168.1.3
    491 PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
    492 From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
    493 From 192.168.1.1 icmp_seq=2 Destination Host Unreachable
    494 From 192.168.1.1 icmp_seq=3 Destination Host Unreachable
    495 ^C
    496 --- 192.168.1.3 ping statistics ---
    497 4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3156ms
    498 }}}
    499     Here, 192.168.1.3 is the address assigned to srv2-lg1. Press CTRL+C to exit the ping.
    500 
    501 As expected, you cannot ping srv1-lg1 and srv2-lg1 from srv1-co1 right now, because no  connections have been established.
     4751. Go back to terminal-1 to the mininet-optical CLI. Here you can ping one server from another to check the connection between them. Let's try to ping srv1_lg1 from srv1_co1 using the command `srv1_co1 ping -c3 srv1_lg1` as shown below:
     476{{{#!shell-session
     477mininet-optical> srv1_co1 ping -c3 srv1_lg1
     478PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
     479From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
     480From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
     481From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
     482
     483--- 10.0.0.2 ping statistics ---
     4843 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2081ms
     485}}}
     4862. You should also try to ping srv2_lg1 from srv1_co1 using the below command:
     487{{{#!shell-session
     488mininet-optical> srv1_co1 ping -c3 srv2_lg1
     489PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
     490From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
     491From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
     492From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
     493
     494--- 10.0.0.3 ping statistics ---
     4953 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2142ms
     496}}}
     497
     498As expected, you cannot ping srv1_lg1 and srv2_lg1 from srv1_co1 right now, because no  connections have been established.
    502499
    503500== Configuring ROADMs
     
    535532Once you perform the base test as described above, the script will prompt you to press `Return` key to perform the test for configuration 1. Before trying the configuration, let's dive into what connections this script will install:
    536533
    537 === Configuring srv1-co1<==>srv1-lg1 Connection 1 on Mininet-Optical using NETCONF ===
     534=== Configuring srv1_co1<==>srv1_lg1 Connection 1 on Mininet-Optical using NETCONF ===
    538535
    539536
     
    576573=== Performing Experiment 1 and results
    577574
    578 Now you can try installing the above lightpaths by yourself. As prompted by the terminal, press `Return` to install the configuration and perform the test. This will establish the connections between ROADMs as described above, which you can also view with the lines printed.
     575Now you can try installing the above lightpaths by yourself. Go to terminal-2, and as prompted by the terminal, press `Return` to install the configuration and perform the test. This will establish the connections between ROADMs as described above, which you can also view with the lines printed.
    579576
    580577
     
    584581press return to configure and test configuration 1>
    585582...
    586 *** Installing ROADM configuration 1 for srv1-co1<-->srv1-lg1 (NETCONF)
    587 ...
    588 *** srv1-co1 pinging srv1-lg1
     583*** Installing ROADM configuration 1 for srv1_co1<-->srv1_lg1 (NETCONF)
     584...
     585*** srv1_co1 pinging srv1_lg1
    589586PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
    59058764 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.724 ms
     
    598595...
    599596
    600 *** srv1-co1 pinging srv2-lg1
     597*** srv1_co1 pinging srv2_lg1
    601598PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
    602599From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
     
    608605}}}
    609606
    610 As expected, srv1-co1 and srv1-lg1 are able to ping each other because we established the ROADM rules for short-hop configuration. Consequently, srv1-co1 and srv2-lg1 are not able to ping each other because no such connection is established yet.
    611 
    612 Note that the average ping time for srv1-co1 to srv1-lg1 is 0.339 ms.
     607As expected, srv1_co1 and srv1_lg1 are able to ping each other because we established the ROADM rules for short-hop configuration. Consequently, srv1_co1 and srv2_lg1 are not able to ping each other because no such connection is established yet.
     608
     609Note that the average ping time for srv1_co1 to srv1_lg1 is 0.339 ms.
    613610
    614611''Note that the Mininet-Optical ROADM dataplane is currently modeled using OvS switching in the Linux kernel, so each hop will add some delay that would not be seen on hardware. Process scheduling, OS and VM overhead, etc. can create additional delays in a software emulator.''
    615612
    616 As before, you can ping the servers manually to verify the connections. You can jump back to that section [#point2 here].
     613
     614=== Ping Servers Manually ===
     615
     616Like before, you can also ping all the servers manually in the mininet-optical CLI to check the connections with below steps:
     617
     6181. Go back to terminal-1 to the mininet-optical CLI. Here you can ping one server from another to check the connection between them. Let's try to ping srv1_lg1 from srv1_co1 using the command `srv1_co1 ping -c3 srv1_lg1` as shown below:
     619{{{#!shell-session
     620mininet-optical> srv1_co1 ping -c3 srv1_lg1
     621PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
     62264 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.377 ms
     62364 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.166 ms
     62464 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.170 ms
     625
     626--- 192.168.1.2 ping statistics ---
     6273 packets transmitted, 3 received, 0% packet loss, time 2114ms
     628rtt min/avg/max/mdev = 0.166/0.237/0.377/0.098 ms
     629}}}
     6302. You should also try to ping srv2_lg1 from srv1_co1 using the below command:
     631{{{#!shell-session
     632mininet-optical> srv1_co1 ping -c3 srv2_lg1
     633PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
     634From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
     635From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
     636From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
     637
     638--- 10.0.0.3 ping statistics ---
     6393 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2142ms
     640}}}
     641
     642As expected, after installing configuration of Experiment 1, you should only be able to ping srv1_lg1 from srv1_co1.
    617643
    618644
    619645== Network Interfaces Configuration for Experiment-2 (long-hop)
    620646
    621 In Experiment 2, we are choosing to pass the optical signal through 2 hops (via a pair of 10km fiber spools with the 32km Manhattan dark fiber). This requires us to establish a connection between srv1-co1 and srv2-lg1. Once you perform the experiment 1 as described above, the script will prompt you to press Return key to perform the test for configuration 2. Before trying the configuration, let's dive into what connections this script will install:
    622 
    623 === Configuring srv1-co1<==>srv2-lg1 connection on Mininet-Optical using NETCONF ===
     647In Experiment 2, we are choosing to pass the optical signal through 2 hops (via a pair of 10km fiber spools with the 32km Manhattan dark fiber). This requires us to establish a connection between srv1_co1 and srv2_lg1. Once you perform the experiment 1 as described above, the script will prompt you to press Return key to perform the test for configuration 2. Before trying the configuration, let's dive into what connections this script will install:
     648
     649=== Configuring srv1_co1<==>srv2_lg1 connection on Mininet-Optical using NETCONF ===
    624650
    625651The NETCONF servers for `rdm1-co1` and `rdm1-lg1` are listening on `localhost` at ports 1834 and 1831 as Experiment 1. We are configuring `rdm2-lg1' and 'rdm2-co1` to listen at ports 1832 and 1833 respectively.
     
    687713=== Performing Experiment 2 and Results
    688714
    689 Now you can try installing the above lightpaths for Experiment 2 by yourself. As prompted by the terminal, press `Return` to install the configuration and perform the test. This will establish the connections between ROADMs as described above, which you can also view with the lines printed.
     715Now you can try installing the above lightpaths for Experiment 2 by yourself. Go to terminal-2, and as prompted by the terminal, press `Return` to install the configuration and perform the test. This will establish the connections between ROADMs as described above, which you can also view with the lines printed.
    690716
    691717{{{#!shell-session
     
    694720press return to configure and perform Experiment 2>
    695721...
    696 *** Installing ROADM configuration for srv1-co1<-->srv2-lg1 (NETCONF)
    697 ...
    698 *** srv1-co1 pinging srv1-lg1
     722*** Installing ROADM configuration for srv1_co1<-->srv2_lg1 (NETCONF)
     723...
     724*** srv1_co1 pinging srv1_lg1
    699725PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
    700726From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
     
    707733...
    708734
    709 *** srv1-co1 pinging srv2-lg1
     735*** srv1_co1 pinging srv2_lg1
    710736PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
    71173764 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=1.21 ms
     
    718744}}}
    719745
    720 As before, you can ping the servers manually to verify the connections. You can jump back to that section [#point2 here].
    721 
    722 As expected, srv1-co1 and srv2-lg1 are able to ping each other because we established the ROADM rules for long-hop configuration. Consequently, as opposed to Experiment 1, srv1-co1 and srv1-lg1 are not able to ping each other because no such connection is established yet.
    723 
    724 Note that the average ping time for srv1-co1 to srv2-lg1 is 0.675 ms, and the average ping time for srv1-co1 to srv1-lg1 in Experiment 1 is 0.339 ms. Observe the slightly longer RTT to `srv2-lg1`, reflecting the increased propagation time across two 32km fibers to reach the "Central Cloud" data center.
     746
     747As expected, srv1_co1 and srv2_lg1 are able to ping each other because we established the ROADM rules for long-hop configuration. Consequently, as opposed to Experiment 1, srv1_co1 and srv1_lg1 are not able to ping each other because no such connection is established yet.
     748
     749Note that the average ping time for srv1_co1 to srv2_lg1 is 0.675 ms, and the average ping time for srv1_co1 to srv1_lg1 in Experiment 1 is 0.339 ms. Observe the slightly longer RTT to `srv2_lg1`, reflecting the increased propagation time across two 32km fibers to reach the "Central Cloud" data center.
     750
     751=== Ping Servers Manually ===
     752
     753Like before, you can also ping all the servers manually in the mininet-optical CLI to check the connections with below steps:
     754
     7551. Go back to terminal-1 to the mininet-optical CLI. Here you can ping one server from another to check the connection between them. Let's try to ping srv1_lg1 from srv1_co1 using the command `srv1_co1 ping -c3 srv1_lg1` as shown below:
     756{{{#!shell-session
     757mininet-optical> srv1_co1 ping -c3 srv1_lg1
     758PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
     759From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
     760From 192.168.1.1 icmp_seq=2 Destination Host Unreachable
     761From 192.168.1.1 icmp_seq=3 Destination Host Unreachable
     762
     763--- 192.168.1.2 ping statistics ---
     7643 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2134ms
     765}}}
     7662. You should also try to ping srv2_lg1 from srv1_co1 using the below command:
     767{{{#!shell-session
     768mininet-optical> srv1_co1 ping -c3 srv2_lg1
     769PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
     77064 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.685 ms
     77164 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.424 ms
     77264 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.416 ms
     773
     774--- 192.168.1.3 ping statistics ---
     7753 packets transmitted, 3 received, 0% packet loss, time 2192ms
     776rtt min/avg/max/mdev = 0.416/0.508/0.685/0.124 ms
     777}}}
     778
     779As expected, after installing configuration of Experiment 2, you should not be able to ping srv1_lg1 from srv1_co1. But because the ROADMs are configured for the long-hop connection, you can successfully ping srv2_lg1 from srv1_co1.
    725780
    726781= Shutting down Mininet-Optical =