Skip to content

Commit

Permalink
Add section about network stewards
Browse files Browse the repository at this point in the history
  • Loading branch information
benhylau committed Dec 22, 2019
1 parent 584b96f commit 1369673
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 1,095 deletions.
1,087 changes: 0 additions & 1,087 deletions docs/3.0-social-experience.html

This file was deleted.

65 changes: 60 additions & 5 deletions docs/3.2-network-stewards.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,65 @@ navigation: 32

## 3.2 Network Stewards

- Spreading network knowledge
- Planning workshops
- Call: https://github.com/dweb-camp-2019/meshnet/issues/21
The idea of forming a community of Network Stewards was conceived early on in the project in order to achieve the capacity we need to build, maintain, and teach the mesh network during Camp.

![thumbnail](thumbs/network-steward-postcard-front.png)
![thumbnail](thumbs/network-steward-postcard-back.png)

The first public announcement was made on June 14 via [GitHub](https://github.com/dweb-camp-2019/meshnet/issues/21), but by that time Benedict already had a group of about 10 volunteers who either had helped in the planning phases or indicated during registration that they would like to be a network volunteer. A few of the volunteers had a technical background in networking; most others had experience in building applications, facilitating workshops, and community organizing, but with little prior experience deploying physical networks.

### Build

The build of the network at Camp started in July, with Benedict and Margaret spending July 1-4 at the venue to run some cables and install the first nodes.

![network-model](images/network-model.jpg)
![radio-testing](images/radio-testing.jpg)
![planning-workshops](images/planning-workshops.jpg)

Since Margaret was the first person to learn how to set up a full node, which up until this point had been designed by Benedict and his remote peers, these couple of days at Camp also inspired how tasks can be shared by a team. This marked the beginning of the collaborative processes that would take place among Network Stewards leading up to and throughout Camp.

It was not until the second trip, when Benedict, Seth, lluna, and Robert spent July 7-10 at Camp that the core network nodes were installed. With the experience of partitioning tasks from the previous trip, this second trip was a highly productive time that started with planning on a map, then each of the four Network Stewards put together their custom node for the location they chose on the map.

![node-building](images/node-building.jpg)

Putting together this first node together based on documentation, and struggling through technical hurdles together, made everyone generally familiar with all aspects of the system and knew who became the experts of specific domains. For example, everyone learned the available radios and how to test link bandwidth, but lluna became most familiar with preparing the ESPRESSObin routers (preparing SD cards for the different node configurations, [rescuing a dead board](https://github.com/dweb-camp-2019/projects/issues/36) with serial console, and keeping inventory of the different boards going around.

![node](images/node.jpg)

In a few short days, this early group of Network Stewards developed the team chemistry to parallelize tasks and the capacity to operate independently to screen and tackle network problems. We installed five of the six nodes during this period, leaving only `18 Camp Lions Mane` offline. Ben E. and Mai also popped by one of the days to wire up the indoor space of `8 Mesh Hall`, the main hacking and demo area with high speed wired networking for servers and other devices.

When the public Build Days, July 15-17, came along, much of the core network was already in place. The deployment work continued with the help of new Network Stewards, such as Luandro, Merlin, and Riley, who arrived to California just days before. Camp Lions Mane was quickly brought online and the Internet backhaul that just became available days ahead of Camp was plugged into the `10.5.0.1` mesh node at `5 Tea Lounge`.

Tasks at hand for the Network Stewards also diversified. Kyle, Alex, and Riley started configuring the central directory, `10.8.8.8`, which hosted [ip-dir](https://github.com/dweb-camp-2019/ip-dir) and [media uploader](https://github.com/darkrilin/dwebcamp-media-uploader). Meanwhile lluna, Jenny, Marcela, Taeyoon, Hiure, Lunadro, and Benedict started discussing activities on the mesh and how to on-board new Network Stewards. Most of these collaborations lasted beyond the Build Days and continued throughout Camp, adapting to the changing needs.

![planning-workshops](images/planning-workshops.jpg)

### Maintain

After the Build Days, the community of Network Stewards has grown to more than ten people, and about half of us took up specific domains of the many parallel initiatives. For example, we knew Seth, Luandro, and Ben E. were on top of keeping the overall network healthy, while a working group consisting of lluna, Jenny, Marcela, and Taeyoon independently built a network model for teaching the network.

![network-model](images/network-model.jpg)

Kyle, Alex, and Riley helped application builders deploy their software and Raspberry Pis on the local network, keeping a collaborative IP address directory on `10.8.8.8`. The landing page of that Raspberry Pi evolved over time based on feedback of Camp participants. It was once a static page linking to various resources, and at some point it became a collaborative edit pad.

![local-services](images/local-services.jpg)

There were a couple interesting network incidences, some of them documented in [Section 3.3](3.3-incident-response.html).

### Teach

The Network Steward community was critical to our goal of a participatory network. We have taken steps to make the network infrastructure highly visible and communicated its development progress leading up to Camp, but many people arriving to Camp would come unaware of this experimental mesh network since event networks are generally provided as an opaque service managed by a closed group of network administrators. We would need many people with enough familiarity with the network to explain what it is, its design and function, the ways that one can tinker with it, and its relation to the culture of community networking.

![network-teaching](images/network-teaching.jpg)

Organizing tours of the physical network infrastructure allowed for a visualization, and having the network model aided the mental mapping of a single mesh link to the overall network topology. We also developed small cues such as linking IP addresses with the physical building numbers and the exercise of listing one's IP address on a phone or laptop, to relate one's digital experience to the physical infrastructure. We employed various network diagnostic programs that anyone can run on their phone or laptop, to help understand concepts such as _bandwidth_ and _routing_ when discussed independently from the Internet.

![network-commands](images/network-commands.jpg)

These were printed on a sheet for Network Stewards as reference, and anyone who took a tour was invited to become a Network Steward themselves and wear a pin to indicate to others that they could help explain the Camp network. This is a mechanism that would hopefully scale the Network Steward community nicely with the size of the event. You can find the graphic assets we used in [Section 5.3](5.3-graphic-assets.html).

In addition to running tours throughout the event, we also designed specific activities for those excited to dive deep into setting up their own mesh network.

![mesh-activities](images/mesh-activities.jpg)

Network Stewards facilitated the _Mesh Playground_ activity, where we explained components that make up a DWeb Camp 2019 node, constructed one together, and connected this new node to extend the Camp network as the seventh node. Then the group played around with network diagnostics and ethernet cable crimping competitions. A parallel initiative, the _Geek Free Meshnet_ led by Nico, Hiure, Luandro, and other community leaders of [APC](https://www.apc.org) demonstrated how to quickly set up a mesh network with the [LibreRouter](https://librerouter.org), informed by many years of rural networking experience and designed for plug-and-play deployment that requires no technical expertise.

The Network Stewards program and is perhaps the most important part of the participatory network. The network lasted only the couple days of Camp, but the shared experience around network building built trust and technical capacities among peers. Our learning from this program will be discussed in the [retrospective](3.5-retrospective.html) along with reflections about other parts of the social experience.
4 changes: 2 additions & 2 deletions docs/3.3-incident-response.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Early debug confirmed that the radios were communicating at full speed, but even

Upon arriving at Camp, one group of Network Stewards went off to install our hacked fans onto nodes that were running under direct sunlight. This unfortunately did not fix the problem. Ben E from People's Open made it his personal mission to find out what was going on, and eventually narrowed it down to a poorly crimped ethernet cable. Of course :)

We have unfortunately ruled out faulty ethernet cables because every cable have passed the ethernet tester, and we have swapped different cables during early debug. In the end, this critical link between `2 Camp Enoki` and `11 Medical`, which we relied on to connect upper camp to the central areas, was returned to full gigabit speed.
We have unfortunately ruled out the possibility of a faulty ethernet cable before because every cable had been checked with the ethernet tester, and we have swapped different cables for this node during early debug. In the end, this critical link between `2 Camp Enoki` and `11 Medical`, which we relied on to connect upper camp to the central areas, was returned to full gigabit speed.

### Rogue DHCP Server

Expand All @@ -50,7 +50,7 @@ We tried to blacklist the MAC from the MikroTik radios, meanwhile leaving a mess

It turned out there was a Raspberry Pi that had a Mozilla IoT WebThings Gateway image installed, and was passed off to Why for reconfiguring to connect to the wireless network, without realizing it was running a DHCP server 😭

Upon investigating, this IoT gateway not only had a DHCP server running on the ethernet interface, but it was running with _dhcp-authoritative_ mode, which effectively overrides existing DHCP leases for clients! The device also disabled SSH and had no web UI, making it look especially like an intentionally malicious node 😅 We eventually discussed this interesting incident with Mozilla IoT and you can see the thread [here](https://github.com/mozilla-iot/gateway/issues/2038).
Upon investigating, this IoT gateway not only had a DHCP server running on the wireless interface, but it was running with _dhcp-authoritative_ mode, which effectively overrides existing DHCP leases for clients! The device also disabled SSH on all interfaces and had no web UI, making it look especially like an intentionally malicious node 😅 We eventually discussed this interesting incident with Mozilla IoT and you can see the thread [here](https://github.com/mozilla-iot/gateway/issues/2038).

The takeaway is, we are glad we ran a routed network rather than a switch network, because otherwise this Raspberry Pi would have affected the entire network, not just the ones connected to the `10.8.0.1` node at Mesh Hall. We also need to figure out how to ban devices for the future.

Expand Down
2 changes: 1 addition & 1 deletion docs/3.4-local-services.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The builders of DWeb Camp 2019 brought a number of local services to the network

[ip-dir](https://github.com/dweb-camp-2019/ip-dir) is a simple web app that allows builders to add an IP address, name, and description to a list. Everyone attending Camp, no matter which mesh node they are connected to, may navigate to `10.8.8.8` to view this list, and click one of IP addresses to access the service.

Kyle put up a full Geocities archive on [IPFS](https://ipfs.io) and Brian made available a giant repository of research papers on [fatcat!](https://fatcat.wiki) Mark, who tested his [GUN](https://github.com/amark/gun) app at the Internet Archive hackathon, installed Raspberry Pi bootstrap nodes at a couple mesh nodes to let people do [scheduling in real-time](https://github.com/dweb-camp-2019/projects/issues/2). Matthew brought a Raspberry Pi hosting a local [Matrix](https://matrix.org) homeserver.
Kyle put up a full Geocities archive on [IPFS](https://ipfs.io) and Bryan made available a giant repository of research papers on [fatcat!](https://fatcat.wiki) Mark, who tested his [GUN](https://github.com/amark/gun) app at the Internet Archive hackathon, installed Raspberry Pi bootstrap nodes at a couple mesh nodes to let people do [scheduling in real-time](https://github.com/dweb-camp-2019/projects/issues/2). Matthew brought a Raspberry Pi hosting a local [Matrix](https://matrix.org) homeserver.

![matrix](images/matrix.jpg)

Expand Down
Binary file added docs/images/network-commands.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/network-teaching.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/node-building.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/node.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 1369673

Please sign in to comment.