Spring 2023, Mondays 4:15-6:45 in Crown 105
January 23
What this course is about: Networking "at scale".
TCP Cubic: What exactly is going on here? See Section 21.6, and chapters 19 and 20.
Other TCPs
from iximiuz.com/en/posts/container-networking-is-simple.
Create the namespace, name netns0:
ip netns add netns0
(to delete it later: ip netns delete netns0)
List the namespace:
ip netns
ls /var/run/netns
Enter the namespace:
nsenter --net=/var/run/netns/netns0 bash
Create a virtual ethernet (veth):
ip link add veth0 type veth peer name ceth0
ip link list
This creates a link with two interfaces, veth0 and ceth0. We do this outside netns0. The next step is to move ceth0 into netns0:
ip link set ceth0 netns netns0
Now we can see ceth0 using our shell running in netns0. The next step is to give veth0 and ceth0 IP addresses:
outside netns0:
ip link set veth0 up
ip addr add 172.10.0.1/16 dev veth0
inside netns0:
ip link set ceth0 up
ip addr add 172.10.0.2/16 dev ceth0
Now they can ping one another, or talk to each other via netcat.
If we have multiple namespaces, we either must put them on separate subnets or else connect them via a virtual switch.
Simple example of TCP traffic:
h1---s1---h2Monitoring a TCP connection with netcat
What h1ss.sh does
comp_high_bdp.sh: bottleneck is 80 Mbps (10 MB/s).
Graphs h1_cubic2.svg and h1_reno2.svg: transfers of 3 GB. Reno: 450 sec, Cubic: 375 sec
Reno graph
Cubic graph
Which is better?