IPv6 addresses are 128 bits long as opposed to the 32 bits used by the current IPv4 addresses. The main benefit of this is that it provides LOTS more addresses.
Some common prefixes:
Subsets of 2000::/3 space:
The preferred form for writing IPv6 addresses is x:x:x:x:x:x:x:x where each x represents the hexadecimal values of 16 bits of the address. Examples:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 1080:0:0:0:8:800:200C:417A
Due to the way that some IPv6 addresses are allocated it will be common for some addresses to have long strings of zeros in them, making them tedious to write using the above representation. The standard defines a special syntax that can be used to compress the groups of zeros. Use of the "::" indicates indicates multiple groups of 16-bits of 0. The "::" notation can only be used once in an address and can also be used to compress leading or trailing zeros. Examples:
1080:0:0:0:8:800:200C:417A => 1080::8:800:200C:417A FF01:0:0:0:0:0:0:101 => FF01::101 0:0:0:0:0:0:0:1 => ::1 0:0:0:0:0:0:0:0 => ::
A third format is defined for use when dealing with a mixed IPv6 / IPv4 environment, in this case the last 32 bits of the address (ie. the last two groups of 4 hexadecimal characters) are written in DottedQuad notation giving an address that looks like x:x:x:x:x:x:d.d.d.d where the 'x's are the hexadecimal values of the six high-order 16-bit pieces of the address, and the 'd's are the decimal values of the four low-order 8-bit pieces of the address (standard IPv4 representation). Examples:
0:0:0:0:0:0:13.1.68.3 or ::13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 or ::FFFF:129.144.52.38
An IPv6 address prefix is represented by the notation ipv6-address/prefix-length where
For example, the following are legal representations of the 60-bit prefix 12AB00000000CD3 (hexadecimal):
12AB:0000:0000:CD30:0000:0000:0000:0000/60 12AB::CD30:0:0:0:0/60 12AB:0:0:CD30::/60
The following are NOT legal representations of the above prefix:
12AB:0:0:CD3/60 | may drop leading zeros, but not trailing zeros, within any 16-bit chunk of the address |
12AB::CD30/60 | address to left of "/" expands to 12AB:0000:0000:0000:0000:000:0000:CD30 |
12AB::CD3/60 | address to left of "/" expands to 12AB:0000:0000:0000:0000:000:0000:0CD3 |
There are several different types of IPv6 address defined by the standads. The type is specified by the leading bits of an address, this field is variable-length and is called the FormatPrefix (FP). Refer to RFC2373 for the currently defined FP's some of the more common ones are.
001 | Aggregatable Global Unicast Addresses (1/8 of the address space) |
1111 1110 10 | Link-Local Unicast Addresses (1/2024 of the address space) |
1111 1110 11 | Site-Local Unicast Addresses (1/2024 of the address space) |
1111 1111 | Multicast Addresses (1/256 of the address space) |
This is probably going to be the most widely used of the IPv6 address formats and is what is currently being allocated by the RIRs and is in use on the 6Bone. The format of a Aggregatable Global Unicast Addresses (AGUA) address looks like this.
| 3| 13 | 8 | 24 | 16 | 64 bits | +--+-----+---+--------+--------+--------------------------------+ |FP| TLA |RES| NLA | SLA | Interface ID | | | ID | | ID | ID | | +--+-----+---+--------+--------+--------------------------------+
Where
An important concept to grasp is that these fields in the address are used only for allocation, they are not directly used for routing. Routing of IPv6 addresses is based on prefix length, although sometimes the prefix length will be based on one of the fields above this does not always need to be the case. To explain how each field is used imagine an IPv6 internet which consists of a tight mesh of directly connected backbone nodes in the centre, moving out from this you reach transit nodes which have a connection to a subset of the backbone nodes (usually between 1 - 4) each of these transit nodes is then connected to a number of edge nodes. This structure is almost identical to the structure of the 6Bone and possibly today's IPv4 internet.
Both the NLA ID and SLA ID fields can be nested multiple times.
Link-Local addresses are designed to be used for addressing on a single link for purposes such as auto-address configuration, neighbor discovery, or when no routers are present. Their format is as follows. Routers must not forward packets with link-local addresses to other links.
| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111010| 0 | interface ID | +----------+-------------------------+----------------------------+
In hex, this would be fe80:0:0:0:0:0:0:(ID), or fe80::(ID) if collapsing zeroes.
Example:
eth0 Link encap:Ethernet HWaddr 00:E0:4C:39:43:BB inet addr:10.21.1.2 Bcast:10.21.1.255 Mask:255.255.255.0 inet6 addr: fe80::2e0:4cff:fe39:43bb/64 Scope:Link
Anyone know where the extra bits (02, ff:fe) in the interface ID came from (they aren't in the MAC address)?
The 2 in 02 is from the universally unique bit being flipped in IPv6 addresses so you can easily type addresses like fe80::1 (the 2 bit is clear meaning that this is a non universally unique suffix)
ff:fe is inserted and means "Ethernet MAC" I think.
Site-Local addresses are designed to be used for addressing inside of a site without the need for a global prefix. Routers must not forward any packets with site-local source or destination addresses outside of the site. These addresses are analogous to the RFC:1918 IPv4 addresses in use by many organisations today.
| 10 | | bits | 38 bits | 16 bits | 64 bits | +----------+-------------+-----------+----------------------------+ |1111111011| 0 | subnet ID | interface ID | +----------+-------------+-----------+----------------------------+
In hex, this is fec0:0:0:0:0:(ID) or fec0::(ID).
Site local addresses are currently deprecated and are likely to be replaced by some other similar mechanism which isn't so prone to address usage collisions.
An IPv6 multicast address is an identifier for a group of nodes. A node may belong to any number of multicast groups. Multicast addresses have the following format:
| 8 | 4 | 4 | 112 bits | +------ -+----+----+---------------------------------------------+ |11111111|flgs|scop| group ID | +--------+----+----+---------------------------------------------+
The flgs field contains information about whether the group id is a well defined group (Assigned by IANA) or a temporary group. The scop field contains information about the scope of the address, it can be used to define groups of machines such as
Anycast addresses have the same format at AGUA addresses and are used to send a packet to only one of a group of machines. This group might be spread around the internet. IT can be used to route a packet to the closest of a server. (eg: the nearest nameserver).
Just like IPv4 has special addresses for thinks like loopback, network and broadcast so does IPv6.
::1
the loopback address, used to talk to the local computer. (:__ :1/128, opposed to IPv4's 127/8)
::
the unspecified addresses, used for things such as address discovery when the computer does not yet have an address. Should not ever be used as a destination address.
There is no broadcast addresses, as these have been replaced by multicast ones.
6 pages link to IPv6Addressing: