Let me tell you a little bit about IPv6 networking.
IPv6 was introduced in the 1990s to overcome the shortage of worldwide unique IPv4 addresses.
IPv6 is used extensively by internet service providers to address the core internet structure.
But end users and companies mostly use IPv4 behind a net router.
For Red Hat Enterprise Linux, you have support for dual-stack.
So you can use IPv4 as well as IPv6.
And as we have just seen, you get IPv6 by default because it's internally used as a
default address by Linux.
IPv6 addresses are different.
There are 128-bit numbers.
And if you write them as a decimal number, that would be a very long number.
And that is why in IPv6, we normally express them as eight-column separated groups of four
hexadecimal numbers.
And in these numbers, leading zeros are omitted.
Here we have an example of a valid IPv6 address.
Long strings of zeros in an IPv6 address can be replaced by one block of two-column characters.
So colon colon 210 means 0 colon 0 colon 0 colon 0 colon 0 colon 0 colon 0 colon 210.
I hope you realize that it makes sense to just skip all of the zeros.
Now when you combine an IPv6 address with a port number, you should enclose the IPv6
address in square brackets.
That is because most software stacks are using IP address colon port number to refer to the
port number IP address combination in a socket.
But in IPv6, that would be confusing because the IPv6 address itself is using columns as well.
So that is why you put the entire string between square brackets followed by a colon 80.
Here you can see what it looks like.
In IPv6, subnets are not very relevant anymore.
And that is because IPv6 allows you to address four billion times four billions times four
billions times four billion addresses.
I summarize it as a lot.
I don't even know how to pronounce it.
And that is why subnets don't matter that much.
By default, an IPv6 address has a subnet of 64 bits.
And typically, network providers hand out a slash 48 prefix address, which leaves 16 bits to the
customer to address subnets if they want to.
And then still, you have a lot of IPv6 addresses that are available.
In IPv6, different address types are available.
And here you can see an overview.
So the first one is local host.
Local host is written as colon 1.
And that's the local host address, which is used on the loopback interface.
Now we have the unspecified address, which is just written as colon colon, which is used to refer to all IP addresses.
In IPv4, the equivalent is 0 0 0 0.
The default route is written as colon colon slash 0.
Then we have the global unicast.
Global unicast is using 2000 colon colon slash 3.
So anything starting with 2000.
These are the addresses that are currently allocated, which means that valid IPv6 addresses go from 2000 up to 2016.
And that is all.
Now we have unique local, which are private addresses.
FD 0 0 is what they start with.
And you use them as an internal alternative for the 192.168.0.0 in IPv4.
There's link local, which are non-routable addresses that are automatically assigned.
Maybe you have just noticed that on my network interface, I have an FE80 address that is available.
And finally, there's multicast.
Multicast is what can be used to address a group of devices.
And multicast addresses start with FF 0 0.
So every group of devices has its own specific multicast address.
How are IPv6 addresses assigned?
Well, apart from manual allocation and DHCP, IPv6 supports stateless address auto-configuration, SLAAC.
In SLAAC, a host sends a router solicitation to the FF 0 2 colon colon 2 multicast group to access all routers.
And the router answers that request, sending all relevant information.
And the host next adds an automatic generated host ID to the network prefix to obtain a unique address in this way.
If you want to use this feature, which is very convenient in RHEL 10, you need to install the RADVD package.
Let me tell you a little bit more about this process.
How exactly does it work?
Well, let's imagine that you bring up a new node.
When you bring up the new node, then the node has a MAC address.
Every network card has a MAC address that is used as a unique identifier.
The node is next going to send a packet on the network to search for a router.
The router answers.
The router finds that packet.
And the router answers to the node.
And by reading the answer, the node learns what network the router is on.
And the node knows it needs to use the same network.
And it adds a node suffix to it that is based on the MAC address of the node.
And that is how it is automatically going to work.
And for those of you who are veterans amongst us, this is like Novell Network was using IPX in the 1980s and 1990s, a long time ago.