replaced freenet6 (not in pkgsrc) with sixxs/aiccu
[ikiwiki.git] / docs / handbook / handbook-network-ipv6.mdwn
1
2
3
4 ## 19.16 IPv6 
5
6
7
8 ***Originally Written by Aaron Kaplan. ******Restructured and Added by Tom Rhodes. ***
9
10
11
12 IPv6 (also know as IPng ***IP next generation***) is the new version of the well known IP protocol (also know as IPv4). Like the other current *BSD systems, DragonFly includes the KAME IPv6 reference implementation. So your DragonFly system comes with all you will need to experiment with IPv6. This section focuses on getting IPv6 configured and running.
13
14
15
16 In the early 1990s, people became aware of the rapidly diminishing address space of IPv4. Given the expansion rate of the Internet there were two major concerns:
17
18
19
20
21 * Running out of addresses. Today this is not so much of a concern anymore since private address spaces (`10.0.0.0/8`, `192.168.0.0/24`, etc.) and Network Address Translation (NAT) are being employed.
22
23
24 * Router table entries were getting too large. This is still a concern today.
25
26
27
28 IPv6 deals with these and many other issues:
29
30
31
32
33 * 128 bit address space. In other words theoretically there are 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses available. This means there are approximately 6.67 * 10^27 IPv6 addresses per square meter on our planet.
34
35
36 * Routers will only store network aggregation addresses in their routing tables thus reducing the average space of a routing table to 8192 entries.
37
38
39
40 There are also lots of other useful features of IPv6 such as:
41
42
43
44
45 * Address autoconfiguration ([RFC2462](http://www.ietf.org/rfc/rfc2462.txt))
46
47
48 * Anycast addresses (***one-out-of many***)
49
50
51 * Mandatory multicast addresses
52
53
54 * IPsec (IP security)
55
56
57 * Simplified header structure
58
59
60 * Mobile IP
61
62
63 * IPv4-to-IPv6 transition mechanisms
64
65
66
67 For more information see:
68
69
70
71
72 * IPv6 overview at [playground.sun.com](http://playground.sun.com/pub/ipng/html/ipng-main.html)
73
74
75 * [KAME.net](http://www.kame.net)
76
77
78 * [6bone.net](http://www.6bone.net)
79
80
81
82 ### 19.16.1 Background on IPv6 Addresses 
83
84
85
86 There are different types of IPv6 addresses: Unicast, Anycast and Multicast.
87
88
89
90 Unicast addresses are the well known addresses. A packet sent to a unicast address arrives exactly at the interface belonging to the address.
91
92
93
94 Anycast addresses are syntactically indistinguishable from unicast addresses but they address a group of interfaces. The packet destined for an anycast address will arrive at the nearest (in router metric) interface. Anycast addresses may only be used by routers.
95
96
97
98 Multicast addresses identify a group of interfaces. A packet destined for a multicast address will arrive at all interfaces belonging to the multicast group.
99
100
101
102  **Note:** The IPv4 broadcast address (usually `xxx.xxx.xxx.255`) is expressed by multicast addresses in IPv6.
103
104
105
106  **Table 19-2. Reserved IPv6 addresses** 
107
108
109
110 [[!table  data="""
111 | IPv6 address | Prefixlength (Bits) | Description | Notes 
112  `::` | 128 bits | unspecified | cf. `0.0.0.0` in IPv4 
113  `::1` | 128 bits | loopback address | cf. `127.0.0.1` in IPv4 
114  `::00:xx:xx:xx:xx` | 96 bits | embedded IPv4 | The lower 32 bits are the IPv4 address. Also called ***IPv4 compatible IPv6 address*** 
115  `::ff:xx:xx:xx:xx` | 96 bits | IPv4 mapped IPv6 address | The lower 32 bits are the IPv4 address. For hosts which do not support IPv6. 
116  `fe80::` - `feb::` | 10 bits | link-local | cf. loopback address in IPv4 
117  `fec0::` - `fef::` | 10 bits | site-local |  
118  `ff::` | 8 bits | multicast |  
119  `001` (base 2) | 3 bits | global unicast | All global unicast addresses are assigned from this pool. The first 3 bits are ***001***. |
120
121 """]]
122
123 ### 19.16.2 Reading IPv6 Addresses 
124
125
126
127 The canonical form is represented as: `x:x:x:x:x:x:x:x`, each ***x*** being a 16 Bit hex value. For example `FEBC:A574:382B:23C1:AA49:4592:4EFE:9982`
128
129
130
131 Often an address will have long substrings of all zeros therefore each such substring can be abbreviated by ***::***. For example `fe80::1` corresponds to the canonical form `fe80:0000:0000:0000:0000:0000:0000:0001`.
132
133
134
135 A third form is to write the last 32 Bit part in the well known (decimal) IPv4 style with dots ***.*** as separators. For example `2002::10.0.0.1` corresponds to the (hexadecimal) canonical representation `2002:0000:0000:0000:0000:0000:0a00:0001` which in turn is equivalent to writing `2002::a00:1`.
136
137
138
139 By now the reader should be able to understand the following:
140
141
142
143     
144
145     # ifconfig
146
147
148
149
150
151     
152
153     rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
154
155              inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
156
157              inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
158
159              ether 00:00:21:03:08:e1
160
161              media: Ethernet autoselect (100baseTX )
162
163              status: active
164
165
166
167
168
169 `fe80::200:21ff:fe03:8e1%rl0` is an auto configured link-local address. It includes the scrambled Ethernet MAC as part of the auto configuration.
170
171
172
173 For further information on the structure of IPv6 addresses see [RFC3513](http://www.ietf.org/rfc/rfc3513.txt).
174
175
176
177 ### 19.16.3 Getting Connected 
178
179
180
181 Currently there are four ways to connect to other IPv6 hosts and networks:
182
183
184
185
186 * Join the experimental 6bone
187
188
189 * Getting an IPv6 network from your upstream provider. Talk to your Internet provider for instructions.
190
191
192 * Tunnel via 6-to-4
193
194
195 * Join [Sixxs](http://www.sixxs.net/), a free tunnel broker and use the [`net/aiccu`](http://pkgsrc.se/net/aiccu) package to set up your connection.
196
197
198
199 Here we will talk on how to connect to the 6bone since it currently seems to be the most popular way.
200
201
202
203 First take a look at the [6bone](http://www.6bone.net/) site and find a 6bone connection nearest to you. Write to the responsible person and with a little bit of luck you will be given instructions on how to set up your connection. Usually this involves setting up a GRE (gif) tunnel.
204
205
206
207 Here is a typical example on setting up a [gif(4)](http://leaf.dragonflybsd.org/cgi/web-man?command#gif&section4) tunnel:
208
209
210
211     
212
213     # ifconfig gif0 create
214
215     # ifconfig gif0
216
217     gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
218
219     # ifconfig gif0 tunnel `***MY_IPv4_ADDR***`  `***HIS_IPv4_ADDR***`
220
221     # ifconfig gif0 inet6 alias `***MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR***`
222
223
224
225
226
227 Replace the capitalized words by the information you received from the upstream 6bone node.
228
229
230
231 This establishes the tunnel. Check if the tunnel is working by [ping6(8)](http://leaf.dragonflybsd.org/cgi/web-man?command#ping6&section8) 'ing `ff02::1%gif0`. You should receive two ping replies.
232
233
234
235  **Note:** In case you are intrigued by the address `ff02:1%gif0`, this is a multicast address. `%gif0` states that the multicast address at network interface `gif0` is to be used. Since we `ping` a multicast address the other endpoint of the tunnel should reply as well.
236
237
238
239 By now setting up a route to your 6bone uplink should be rather straightforward:
240
241
242
243     
244
245     # route add -inet6 default -interface gif0
246
247     # ping6 -n `***MY_UPLINK***`
248
249
250
251
252
253     
254
255     # traceroute6 www.jp.FreeBSD.org
256
257     (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
258
259          1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
260
261          2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
262
263          3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
264
265          4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
266
267          5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
268
269          6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms
270
271
272
273
274
275 This output will differ from machine to machine. By now you should be able to reach the IPv6 site [www.kame.net](http://www.kame.net) and see the dancing tortoise -- that is if you have a IPv6 enabled browser such as [`www/mozilla`](http://pkgsrc.se/www/mozilla).
276
277
278
279 ### 19.16.4 DNS in the IPv6 World 
280
281
282
283 There are two new types of DNS records for IPv6:
284
285
286
287
288 * AAAA records,
289
290
291 * A6 records
292
293
294
295 Using AAAA records is straightforward. Assign your hostname to the new IPv6 address you just got by adding:
296
297
298
299     
300
301     MYHOSTNAME           AAAA    MYIPv6ADDR
302
303
304
305
306
307 To your primary zone DNS file. In case you do not serve your own DNS zones ask your DNS provider. Current versions of  **bind**  (version 8.3 and 9) support AAAA records.
308
309
310
311
312
313
314
315 CategoryHandbook
316
317 CategoryHandbook-advancednetworking
318