|
IPv6 addressing architecture
|
|
|
The experience of IPv4 revealed that the scalability of a network layer protocol heavily depends on its addressing architecture. The designers of IPv6 spent a lot of effort defining its addressing architecture :rfc:`3513`. All IPv6 addresses are 128 bits wide. This implies that there are :math:`340,282,366,920,938,463,463,374,607,431,768,211,456 (3.4 \times 10^{38})` different IPv6 addresses. As the surface of the Earth is about 510,072,000 :math:`km^2`, this implies that there are about :math:`6.67 \times 10^{23}` IPv6 addresses per square meter on Earth. Compared to IPv4, which offers only 8 addresses per square kilometer, this is a significant improvement on paper.
|
|
|
Textual representation of IPv6 addresses
|
|
|
It is sometimes necessary to write IPv6 addresses in text format, e.g. when manually configuring addresses or for documentation purposes. The preferred format for writing IPv6 addresses is ``x:x:x:x:x:x:x:x``, where the ``x`` 's are hexadecimal digits representing the eight 16-bit parts of the address. Here are a few examples of IPv6 addresses :
|
|
|
``abcd:ef01:2345:6789:abcd:ef01:2345:6789``
|
|
|
``2001:db8:0:0:8:800:200c:417a``
|
|
|
``fe80:0:0:0:219:e3ff:fed7:1204``
|
|
|
IPv6 addresses often contain a long sequence of bits set to ``0``. In this case, a compact notation has been defined. With this notation, `::` is used to indicate one or more groups of 16 bits blocks containing only bits set to `0`. For example,
|
|
|
``2001:db8:0:0:8:800:200c:417a`` is represented as ``2001:db8::8:800:200c:417a``
|
|
|
``ff01:0:0:0:0:0:0:101`` is represented as ``ff01::101``
|
|
|
``0:0:0:0:0:0:0:1`` is represented as ``::1``
|
|
|
``0:0:0:0:0:0:0:0`` is represented as ``::``
|
|
|
An IPv6 prefix can be represented as `address/length`, where `length` is the length of the prefix in bits. For example, the three notations below correspond to the same IPv6 prefix :
|
|
|
``2001:0db8:0000:cd30:0000:0000:0000:0000`` / ``60``
|
|
|
``2001:0db8::cd30:0:0:0:0`` / ``60``
|
|
|
``2001:0db8:0:cd30::`` / ``60``
|
|
|
IPv6 supports unicast, multicast and anycast addresses. An IPv6 unicast address is used to identify one datalink-layer interface on a host. If a host has several datalink layer interfaces (e.g. an Ethernet interface and a WiFi interface), then it needs several IPv6 addresses. In general, an IPv6 unicast address is structured as shown in the figure below.
|
|
|
An IPv6 unicast address is composed of three parts :
|
|
|
A `global routing prefix` that is assigned to the Internet Service Provider that owns this block of addresses
|
|
|
A `subnet identifier` that identifies a customer of the ISP
|
|