CNP3 Hackathon

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

Here are some suggestions for new exercises.

Open questions

Building a network

Computing forwarding tables
Virtual circuit organization
Routing in virtual circuit networks


Transport layer

The connection-oriented service
The message-mode and the stream-mode

Done! See

Connection establishment
Data transfer
Guessing sequence numbers of data packets


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


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.


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.


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.