Begin presentation

This commit is contained in:
Théophile Bastian 2020-07-07 19:38:20 +02:00
parent 0aaf10eb1b
commit 8413e2248f
9 changed files with 1937 additions and 0 deletions

2
.gitignore vendored
View File

@ -136,3 +136,5 @@ sympy-plots-for-*.tex/
*.bak
*.sav
*.xdv
*.pdf

31
Makefile Normal file
View File

@ -0,0 +1,31 @@
TARGET=slides.pdf
SVGS=$(wildcard imgs/*.svg)
SVG_PDFTEXS = $(patsubst imgs/%,imgs/pdf_tex/%,$(SVGS:.svg=.pdf_tex))
SVG_PDF = $(patsubst imgs/%,imgs/pdf/%,$(SVGS:.svg=.pdf))
AUTOGEN_SVGS_LIST=mac
AUTOGEN_SVGS=$(addprefix imgs/_autogen/,$(AUTOGEN_SVGS_LIST))
all: $(SVG_PDFTEXS) $(SVG_PDF) $(AUTOGEN_SVGS) $(TARGET)
%.pdf: %.tex
latexmk -pdfxe $<
imgs/_autogen/%: imgs/%.svg
imgs/split_layers.py "$*.svg"
cd "$@" ; inkscape --export-type=pdf *.svg
imgs/pdf_tex/%.pdf_tex: imgs/%.svg
mkdir -p "imgs/pdf_tex"
inkscape "$<" -o "$(@:.pdf_tex=.pdf)" --export-latex 2>/dev/null
sed -i 's#\($(patsubst imgs/pdf_tex/%,%,$(@:.pdf_tex=.pdf))\)#imgs/pdf_tex/\1#g' $@
imgs/pdf/%.pdf: imgs/%.svg
mkdir -p "imgs/pdf"
inkscape "$<" -o "$@" 2>/dev/null
.PHONY: clean
clean:
latexmk -C
rm -rf "imgs/pdf_tex" "imgs/pdf"
rm -rf imgs/_autogen

3
imgs/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
_autogen
pdf
pdf_tex

1140
imgs/mac.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 58 KiB

532
imgs/routing.svg Normal file
View File

@ -0,0 +1,532 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1700"
height="800"
viewBox="0 0 449.79167 211.66666"
version="1.1"
id="svg8"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="routing.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4107"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path4105"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4019"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path4017"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker3949"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path3947"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker3867"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path3865" />
</marker>
<marker
inkscape:collect="always"
inkscape:isstock="true"
style="overflow:visible;"
id="marker3733"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path3731" />
</marker>
<marker
inkscape:collect="always"
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker3661"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path3659"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<marker
inkscape:collect="always"
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow2Mend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mend">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path3184" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow1Mend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3166" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow1Send"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Send">
<path
transform="scale(0.2) rotate(180) translate(6,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3172" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3160" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Lstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="scale(0.8) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3157" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.68631873"
inkscape:cx="1069.9059"
inkscape:cy="435.07968"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-nodes="true"
inkscape:snap-object-midpoints="true"
inkscape:object-nodes="false"
inkscape:window-width="1916"
inkscape:window-height="1041"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="1">
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide4484"
orientation="0,1"
position="155.04456,105.83333" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide4486"
orientation="-1,0"
position="224.89583,159.73242" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
transform="translate(37.035063,-1.1447036e-5)"
id="g2786">
<ellipse
style="fill:#19a0d2;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
id="circle2768"
cx="383.65247"
cy="105.83334"
rx="28.874279"
ry="28.874277" />
<path
style="stroke-width:0.0214238"
d="M 401.4771,109.26116 V 91.436522 q 0,-0.27851 -0.20352,-0.48203 -0.20353,-0.20353 -0.48204,-0.20353 h -34.27812 q -0.27851,0 -0.48204,0.20353 -0.20352,0.20352 -0.20352,0.48203 v 17.824638 q 0,0.27851 0.20352,0.48204 0.20353,0.20353 0.48204,0.20353 h 34.27812 q 0.27851,0 0.48204,-0.20353 0.20352,-0.20353 0.20352,-0.48204 z m 2.74225,-17.824638 v 23.309138 q 0,1.41398 -1.00692,2.4209 -1.00692,1.00692 -2.42089,1.00692 h -11.65456 q 0,0.79268 0.34278,1.66034 0.34278,0.86767 0.68556,1.5211 0.34279,0.65342 0.34279,0.93193 0,0.55702 -0.40706,0.96407 -0.40705,0.40706 -0.96407,0.40706 h -10.969 q -0.55702,0 -0.96407,-0.40706 -0.40705,-0.40705 -0.40705,-0.96407 0,-0.29993 0.34278,-0.94265 0.34278,-0.64271 0.68556,-1.49966 0.34278,-0.85695 0.34278,-1.67106 h -11.65456 q -1.41397,0 -2.42089,-1.00692 -1.00692,-1.00692 -1.00692,-2.4209 V 91.436522 q 0,-1.41397 1.00692,-2.42089 1.00692,-1.00692 2.42089,-1.00692 h 34.27812 q 1.41397,0 2.42089,1.00692 1.00692,1.00692 1.00692,2.42089 z"
id="path885" />
</g>
<g
transform="translate(63.086594,-1.1447036e-5)"
id="g2776">
<ellipse
cy="105.83334"
cx="261.28979"
id="circle2766"
style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459846;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
rx="28.874279"
ry="28.874277" />
<path
style="stroke-width:0.0211211"
d="m 245.06878,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 245.06878,96.371068 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.462272 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814022 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572782 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814022 v 8.110525 h -37.84906 v -8.110525 z"
id="path1519" />
</g>
<g
transform="translate(-46.616813,-1.1447036e-5)"
id="g2772">
<ellipse
style="fill:#52ec46;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
id="path2764"
cx="177.08437"
cy="105.83334"
rx="28.874279"
ry="28.874277" />
<path
id="path2105"
d="m 160.86334,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 160.86334,96.371078 h 21.62804 v -2.7035 h -21.62804 z m 33.11793,9.462262 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814012 q 0,-0.84484 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.5914 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572772 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814002 v 8.11051 h -37.84906 v -8.11051 z"
style="stroke-width:0.0211211" />
</g>
<text
id="text2750"
y="112.19526"
x="83.19696"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="112.19526"
x="83.19696"
id="tspan2748"
sodipodi:role="line"></tspan></text>
<g
transform="translate(-8.6015521,0.00451257)"
id="g4458">
<g
id="g2981"
transform="translate(0,0.40306919)">
<g
transform="translate(0,-0.95189549)"
id="g2975">
<path
d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z"
style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2130" />
<text
xml:space="preserve"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="27.745659"
y="64.363541"
id="text2762"><tspan
sodipodi:role="line"
id="tspan2760"
x="27.745659"
y="64.363541"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Payload</tspan></text>
</g>
</g>
<g
id="g2970"
transform="translate(0,0.01744979)">
<g
transform="translate(-0.19538006)"
id="g2960">
<path
id="rect2107"
style="fill:#51ec46;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 9.0371052,137.70529 V 171.9771 H 74.702864 v -34.27181 z" />
<path
id="path2892"
style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 9.0371052,137.70529 H 74.702864 v -9.82111 H 9.0371052 Z" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="41.532494"
y="152.46408"
id="text2135"><tspan
sodipodi:role="line"
id="tspan2152"
x="41.532494"
y="152.46408"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583">Destination MAC</tspan><tspan
sodipodi:role="line"
x="41.532494"
y="163.48839"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
id="tspan2792">address</tspan></text>
<text
id="text2887"
y="135.97284"
x="27.004965"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
y="135.97284"
x="27.004965"
id="tspan2885"
sodipodi:role="line">LAYER 2</tspan></text>
</g>
<g
id="g3017"
transform="translate(0,0.21477379)">
<path
id="path2919"
style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z" />
<path
id="path2921"
style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z" />
<text
id="text2927"
y="107.89082"
x="41.532494"
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan2925"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="107.89082"
x="41.532494"
sodipodi:role="line">Destination IP</tspan><tspan
id="tspan2992"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="118.91512"
x="41.532494"
sodipodi:role="line">address</tspan></text>
<text
xml:space="preserve"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="27.004967"
y="91.399574"
id="text2931"><tspan
sodipodi:role="line"
id="tspan2929"
x="27.004967"
y="91.399574"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 3</tspan></text>
</g>
</g>
<g
transform="translate(-2.5662515,0.00451256)"
id="g4412">
<g
id="g3051"
transform="translate(188.31359,0.40306919)">
<g
id="g3049"
transform="translate(0,-0.95189549)">
<path
id="path3043"
style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z" />
<text
id="text3047"
y="64.363541"
x="27.745659"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
y="64.363541"
x="27.745659"
id="tspan3045"
sodipodi:role="line">Payload</tspan></text>
</g>
</g>
<g
id="g3128"
transform="translate(18.90123,4.4520398)">
<path
id="path3053"
style="fill:#ffce00;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 178.25409,133.2707 v 34.27181 h 65.66575 V 133.2707 Z" />
<path
id="path3055"
style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 178.25409,133.2707 h 65.66575 v -9.82111 h -65.66575 z" />
<text
id="text3063"
y="148.0295"
x="210.94485"
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="148.0295"
x="210.94485"
id="tspan3059"
sodipodi:role="line">Destination MAC</tspan><tspan
id="tspan3061"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="159.0538"
x="210.94485"
sodipodi:role="line">address</tspan></text>
<text
xml:space="preserve"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
x="196.41733"
y="131.53825"
id="text3067"><tspan
sodipodi:role="line"
id="tspan3065"
x="196.41733"
y="131.53825"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 2</tspan></text>
</g>
<g
id="g3085"
transform="translate(188.31359,0.2147726)">
<path
d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z"
style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3071" />
<path
d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z"
style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3073" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="41.532494"
y="107.89082"
id="text3079"><tspan
sodipodi:role="line"
x="41.532494"
y="107.89082"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
id="tspan3075">Destination IP</tspan><tspan
sodipodi:role="line"
x="41.532494"
y="118.91512"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
id="tspan3077">address</tspan></text>
<text
id="text3083"
y="91.399574"
x="27.004967"
style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
y="91.399574"
x="27.004967"
id="tspan3081"
sodipodi:role="line">LAYER 3</tspan></text>
</g>
</g>
<path
id="path3155"
d="M 70.047217,105.84884 H 95.022118"
style="fill:none;stroke:#000000;stroke-width:1.61403;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
<path
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3661)"
d="m 163.47284,105.84604 h 24.9749"
id="path3657" />
<path
id="path3729"
d="m 264.39612,105.84604 h 24.9749"
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3733)" />
<g
transform="translate(78.259862,64.217427)"
id="g4256">
<path
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 279.12184,41.615905 h 7.13883"
id="path3859" />
<path
id="path3861"
d="m 286.26067,41.615905 h 11.69456"
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.32292, 1.32292;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path3863"
d="m 297.95523,41.628616 h 9.4671"
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4107)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

74
imgs/split_layers.py Executable file
View File

@ -0,0 +1,74 @@
#!/usr/bin/env python3
from xml.etree import ElementTree as ET
import sys
from pathlib import Path
IN_DIR = Path(__file__).parent
OUT_DIR = IN_DIR / "_autogen"
namespaces = {
"svg": "http://www.w3.org/2000/svg",
"inkscape": "http://www.inkscape.org/namespaces/inkscape",
}
splits = {
"mac.svg": {
"_always": ["Base", "Key"],
"0": [],
"1": ["Routing table"],
"2": ["Routing table", "Routing table - select"],
"3": ["Yellow router"],
"4": ["Yellow router", "ARP query"],
"5": ["Yellow router", "ARP query", "ARP answer"],
"6": ["Yellow router", "Outbound packet"],
}
}
def process_svg(svg_splits, path, out_path):
out_path.mkdir(parents=True, exist_ok=True)
always = svg_splits.get("_always", [])
svg = ET.parse(path.as_posix())
for keyframe in svg_splits:
if keyframe.startswith("_"): # special value -- eg `_always`
continue
layers = always + svg_splits[keyframe]
for layer_node in svg.findall(
".//svg:g[@inkscape:groupmode='layer']", namespaces=namespaces
):
layer_node.attrib["style"] = "display:none"
for layer_name in layers:
layer = svg.find(
".//svg:g[@inkscape:groupmode='layer'][@inkscape:label='{}']".format(
layer_name
),
namespaces=namespaces,
)
if not layer:
raise Exception("Layer {} not found".format(layer_name))
layer.attrib["style"] = "display:inline"
keyframe_outpath = out_path / "{}.svg".format(keyframe)
svg.write(keyframe_outpath.as_posix(), encoding="utf-8")
print("Written {}".format(keyframe_outpath.as_posix()))
def main():
processlist = []
if len(sys.argv) < 2:
processlist = splits.keys()
else:
processlist = [sys.argv[1]]
for svg_path in processlist:
process_svg(
splits[svg_path], IN_DIR / svg_path, OUT_DIR / (Path(svg_path).stem)
)
if __name__ == "__main__":
main()

81
slides.tex Normal file
View File

@ -0,0 +1,81 @@
% vim: spell spelllang=en
\documentclass[11pt,xcolor={usenames,dvipsnames},aspectratio=169]{beamer}
\usetheme{metropolis}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{texlib/my_listings}
\usepackage{texlib/todo}
\usepackage{booktabs}
\usepackage[normalem]{ulem}
%\usepackage{inconsolata}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{Announcing IPv4 routes with an IPv6 next-hop in the Babel
routing protocol}
\subtitle{\textit{aka.} draft-bastian-babel-v4ov6}
\author[\slidecountline]
{Théophile Bastian, Juliusz Chroboczek}
\date{}
%\subject{}
%\logo{}
\institute{
\href{https://ens.fr/}{ENS Paris},
\href{https://www.irif.fr/}{IRIF},
\href{https://www.nexedi.com/}{Nexedi}}
\begin{document}
\maketitle{}
\begin{frame}{Traditional routing}
\begin{align*}
\text{Network prefix (IPvX)} &\longrightarrow \text{Next-Hop (IPvX)}
\end{align*}
\pause{}
\begin{table}
\centering
\textbf{IPv4 routing table} \\
\medskip
\begin{tabular}{@{} lcl @{}}
\toprule
Prefix & $\rightarrow$ & Next-Hop \\
\midrule
default & & 10.42.0.254 \\
10.102.0.0/16 & & 10.102.0.1 \\
10.102.10.0/24 & & 10.102.10.1 \\
\only<3>{10.0.0.0/8 & & \sout{fd80:1::1}} \\
\bottomrule
\end{tabular}
\end{table}
\todo{Better strikeout}
\end{frame}
\begin{frame}{The router's job}
\begin{figure}
\centering
\includegraphics[width=\columnwidth]{imgs/pdf/routing.pdf}
\end{figure}
\end{frame}
\begin{frame}{What's under the hull?}
\begin{figure}
\centering
\only<0>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/0.pdf}}
\only<1>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/1.pdf}}
\only<2>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/2.pdf}}
\only<3>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/3.pdf}}
\only<4>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/4.pdf}}
\only<5>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/5.pdf}}
\only<6>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/6.pdf}}
\end{figure}
\end{frame}
\end{document}

63
texlib/my_listings.sty Normal file
View File

@ -0,0 +1,63 @@
\usepackage{listings}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\usepackage{color}
\usepackage{xcolor}
\usepackage{courier}
\definecolor{color_comment}{HTML}{2D6F19}
\definecolor{color_linenum}{HTML}{9E9E9E}
\definecolor{color_strings}{HTML}{D300F3}
\lstset{ %
% backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\footnotesize\ttfamily, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{color_comment}, % comment style
% deletekeywords={...}, % if you want to delete keywords from the given language
% escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=none, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
morekeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{color_linenum}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{color_strings}, % string literal style
tabsize=4, % sets default tabsize to 2 spaces
% title=\lstname, % show the filename of files included with \lstinputlisting; also try caption instead of title
% inputencoding=utf8/latin1 % To accept utf8 encoding
}
\lstset{literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\EUR}}1 {£}{{\pounds}}1 {¬}{{$\lnot$}}1 {∞}{{$\infty$}}1
}
\newcommand{\true}{\lstinline$true$}
\newcommand{\false}{\lstinline$false$}
\newcommand{\lstbash}[1]{\lstinline[language=bash]$#1$}
\newcommand{\lstocaml}[1]{\lstinline[language=Caml]$#1$}
\newcommand{\lstcpp}[1]{\lstinline[language=C++]$#1$}
\newcommand{\lstc}[1]{\lstinline[language=C]$#1$}
\newcommand{\lstpython}[1]{\lstinline[language=python]$#1$}

11
texlib/todo.sty Normal file
View File

@ -0,0 +1,11 @@
\RequirePackage{xcolor}
\definecolor{todobg}{HTML}{FF5F00}
\definecolor{todofg}{HTML}{3700DA}
\definecolor{notebg}{HTML}{87C23C}
\definecolor{notefg}{HTML}{BC3423}
\newcommand{\qtodo}[1]{\colorbox{todobg}{\textcolor{todofg}{#1}}}
\newcommand{\todo}[1]{\qtodo{\textbf{TODO:}\,#1}}
\newcommand{\qnote}[1]{\colorbox{notebg}{\textcolor{notefg}{#1}}}
\newcommand{\tnote}[1]{\qnote{\textbf{NOTE:}\,#1}}