Skip to content

Commit ef75946

Browse files
Scale 19x openwrt talk slides
1 parent be3b2cc commit ef75946

3 files changed

Lines changed: 304 additions & 0 deletions

File tree

‎openwrt-at-scale/Makefile‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
default: slides.pdf
2+
3+
slides.pdf: slides.tex
4+
rubber --pdf slides.tex
5+
6+
view: slides.pdf
7+
atril slides.pdf

‎openwrt-at-scale/default.nix‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
let
22
pkgs = import <nixpkgs> {};
33

4+
# https://ctan.org/ for what to combine in texlive
45
texlive = pkgs.texlive.combine {
56
inherit (pkgs.texlive)
67
scheme-small
78
beamer
9+
# Theme reqs
810
beamertheme-metropolis
911
pgfopts
12+
multirow
1013
;
1114
};
1215
in {

‎openwrt-at-scale/slides.tex‎

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
\documentclass{beamer}
2+
3+
\usetheme[progressbar=frametitle]{metropolis}
4+
%\setbeamertemplate{frame numbering}[fraction]
5+
\useoutertheme{metropolis}
6+
\useinnertheme{metropolis}
7+
\usefonttheme{metropolis}
8+
\usecolortheme{spruce}
9+
\setbeamercolor{background canvas}{bg=white}
10+
11+
\usepackage{listings}
12+
% storing our images
13+
\usepackage{graphicx}
14+
\graphicspath{{./images/}}
15+
16+
%Information to be included in the title page:
17+
\title{Building SCaLE's OpenWrt Conference WiFi}
18+
\subtitle{Yes...The very network you're connected to right now}
19+
\author{
20+
Robert Hernandez \\
21+
CTO @ Nebulaworks \\
22+
@sarcasticadmin
23+
}
24+
\date{July 2022}
25+
26+
\setbeameroption{hide notes} % Only slides
27+
%\setbeameroption{show only notes} % Only notes
28+
%\setbeameroption{show notes on second screen=right} % Both
29+
30+
%\setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}\usepackage{palatino}
31+
32+
\begin{document}
33+
\metroset{block=fill}
34+
\frame{\titlepage}
35+
36+
\begin{frame}
37+
\frametitle{Tech Team}
38+
%{\large \textbf{SCaLE Tech Team}}
39+
\begin{center}
40+
\includegraphics[scale=.5]{scale-tech}
41+
\end{center}
42+
\note[item]{SCaLE is run by many volunteers and traditionally the scale-network team provides this service}
43+
\note[item]{Our tech team is made up by 10 dedicated team members who have been dedicated to the conference for many years}
44+
\end{frame}
45+
46+
\begin{frame}
47+
\frametitle{Why}
48+
\begin{center}
49+
{\large \textbf{Conference attendees need WiFi} \\[20pt]}
50+
\includegraphics[scale=.5]{wifi-signage}
51+
\end{center}
52+
\note[item]{And countless options to choose from: many propertary and only a few open}
53+
\note[item]{SCaLE is run by many volunteers and traditionally the scale-network team provides this service}
54+
\end{frame}
55+
56+
57+
\begin{frame}
58+
\frametitle{History}
59+
% Alert to highlight each part of the timeline
60+
\begin{itemize}[<alert@+>]
61+
% TODO: What about prior years?
62+
\item Jan 2017 - "Does anyone know how to build OpenWrt?"
63+
\note[item]{During one of my first conference calls on the tech team prior to SCaLE 15x in Jan 2017}
64+
\note[item]{Previous Tech Team was no more and everyone was new for the coming year}
65+
\note[item]{Bare minimum for SCaLE 15x but config was kept}
66+
\onslide<2->{
67+
\item March 2017 - SCaLE 15x
68+
}
69+
\onslide<3->{
70+
\item Sept 2017 - Decision to stick with OpenWrt
71+
}
72+
\onslide<4->{
73+
\item July 2022 - SCaLE 19x
74+
}
75+
\end{itemize}
76+
\note[item]{This led to 5 years of iteration by the entire Tech Team}
77+
\note[item]{Many of the things Ill be covering were built out of necessity and in an effort to provide a reliable network come show time}
78+
\end{frame}
79+
80+
% TODO: Where to put "how" might need to be before history
81+
\begin{frame}
82+
\frametitle{Hardware}
83+
\begin{center}
84+
{\large \textbf{ \textasciitilde 120 consumer "routers"} \\[20pt]}
85+
\small{
86+
\begin{tabular}{| l | l | l | l | l |}
87+
\hline
88+
Model & WiFi Chipsets & 2.4 GHz & 5 GHz & RAM \\ \hline
89+
Netgear 3700v2 & Ath AR9220 + AR9223 & b/g/n & a/n & 64MB \\ \hline
90+
Netgear 3800[CH] & Ath AR9220 + AR9223 & b/g/n & a/n & 64MB \\ \hline
91+
\end{tabular} \\[20pt]
92+
}
93+
\includegraphics[scale=.3]{wndr3700_v2}
94+
\end{center}
95+
\note[item]{Netgear 3700v2 and 3800 series}
96+
\note[item]{We do have support the TPlink C2600 but wireless driver support has been unreliable of the past couple of years}
97+
\end{frame}
98+
99+
\begin{frame}
100+
\frametitle{Repo}
101+
\begin{center}
102+
{\large \textbf{https://github.com/socallinuxexpo/scale-network}}
103+
\end{center}
104+
\note[item]{SCaLE techs single source of truth for all deployments}
105+
\end{frame}
106+
107+
108+
\begin{frame}
109+
\frametitle{Build}
110+
{\large \textbf{SCaLE's OpenWrt image}} \\[20pt]
111+
\begin{block}{16MB max}
112+
Kernel: Linux 5.10.89 2022 mips GNU/Linux \\
113+
Pkgs: Bash, Python, OpenSSH, lldp, tcpdump, rsyslog, apinger, zabbix \\
114+
Files: Openwrt Configs, ssh keys, etc.
115+
\end{block}
116+
Removed: luci, dropbear, dnsmasq, logd \\[20pt]
117+
118+
\note[item]{openwrt is built of snapshots of upstream master for both kernel and packages}
119+
\note[item]{periodically bumped throughout the year}
120+
\note[item]{limited to 16MB on netgears}
121+
\note[item]{unnecessary packages and defaults are stripped out [luci, nat, etc.]}
122+
\note[item]{Bash, Python, OpenSSH, tcpdump, zabbix, rsyslog installed via opkg at image build time}
123+
\note[item]{mixin config files via templating process}
124+
\end{frame}
125+
126+
% TODO: How to convey the image of massflash
127+
\begin{frame}
128+
\frametitle{Flash}
129+
\only<1>{\line(1,0){50}}
130+
\only<2>{\textcolor{red}{Traditional}}
131+
\note[item]{manual setup, paperclip and detection of flash process}
132+
\only<3>{
133+
\begin{center}
134+
\includegraphics[scale=.25]{wifi-hard-reset}
135+
\end{center}
136+
}
137+
\only<4>{\textcolor{orange}{Solo}}
138+
\note[item]{expect script that waits for signals from AP that its in the proper mode}
139+
\only<5>{
140+
\textcolor{green}{Mass}
141+
}
142+
\only<9>{\textcolor{green}{Autoflash}}
143+
\note[item]{Tease this and mention that well discuss this last option later when we discuss testing}
144+
\only<1,2,4,5,9>{OpenWrt Flash}
145+
\only<6>{
146+
\begin{center}
147+
\includegraphics[scale=.25]{massflash-1}
148+
\end{center}
149+
}
150+
\only<7>{
151+
\begin{center}
152+
\includegraphics[scale=.25]{massflash-2}
153+
\end{center}
154+
}
155+
\only<8>{
156+
\begin{center}
157+
\includegraphics[scale=.25]{massflash-3}
158+
\end{center}
159+
}
160+
\note[item]{Requires openwrt and SSH access to the hardware}
161+
\note[item]{Via DHCP lease event then SCP and trigger reflash of hardware}
162+
\note[item]{Reflash fleet of 100 APs in 2 hours}
163+
\note[item]{Limited by switch ports and power strips}
164+
\note[item]{Consistent, prior we often werent sure if image was flashed}
165+
\end{frame}
166+
167+
\begin{frame}
168+
\frametitle{Management}
169+
{\large \textbf{SCaLE's OpenWrt management} \\[20pt]}
170+
\begin{itemize}
171+
\item Custom DHCP options: WiFi Channels and Network Config
172+
\item Re-flash APs for any major system updates
173+
\item SSH
174+
\item Rsyslog and zabbix for observability
175+
\end{itemize}
176+
\note[item]{Leverage custom DHCP options and scripts local to the AP}
177+
\note[item]{Network trunks and bridges are configured to accomediate all SCaLE needs (N buildins, etc.)}
178+
\note[item]{WiFi Channel info, network config provided via DHCP options}
179+
\note[item]{Anything adhoc is dealt with via SSH}
180+
\note[item]{Reflash APs for any major changes to configuration}
181+
\note[item]{mixin config files}
182+
\end{frame}
183+
184+
\begin{frame}[label=foo]
185+
\frametitle{Automated Testing}
186+
\only<1>{
187+
{\large \textbf{Golden Tests}} \\[20pt]
188+
\lstinputlisting[language=bash]{snippets/golden.sh}
189+
}
190+
\only<2-4>{
191+
{\large \textbf{Weekly Image Build}} \\[20pt]
192+
}
193+
\only<3>{
194+
\includegraphics[scale=.1]{build-weekly-2}
195+
}
196+
\only<4>{
197+
\includegraphics[scale=.1]{build-weekly-1}
198+
}
199+
\note[item]{Ensure that existing upstream sources still build correctly}
200+
201+
%\item<1,2>
202+
%\note[item]{Check templated configuration against expected outputs in our CI}
203+
\only<5>{
204+
{\large \textbf{Serverspec}} \\[20pt]
205+
\lstinputlisting[language=ruby]{snippets/serverspec.rb}
206+
}
207+
\only<6>{
208+
{\large \textbf{Autoflash}} \\[20pt]
209+
}
210+
\only<7>{
211+
{\large \textbf{Autoflash}} \\[20pt]
212+
\begin{block}{Configuration}
213+
\small
214+
Hardware: Raspberry Pi 4, Relay, USB Ethernet Adapter, AP Board \\
215+
Software: FreeBSD 13, GitLab runner, magic wormhole, and expect
216+
\end{block}
217+
}
218+
\only<8>{
219+
\includegraphics[scale=.05]{autoflash-1}
220+
}
221+
\only<9>{
222+
\includegraphics[scale=.05]{autoflash-2}
223+
}
224+
\only<10>{
225+
\includegraphics[scale=.05]{autoflash-3}
226+
}
227+
\end{frame}
228+
229+
\begin{frame}
230+
\frametitle{Radio Testing}
231+
\begin{enumerate}
232+
\item iperf
233+
\item Dogfooding
234+
\item Surveying
235+
\note[item]{WiFi driver performance and stability is tested by contributors dogfooding the configuration throghout the year}
236+
\end{enumerate}
237+
\end{frame}
238+
239+
\begin{frame}
240+
\frametitle{Impact}
241+
\begin{itemize}
242+
\item Stable platform for the conference
243+
\item Saves an entire day during show prep
244+
\item Autoflash decreased feedback loops from 20+min to 5 min per test
245+
\item 52 serverspec tests being checked on all images
246+
\item Enables expanding AP hardware to support more than 1 model with limited overhead
247+
\end{itemize}
248+
\note[item]{}
249+
\end{frame}
250+
251+
\begin{frame}
252+
\frametitle{Errata @ 19x}
253+
\begin{itemize}
254+
\item WiFi radios remaining up if initial boot had no connectivity
255+
\item DHCP reservations mismatches and range overlap
256+
\item DNS ACL assumptions for Pasadena Convention Center
257+
\end{itemize}
258+
\note[item]{}
259+
\end{frame}
260+
261+
\begin{frame}
262+
\frametitle{Future}
263+
\begin{itemize}
264+
\item Belkin RT3200: WiFi 6
265+
\item DAWN: https://github.com/berlin-open-wireless-lab/DAWN
266+
\item Automated client WiFi testing in CI
267+
\item Advanced surveying process
268+
\end{itemize}
269+
\note[item]{DAWN works best with networks where AP and devices have 802.11k capabilities for discovering the quality of radio signals, plus 802.11v for requesting devices to move to a different AP.}
270+
\end{frame}
271+
272+
\begin{frame}
273+
\frametitle{Repo}
274+
\begin{center}
275+
{\large \textbf{https://github.com/socallinuxexpo/scale-network}}
276+
\end{center}
277+
\note[item]{SCaLE techs single source of truth for all deployments}
278+
\end{frame}
279+
280+
\begin{frame}
281+
\frametitle{This talk}
282+
\begin{center}
283+
{\large \textbf{https://github.com/sarcasticadmin/talks}}
284+
\end{center}
285+
\end{frame}
286+
287+
\begin{frame}
288+
\frametitle{End}
289+
\begin{center}
290+
{\large \textbf{Thank you}}
291+
\end{center}
292+
\end{frame}
293+
294+
\end{document}

0 commit comments

Comments
 (0)