-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
333 lines (326 loc) · 15.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>IPv6</title>
<meta name="description" content="some infos about ipv6">
<meta name="author" content="christoph miessler">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.min.css">
<link rel="stylesheet" href="css/theme/night.css" id="theme">
<!-- For syntax highlighting -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- If the query includes 'print-pdf', include the PDF print sheet -->
<script>
if( window.location.search.match( /print-pdf/gi ) ) {
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'css/print/pdf.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
}
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- Folie 1-->
<section>
<h1>IPv6</h1>
<h3>Eine kleine Einführung in die Welt</h3>
<h3>der langen IP-Adressen</h3>
<p>
<small>Created by <a href="http://om.de">christoph miessler</a> / <a href="http://twitter.com/gantor">@gantor</a></small>
</p>
<aside class="notes">
Nur ein Einstieg in IPv6. Weiter Vorträge werden noch folgen.
</aside>
</section>
<!-- Folie 2-->
<section>
<h3>Was ist IPv6</h3>
<ul>
<li class="fragment">wird von IETF (Internet Engineering Task Force) seit 1995 entwickelt
<li class="fragment">hieß ursprünglich IP Next Generation</li>
<li class="fragment">Beim Design wurden viele Probleme von IPv4 behoben:</li>
<ul>
<li class="fragment">z.B ist kein NAT mehr notwendig und im Design auch nicht mehr erwünscht(Ende zu Ende wieder möglich)</li>
<li class="fragment">Protokolle wie FTP und SIP sind dadurch einfacher zu benutzen</li>
</ul>
<li class="fragment">IPv4 Addressknappheit ist derzeit das Hauptargument für die Umstellung.</li>
</ul>
<aside class="notes">
<li>*Aufzählung*</li>
<li>IPv6 hat mehr zu bieten, als nur einen großen Adressraum. Doch zunächst eine kleine Auffrischung bezüglich IPv4.</li>
</aside>
</section>
<!-- Folie 3-->
<section>
<h4>Ursprüngliche Einteilung des IPv4 Adressraums</h4>
<ul>
<li>Class A: 8 Bit</li>
<li>Class B: 16 Bit</li>
<li>Class C: 24 Bit</li>
</ul>
<aside class="notes">
<li>8 Bit bei Class A stellt die Länge der Netzmaske dar.</li>
<li>Class D: Multicast</li>
<li>Class E: reserved(Experimental)</li>
<li>Das kleinste Netz ist damit Class C mit 256 Hosts. Für die Verteilung eher schlecht. Daher wurde CIDR eingeführt und die Klassen werden heute nicht mehr benutzt.</li>
</aside>
</section>
<!-- Folie 4-->
<section>
<h3>CIDR - Classless Inter-Domain Routing</h3>
<p>IPv4 Adresse : 168.122.34.3/24</p>
<p>168.122.34.3 : 10101000.01111010.00100010.00000011</p>
<p>255.255.255.0: 11111111.11111111.11111111.00000000</p>
<aside class="notes">
<li>Mit CIDR ist auch eine /31 mit 2 Hosts möglich.</li>
<li>Der Netzteil wird ähnlich wie bei Postleitzahlen genutzt. Für den Router ist nur der Netzteil der Adresse interessant, weil er danach die Route bestimmt.</li>
<li>Die ursprüngliche Idee vom einfach Routing durch Strukturierung des Adressraums hat leider nicht funktioniert und die Routingtabellen bei Provider sind trotzdem riesig und unübersichtlich.</li>
<li>Außerdem ist durch die Vergabe von IPv4 Adressen eine große Menge verschwendet worden. Vergabe von /8 an Apple(17.x.x.x), MS, US Mil, etc. Desweiteren sind die Adressen, die auf 0 oder 255 enden auch nicht benutzbar. (Netz/Broadcast)</li>
</aside>
</section>
<!-- Folie 5-->
<section>
<h3>Adressknappheit bei den RIRs</h3>
<p>Das letzte /8 wurde angebrochen. Wer neue IPv4 Adressen haben will, muss auch immer ein IPv6 Netz dazunehmen.
<img src="img/ripepool.png" />
</p>
<aside class="notes">
(Regional Internet Registry)
<li>RIPE (Europe)</li>
<li>ARIN (North America)</li>
<li>APNIC (Asia - Pacific)</li>
<li>LACNIC (Latin America and Caribbean)</li>
<li>AfriNIC (African)</li>
</aside>
</section>
<!-- Folie 6-->
<section>
<h3>IPv4 != IPv6</h3>
<p>
IPv4: 172.20.1.100/16
</p>
<p>
IPv6: 2001:6f8:900:90f6:bc69:ec97:29ab:8c34
</p>
<aside class="notes">
<li>Adressen sind jetzt 128 Bit lang. Damit sind 2 hoch 128 Adressen möglich.</li>
<li>IPv6 bedeutet nicht nur das die Adressen länger werden. Es verändern sich grundlegende Dinge.</li>
<li>Urban Legend: Jedes Atom kann eine IPv6 Adresse haben. > geht nicht, falls man davon aus geht, dass die Erde einen Eisenkern hat. Aber für jedes Sandkorn würde es reichen.</li>
</aside>
</section>
<!-- Folie 7-->
<section>
<h3>IPv6 Header</h3>
<img src="img/ipv6_header.png" />
<aside class="notes">
<li>IPv6 Header (320 Bit) v4:160bit | Version (4 bits) 0110 = 6 | Traffic Class (8bits) = Traffic Art Bestimmung</li>
<li>Flow Label (16 Bits) = auf non-zero setzen, um dem Router zu sagen, dass er die Reihenfolge der Paket nicht verändern soll</li>
<li>Payload Length (16 bits) = Größe des Payloads mit Extension Header</li>
<li>Next Header (8 bits) = Gibt die Art des nächsten Headers an. Wichtig falls Extension Header benutzt werden.</li>
<li>Hop Limit (8 bits) = wird um 1 dekrementiert und bei 0 wirft der Router das Paket weg.</li>
<li>TTL (8Bit) ist auch raus. TTL wurde pro Sekunde runterzählt und von jedem Router um eins dekrementiert. Dafür gibt es jetzt das Hoplimit</li>
<li>Zusatzinfos werden nicht mehr im Eigentlichen Header untergebracht, sondern bei Bedarf als Extension Header hinter dem Fixed Header eingefügt. Falls ein Router den Ext. Header nicht versteht, wird das Paket gedroppt und ein Parameter Problem message (ICMPv6 type 4, code 1) zurückgeschickt.
</li>
<li>Rausgefallen ist die Checksum, weil die jedesmal bei Änderung der TTL vom Router neu erzeugt werden muss und deshalb Performance frist.</li>
<li>Fun Fact: Mit IPv6 kann man ein Jumbogram versenden. Payload fast 4GB. (Muss im Transport Layer implementiert sein)</li>
</aside>
</section>
<!-- Folie 8-->
<section>
<h3>Fragmentation</h3>
<img src="img/mtupd.png" />
<aside class="notes">
<p>Im Gegensatz zu IPv4 werden IPv6 Pakete nicht von Routern fragmentieren. Dafür ist der Client zuständig. MTU Path Discovery ist daher Pficht. ICMPv6 blocken bedeutet daher Totalausfall, weil der Client nicht bestimmen kann auf welche Größe er die Paket zuschneiden muss.</p>
<p>MTU Ethernet 1500. DSL 1492 (8 BIT PPPOE)</p>
</aside>
</section>
<!-- Folie 9-->
<section>
<h3>Adressaufbau</h3>
<img src="img/ipv6_address.png" />
<aside class="notes">
<li>Siteprefix wird vom ISP zugeteilt; in der Regel /56; früher gab es /48.</li>
<li>Subnet ID dient der Aufteilung der eignen Netze</li>
<li>Für die eigentliche Adresse (Interface Identifier) sind immer die letzten 64 Bit reserviert. Diese dürfen nicht für die Struktrierung genutzt werden!</li>
</aside>
</section>
<!-- Folie 10-->
<section>
<h3>Adressvergabe</h3>
<h5>1. Link Local</h5>
<p>Link Local Range: fe80::/10</p>
<p>BSP: fe80::7ed1:c3ff:fe76:59d0%en1</p>
<aside class="notes">
<li>Mit IPv6 hat ein Interface sofort eine IPv6 Adresse. Auch falls kein Kabel angesteckt ist.</li>
<li>vergleichbar mit APIPA-Adressen im Netz 169.254.0.0/16</li>
<li>Link Local != Loopback</li>
<li>Link Local ist bei IPv6 Pflicht!</li>
<li>Link Local gilt nur in Zusammenhang mit einem bestimmten Interface und wird nicht geroutet.</li>
<li>fe80::7ed1:c3ff:fe76:59d0%en1 (%en1 ist das Interface)</li>
<li>Mit IPv6 ist die Unterstützung für mehrere IP-Adressen pro Interface Plficht!</li>
</aside>
</section>
<!-- Folie 11-->
<section>
<h3>Adressvergabe</h3>
<h5>2. Site Local</h5>
<p>Site Local Range: fec0::/10</p>
<p>Seit 2004 decprecated</p>
<aside class="notes">
<li>Site Local war ursprünglich als privater Adressraum für IPv6 gedacht</li>
<li>Die schwammige Definition von Site, hat aber zu Verwirrung geführt, weshalb das Konzept zu Gunsten von ULAs (Unique local adresses) verworfen wurde</li>
</aside>
</section>
<!-- Folie 12-->
<section>
<h3>Adressvergabe</h3>
<h5>3. Unique Local Address</h5>
<p>Unique Local Address Range: fd00::/8</p>
<p>BSP: fd9e:21a7:a92c:2323::1</p>
<p>Konzept entspricht in etwa den privaten IPv4 Adressen</p>
<aside class="notes">
<li>Keine Vergabe durch RIR und Benutzung nur in internen Netzen</li>
<li>keine Garantie der globalen Eindeutigkeit</li>
<li>keine Reverseauflösung unter ip6.arpa möglich, weil die Adressen nicht im globalen DNS delegiert werden</li>
<li>SIXX bietet eine Datenbank in der man ULA registieren kann, um Doppelvergabe zu vermeiden. Wichtig für VPN</li>
</aside>
</section>
<!-- Folie 13-->
<section>
<h3>Adressvergabe</h3>
<h5>4. Loopback</h5>
<p>Loopback: ::1/128</p>
<aside class="notes">
<li>Das Gegenstück zu 127.0.0.1</li>
</aside>
</section>
<!-- Folie 14-->
<section>
<h3>Adressvergabe</h3>
<h5>5. Multicast</h5>
<p>Multicast: ff00::/8</p>
<li>ff01::1, ff02::1: - All Nodes</li>
<li>ff01::2, ff02::2, ff05::2 - All Routers</li>
<aside class="notes">
<li>Sendet Packet an eine bestimmte Gruppe von Hosts im Netz</li>
</aside>
</section>
<!-- Folie 15-->
<section>
<h3>Adressvergabe</h3>
<h5>6. Global Unicast - Öffentliche Adressen</h5>
<p>Global Unicast Range: alles was noch nicht anderweitig reserviert ist</p>
<ul>
<li>0:0:0:0:0:ffff::/96 - IPv4 Mapped Addresses</li>
<li>64:ff9b::/96 - NAT64</li>
<li>2000::/3 ( 2000… bis 3fff… ) bezeichnet den weltweit routbaren Bereich</li>
</ul>
<aside class="notes">
<li>IPv4 Mapped Addresses enthalten in den letzten 32 Bit die IPv4 Adresse und können von einem geeigneten Router konvertiert werden z.b. z.B. ::ff.8.8.8.8</li>
<li>NAT64 übersetzt IPv4 in IPv6</li>
</aside>
</section>
<!-- Folie 16-->
<section>
<h3>Adressvergabe</h3>
<h5>6.1. Global Unicast - Öffentliche Adressen</h5>
<p>2000::/3 unterteilt man in</p>
<ul>
<li>2001::/32 - wird vom Teredo Tunnel benutzt</li>
<li>2002::/16 - 6to4 Tunnel</li>
<li>2003, 240, 260, 261, 262, 280, 2a0, 2b0 und 2c0 können auch vergeben werden, sind aber noch nicht im großen Umfang verteilt</li>
</ul>
<aside class="notes">
<li>Teredo sollte abgeschaltet werden, sobald IPv6 nativ verfügbar ist.</li>
<li>6to4 tunnel IPv6 Packet über IPv4</li>
<li>In der Regel fangen öffentliche Adressen mit 2001 an</li>
</aside>
</section>
<!-- Folie 17-->
<section>
<h3>möglicher Ablauf der Autokonfiguration</h3>
<ol>
<li>Der Client weißt sich selbst eine Link Local Adresse zu (fe80::/10)</li>
<li>Client starte Neighbour Discovery (ND) indem eine Anfrage an die Multicast Adresse ff02::2 (all Routers) gesendet wird (Router Solicitation)</li>
<li>Die angesprochenen Router senden die möglichen Präfixe als Router Advertisment zurück</li>
<li>Der Client hängt an den Präfix seinen Interface Identifier an, den er schon für die Link Local Adresse benutzt hat</li>
</ol>
</section>
<!-- Folie 18-->
<section>
<h3>möglicher Ablauf der Autokonfiguration</h3>
<ol>
<li>Der Client weißt sich selbst eine Link Local Adresse zu (fe80::/10)</li>
<li>Die Router senden in regelmäßigen abständen Router Advertisments</li>
<li>Der Client hängt an den Präfix aus dem RA seinen Interface Identifier an, den er schon für die Link Local Adresse benutzt hat</li>
</ol>
</section>
<!-- Folie 19-->
<section>
<h3>Privacy</h3>
<p>Laut dem ursprünglichen Entwurf der IETF wurde für den Interface Identifier die MAC Adresse des Interfaces benutzt.
</p>
<p>
Die Clients sind dadurch immer identifizierbar, weil sich die MAC Adresse nicht ändert!
</p>
</section>
<!-- Folie 20-->
<section>
<h3>Privacy Extension</h3>
<p>Eine Lösung bieten die sogenanten Privacy Extensions, die vom Betriebsystem implementiert werden müssen. Dabei wird für das Interface immer wieder eine neue temporäre Adresse generiert, die für abgehenden Traffic benutzt wird.
</p>
BSP:
<li>inet6 2001:6f8:900:90f6:7ed1:c3ff:fe76:59d0 prefixlen 64 autoconf</li>
<li>inet6 2001:6f8:900:90f6:51b0:858c:d83:f57a prefixlen 64 autoconf temporary</li>
<aside class="notes">
<li>Eingehend wird immer die normale Adresse benutzt</li>
<li>Ausgehend wird die temp Adresse benutzt.</li>
<li>Es werden regelmäßig neue temp Adressen generiert. Der Wechsel erfolgt sobald die alte temp Adresse nicht mehr verwendet wird</li>
</aside>
</section>
<!-- Folie 21-->
<section>
<h3>Too be continued…</h3>
</section>
<!-- <section>
<h1> <a href="http://www.kame.net/">THE TURTLE IS DANCING!</a></h1>
</section> -->
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.min.js"></script>
<script>
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
// Parallax scrolling
// parallaxBackgroundImage: 'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg',
// parallaxBackgroundSize: '2100px 900px',
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
]
});
</script>
</body>
</html>