Presentation 12: Message Routing

Internet works this way - computer networks are connected with each other via routers. Have kids sit at several tables, every child being a server. Have representatives for each tables to act as routers. Kids write messages to each other and routers help routing this messages


You will need a white board and sticky notes (5-10 per person)


Overview of the internet

Today we are going to talk about Internet and try to play a very interesting game where we would be Internet.

What is internet?

Have kids suggest answers

Internet is a network computers connected with each other. Internet looks like this:

Draw a picture or show the picture from Wikipedia article about Internet:

The computers send messages to each other via such network. But before we get into how the messages get delivered, let me ask you a question: let's say there is a boy Roger Smith in this school and you need to pass a message to him. How do you do that?

Have kids suggest.

In order to find Roger Smith, you need to know what class he is in! Then, once you deliver the message to his class, the teacher will pass it to him. 
Same thing happens with computers: in order for a message to be delivered to a specific computer it needs to know what computer network it belongs to. And the computers who are in charge of computer networks are called routers. They are like teachers who get a message for somebody in a class and delivers it to that person.

Draw a simple diagram on a white board explaining the concept. Walk through message going out of one computer C1, passing through the router R1, getting to the destination router R2 and getting to the destination computer C2.

Tables as networks

We are going to simulate computer network now. 

Have kids sit in groups / tables. Draw a schematic representation of the group, accounting for each group and drawing interconnections between routers. (the picture above shows 2 groups, 8 people - 3 computer and 1 router in each group)


Every table is a computer network. The networks are connected to each other through routers. 

Choose kids closest to the other groups - they will be routers. Give each table a number, have routers have a map of numbered tables in front of them, circling their own, so that they know where to pass messages.

IP addresses

The other kids will be computers.

Every computer has a unique number, identifying it. It's like names for people. For computer the identification is actually two numbers: first number is the table number, the second number is the unique number of a computer inside the network.

Have routers give each kid a unique number 1..N . Have kids write their unique number on a separate sheet of paper. For example, table 3, computer 2 will be 3.2 (this is equivalent to IP addresses)

Passing a message

Now, let's try to pass a message from one computer to another

Pick a random kid and have her write a message on a sticky note with the destination, e.g. "to: 4.1. Hello!"
Walk through the process of the message getting to the destination through the routers.

Now, let's say the destination computer wants to send a reply "Hi!" But there is a problem -There is no return address in the message!
Therefore, the message needs to contain "to" and "from" fields, where from is your own number.

Once the destination computer gets the message, it can replace "to" to "from", and "from" to "to", write a reply and give it back to the router.

This idea caused a lot of confusion with kids - they would forget to switch to and from, and as a result the router would give the message back to them.
Here are a couple of alternatives to try:

1. Use arrows instead of to and from, and have kids change the direction of the arrow:
e.g. 3.2->1.2  Hello . Upon receiving the message it becomes 3.2 <- 1.2. This may be confusing as well

2. Have kids write a completely new sticky note with a reply. The may prepare the sticky notes with the "from" field, writing their unique number there. The problem with this approach is that the initial sender may not know how the reply is related to the initial note (it would be nice to get the note attached)

3. Have kids write on the other side of the sticky note and cross the original, so that the router doesn't get confused.

Test and production

In developing software, we first test it on one or two things, and then have the whole world use it. Same here - first we tested sending just one message and we noticed the problem with the return address. Now let's test it this way : each table sends just one message to another table. You can pick any random table and random computer number as a destination.

Assign a volunteer from each table and have them write a message to a random computer. See if the messages are received and then returned to the sender.

Now, we are ready for the real thing! Here is the game: we need to find out which computers correspond to which kids.

Everybody will get sticky notes. On this note you write three things:

from: <your number>
to: <any table. any number>

When you get a note you cross the word "from", replace it to "to", cross "to" replace it to "from"
Then you write your name on the note and return it to the router.

Once you get your initial note back with the name of the person written on it, you are done! Mission accomplished.

If you want you can write more notes, not just one.

Note, in the process of doing all these the messages may be lost. This is expected - not all messages get to their destination and back to the recipient, so don't get upset about it.

Have kids play the game, oversee the process, help where needed

Great job! Let's count how many people sent a note and got a reply back!
Now, let's see what worked and what didn't. Routers, what was your experience? What was the hardest thing to do?

You can see where the bottlenecks are:
to-from confusion, router overload, round trip
Then you can try to optimize. For example, to avoid round trip one can write their name on the note instead of asking a name of the other computer.
There may be even more advanced games developed - for example - making friends - kids need to create as many "friendships" as possible - friends are two computers who know each other numbers and names. The straight forward and very inefficient way is this:
1. ask a name
2. get a reply
3. send name back

But it can be optimized:

1. give a name
2. get a name

Another alternative: instead of a name have kids come up with a question and get an answer for it from another computer.