## CNP3 Hackathon

This INGINIOUS cours will be used during the SIGCOMM'21 Hackathon

Here are some suggestions for new exercises.

### Open questions

#### Sharing resources

##### Sharing bandwidth
###### Max-min fair allocation

Consider the following network. Let's make a network with three different kinds of links (bw), and three different pairs of hosts. A Tikz figure should be ok. We assume that a flow generates the same throughput in both directions and links have symmetric bandwidth. Link X has 30 Mbps, link Y has 40 Mbps and link Z has 15 Mbps.

• What is the max-min fair allocation of A1-A2?
• What is the max-min fair allocation of B1-B2?
• What is the max-min fair allocation of C1-C2?
##### Network congestion
###### Load obtained with a round-robin scheduler

Consider a router running a round-robin scheduler that can handle up to 7 different flows. All the flows send packets of the same size.

• If there are 7 concurrent flows continuously pushing data, what is the share obtained by the 1st flow?
• If there are 7 concurrent flows continuously pushing data, what is the share obtained by the 5th flow?
• If there are 5 concurrent flows continuously pushing data, what is the share obtained by the 5th flow?
##### Congestion control with a window-based transport protocol
###### Running the AIMD congestion control scheme

Consider a sender running an additive-increase multiplicative-decrease congestion control scheme. The algorithm increases the congestion window by 2 every round-trip-time and uses a multiplicative factor of 0.75 when detecting congestion. The initial congestion window is 15 packets.

• The sender always has data to send. What is its congestion window after 4 round-trip-times?
• Just after 4 round-trip-times, the sender detects congestion. What is the value of the congestion window after this event?

#### Network security

##### Cryptographic primitives
###### Different messages, same checksum

In the course, we mentionned that checksums are not suitable to authenticate messages. To illustrate this, consider the following checksum function.

def checksum(msg):
""" msg is a string """
sum = 0
for c in msg:
sum = (sum + ord(c)) % 256
return sum

• Can you find a message, different from "hello", that provides the same checksum?
##### Key exchange
###### Diffie-Hellman example

Consider a Diffie-Hellman exchange where the modulus is 42 and the base is 7. Alice chooses 21 as her secret integer, and Bob chooses 12 as his secret integer.

• What is the value sent by Alice to Bob?
• What is the value sent by Bob to Alice?
• What is the computed key?

### Packet traces questions

#### The TFTP protocol

There is short question that asks students to read RFC1350 to understand the basics of the TFTP protocol. It would be interesting to complement this exercise with a few packet traces collected from a real TFTP protocol that demonstrate how this protocol supports uploads and downloads and how it handles retransmissions.

#### The DNS protocol

We already have ten exercises that cover the DNS. New packet traces exercises could be developed in two directions:

• packet traces showing DNS over HTTPS or DNS over TLS
• packet traces showing DNS extensions that have not yet been discussed in the ebook

#### HTTP versions 1 and 2

There are a few HTTP traces that are present in this section. The main difficulty with HTTP is that web browsers typically produce huge packet traces that are difficult to analyze only. Still, it could be interesting to provide packet traces collected on real servers so that students can understand the differences in configuration with different popular servers. We could focus on only the index.html file from popular servers and see:

• the version of HTTP that it uses
• the cookies that it sets
• the HTTP extensions that it uses
• ...

It would also be interesting to have small packet traces that demonstrate the utilization of HTTP extensions

#### QUIC and HTTP/3

QUIC is not yet included in the ebook, but this is an extension that is very likely for next year. Small packet traces showing the main features of QUIC and perhaps HTTP/3 would be useful to prepare this new chapter.

#### TCP extensions

We already have several exercises that cover the basics of TCP. It would be useful to have exercises showing TCP extensions like:

• TCP Fast Open
• Multipath TCP

#### IPv4

As the ebook does not explain IPv4 and only focuses on IPv6. Still, many students will be exposed to IPv4 and it would be useful to have packet traces showing:

• IPv4 packets going through a router so that students can see that Ethernet addresses are changed and TTL is decremented
• ARP
• IPv4 fragmentations
• IPv4 ping
• IPv4 traceroute

#### Routing protocols

The open questions on routing protocols currently focus on the basics of the protocols. It could be possible to collect packet traces in ipmininet exercises and ask some questions to the students so that they learn how to analyze RIP, OSPF and BGP packets.

#### Ethernet

We could provide some packet traces showing the utilization of Ethernet extensions such as:

• jumboframes
• VLANs
• quality of service
• Ethernet flow control

#### Spanning tree

It could be useful to collect 802.1d packet traces, e.g. from ipmininet exercises, so that students can observe how the protocol works in reality.

#### Wi-Fi

The ebook is a bit weak in this description of the Wi-Fi protocols. It would be interesting to collect packet traces showing all the Wi-Fi details using the monitor mode. This could also require extending the ebook to provide more details about the protocol.

Connecting two hosts / Reliable transfer
Using sockets for inter-process communication
Building a network
The transport layer / Serving applications
The Domain Name System
The HyperText Transfer Protocol
TLS and SSH
Analyzing packet traces / TCP
IPv6 Networks
Border Gateway Protocol
Local Area Networks: The Spanning Tree Protocol
Liste des exercices
Hackathon