[[PageOutline]]
'''[wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy#ATutorialonSystematicExperimentalDesign A Tutorial on Systematic Experimental Design]'''
'''[wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftwareQuagga Step I: Single Node]'''
'''[wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy/SmallTopoQuagga Step II: Small Topology]'''
{{{
#!html
}}}
= 5. End-to-End Validation =
We first validate end-to-end communication between `client` and server by running `ping` and `traceroute` at the `client`, and then run `iperf` on both `client` and `server`.
Open two terminals, and login to `client` and `server`, respectively.
== a. End-to-End `traceroute` and `ping` ==
* Run `ping` from `client` (192.168.10.11) to `server` (192.168.20.10).
{{{
pjayant@client:~$ ping 192.168.20.10
PING 192.168.20.10 (192.168.20.10) 56(84) bytes of data.
64 bytes from 192.168.20.10: icmp_seq=1 ttl=61 time=3.12 ms
64 bytes from 192.168.20.10: icmp_seq=2 ttl=61 time=2.42 ms
64 bytes from 192.168.20.10: icmp_seq=3 ttl=61 time=2.37 ms
^C
--- 192.168.20.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.375/2.641/3.123/0.341 ms
}}}
* Run `traceroute` from `client` (192.168.10.11) to `server` (192.168.20.10).
{{{
pjayant@client:~$ traceroute 192.168.20.10
traceroute to 192.168.20.10 (192.168.20.10), 30 hops max, 60 byte packets
1 router-1-link-5 (192.168.10.10) 0.458 ms 0.528 ms 0.494 ms
2 router-2-link-0 (192.168.1.2) 0.961 ms 0.867 ms 1.020 ms
3 router-3-link-2 (192.168.3.1) 1.497 ms 1.461 ms 1.422 ms
4 Server-link-6 (192.168.20.10) 1.808 ms 1.661 ms 1.699 ms
}}}
== b. `iperf` Test ==
* `iperf` End-to-End TCP test
Server Side:
{{{
pjayant@server:~$ iperf -s -t 10 -i 1
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.20.10 port 5001 connected with 192.168.10.11 port 53744
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 11.5 MBytes 96.7 Mbits/sec
[ 4] 1.0- 2.0 sec 11.6 MBytes 97.4 Mbits/sec
[ 4] 2.0- 3.0 sec 11.8 MBytes 99.2 Mbits/sec
[ 4] 3.0- 4.0 sec 11.8 MBytes 98.7 Mbits/sec
[ 4] 4.0- 5.0 sec 11.8 MBytes 99.3 Mbits/sec
[ 4] 5.0- 6.0 sec 11.6 MBytes 97.7 Mbits/sec
[ 4] 6.0- 7.0 sec 11.8 MBytes 98.7 Mbits/sec
[ 4] 7.0- 8.0 sec 11.7 MBytes 97.8 Mbits/sec
[ 4] 8.0- 9.0 sec 11.8 MBytes 99.2 Mbits/sec
[ 4] 9.0-10.0 sec 11.8 MBytes 99.4 Mbits/sec
[ 4] 0.0-10.2 sec 119 MBytes 98.4 Mbits/sec
}}}
Client Side:
{{{
pjayant@client:~$ iperf -c 192.168.20.10 -t 10 -i 1
------------------------------------------------------------
Client connecting to 192.168.20.10, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.10.11 port 53744 connected with 192.168.20.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 12.0 MBytes 101 Mbits/sec
[ 3] 1.0- 2.0 sec 11.8 MBytes 98.6 Mbits/sec
[ 3] 2.0- 3.0 sec 11.8 MBytes 98.6 Mbits/sec
[ 3] 3.0- 4.0 sec 12.0 MBytes 101 Mbits/sec
[ 3] 4.0- 5.0 sec 11.8 MBytes 98.6 Mbits/sec
[ 3] 5.0- 6.0 sec 11.8 MBytes 98.6 Mbits/sec
[ 3] 6.0- 7.0 sec 12.0 MBytes 101 Mbits/sec
[ 3] 7.0- 8.0 sec 11.5 MBytes 96.5 Mbits/sec
[ 3] 8.0- 9.0 sec 12.4 MBytes 104 Mbits/sec
[ 3] 9.0-10.0 sec 12.1 MBytes 102 Mbits/sec
[ 3] 0.0-10.0 sec 119 MBytes 99.8 Mbits/sec
}}}
* `iperf` End-to-End UDP Test, where the bandwidth is set as 1Mbps by default.
Server (192.168.20.10) Side:
{{{
pjayant@server:~$ iperf -s -t 10 -i 1 -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.20.10 port 5001 connected with 192.168.10.11 port 54422
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 128 KBytes 1.05 Mbits/sec 0.062 ms 0/ 89 (0%)
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.047 ms 0/ 89 (0%)
[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.046 ms 0/ 89 (0%)
[ 3] 3.0- 4.0 sec 128 KBytes 1.05 Mbits/sec 0.043 ms 0/ 89 (0%)
[ 3] 4.0- 5.0 sec 128 KBytes 1.05 Mbits/sec 0.041 ms 0/ 89 (0%)
[ 3] 5.0- 6.0 sec 128 KBytes 1.05 Mbits/sec 0.054 ms 0/ 89 (0%)
[ 3] 6.0- 7.0 sec 128 KBytes 1.05 Mbits/sec 0.061 ms 0/ 89 (0%)
[ 3] 7.0- 8.0 sec 184 KBytes 1.51 Mbits/sec 0.413 ms 12/ 140 (8.6%)
[ 3] 8.0- 9.0 sec 128 KBytes 1.05 Mbits/sec 0.053 ms 0/ 89 (0%)
[ 3] 0.0- 9.5 sec 1.24 MBytes 1.10 Mbits/sec 0.049 ms 12/ 893 (1.3%)
}}}
Client (192.168.10.11) Side:
{{{
pjayant@client:~$ iperf -c 192.168.20.10 -t 10 -i 1 -u
------------------------------------------------------------
Client connecting to 192.168.20.10, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.10.11 port 54422 connected with 192.168.20.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 3.0- 4.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 4.0- 5.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 5.0- 6.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 6.0- 7.0 sec 129 KBytes 1.06 Mbits/sec
[ 3] 7.0- 8.0 sec 74.6 KBytes 612 Kbits/sec
[ 3] 8.0- 9.0 sec 181 KBytes 1.48 Mbits/sec
[ 3] 9.0-10.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0- 9.5 sec 1.24 MBytes 1.10 Mbits/sec 0.048 ms 12/ 893 (1.3%)
}}}
The `ping` and `iperf` results showed that the communication between the `client` and the `server` were good. Since the `client` and the server are not directly connected, they can communicate with each other means that the `OSPF` routing worked properly.
The `traceroute` showed the hops from the `client` to the `server`, where the intermediate hops are `router-1`, `router-2` and `router-3`. This information also verified the routing path between the `client` and the `server`.
= 6. Tracking Routing Table Updates =
From the `traceroute` result above, we know that from `client` to `server`, the path is `client` --> `router-1` --> `router-2` --> `router-3` --> `server`
Now let's try some failure events and see how many updates occurs at a particular router, and we select `Client` to view the updates, and trigger the failures at `router-2`.
* Bring down the interface at router-2
We can make the link between `router-1` and `router-2` fail by bringing down the corresponding interface on `router-2`. We disable the virtual interface at `router-2`, which is associated with the virtual link (`192.168.1.0/24`) to `router-1`.
Use `show ip ospf interface` to find the name of that interface.
{{{
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config-router)# do show ip ospf interface
eth0 is up
ifindex 2, MTU 1500 bytes, BW 0 Kbit
OSPF not enabled on this interface
eth1 is up
ifindex 3, MTU 1500 bytes, BW 0 Kbit
Internet Address 192.168.1.2/24, Broadcast 192.168.1.255, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 192.168.5.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State Backup, Priority 1
Designated Router (ID) 192.168.10.10, Interface Address 192.168.1.1
Backup Designated Router (ID) 192.168.5.1, Interface Address 192.168.1.2
Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
Hello due in 5.658s
Neighbor Count is 1, Adjacent neighbor count is 1
eth2 is up
ifindex 4, MTU 1500 bytes, BW 0 Kbit
Internet Address 192.168.2.1/24, Broadcast 192.168.2.255, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 192.168.5.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 192.168.5.1, Interface Address 192.168.2.1
Backup Designated Router (ID) 192.168.20.11, Interface Address 192.168.2.2
Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
Hello due in 0.410s
Neighbor Count is 1, Adjacent neighbor count is 1
eth3 is up
ifindex 5, MTU 1500 bytes, BW 0 Kbit
Internet Address 192.168.5.1/24, Broadcast 192.168.5.255, Area 0.0.0.0
MTU mismatch detection:enabled
Router ID 192.168.5.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 192.168.5.1, Interface Address 192.168.5.1
Backup Designated Router (ID) 192.168.5.2, Interface Address 192.168.5.2
Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
Hello due in 4.842s
Neighbor Count is 1, Adjacent neighbor count is 1
lo is up
ifindex 1, MTU 65536 bytes, BW 0 Kbit
OSPF not enabled on this interface
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config-router)#
}}}
For example, in the above the appropriate interface is `eth1`. So the command to bring down the interface to `router-1` is:
{{{
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config-router)# int eth1
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config-if)# shutdown
}}}
At this time, we can run `traceroute` from `client` to `server` again, and we see that the path is changed: `client` --> router-1 --> router-4 --> router-3 --> `server`.
{{{
root@client:~# traceroute 192.168.20.10
traceroute to 192.168.20.10 (192.168.20.10), 30 hops max, 60 byte packets
1 router-1-link-5 (192.168.10.10) 0.525 ms 0.492 ms 0.511 ms
2 router-4-link-3 (192.168.4.1) 0.679 ms 0.669 ms 0.719 ms
3 router-3-link-2 (192.168.3.1) 1.123 ms 1.124 ms 1.034 ms
4 Server-link-6 (192.168.20.10) 1.298 ms 1.346 ms 1.380 ms
}}}
When we bring up `eth2` at `router-2` again, we notice another routing table update at `router-1` immediately. The command to bring the interface back up is:
{{{
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config)# int eth1
router-2.quagga.ch-geni-net.instageni.rnoc.gatech.edu(config-if)# no shutdown
}}}
* Run `traceroute` from `client` (192.168.10.11) to `server` (192.168.20.10).
{{{
pjayant@client:~$ traceroute 192.168.20.10
traceroute to 192.168.20.10 (192.168.20.10), 30 hops max, 60 byte packets
1 router-1-link-5 (192.168.10.10) 0.458 ms 0.528 ms 0.494 ms
2 router-2-link-0 (192.168.1.2) 0.961 ms 0.867 ms 1.020 ms
3 router-3-link-2 (192.168.3.1) 1.497 ms 1.461 ms 1.422 ms
4 Server-link-6 (192.168.20.10) 1.808 ms 1.661 ms 1.699 ms
}}}
In this way, we can see routing table updates over time.
'''Previous: [wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy/SmallTopoQuagga/DesignSetup Small Topology: Design Step-by-Step Instructions]'''
'''Next: [wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy/SmallTopoQuagga/Finish Small Topology: Finish]'''