Enterprise Networking Week 1

Spring 2023, Mondays 4:15-6:45 in Crown 105

January 23

Exams, ground rules

What this course is about: Networking "at scale".

The high-bandwidth TCP problem

TCP Cubic: What exactly is going on here?  See Section 21.6, and chapters 19 and 20.

Other TCPs

Linux networking features

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 dev veth0

   inside   netns0:
        ip link set ceth0 up
        ip addr add 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:


Monitoring pings

Monitoring a TCP connection with netcat

Reno/Cubic example (one at a time)

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 sawtooth

Reno graph

cubic graph

Cubic graph

Which is better?