If you're deploying IPv6 in your organization,
there are a number of different ways
that you could implement this in your environment.
One way is to tunnel the IPv6 within an existing network
configuration.
For example 6to4 is an addressing type
that sends IPv6 information over an existing IPv4 address.
This process creates an IPv6 address
that's based on your existing IPv4 address.
One of the challenges with 6to4 is
that it requires specific relay routers that are designed
to provide this tunneling.
This also does not support network address translation,
which certainly limits the ability
to send this traffic across the internet.
The reverse of 6to4 is 4in6 tunneling,
where you would tunnel IPv4 traffic inside of an existing
IPv6 network.
Because of the challenges associated
with this addressing and tunneling system,
we don't tend to see a widespread implementation
of these technologies on today's networks.
If you do want to tunnel IPv6 and you
want to support network address translation,
you might want to use Teredo.
This tunnels IPv6 through a NATed IPv4 network,
allowing you to send IPv6 end-to-end
through an IPv4 network.
With Teredo, you don't need any special router or relay system.
This is designed to be a temporary form of communication
until we're able to send IPv6 traffic end-to-end.
Teredo's commonly seen on Windows operating systems,
but there is an open source version of this for Linux, BSD
Unix, and Mac OS called Miredo.
This provides the same functionality
as a Windows-based Teredo system,
but it works on these additional operating systems.
Today's implementations of IPv6 tend to be end-to-end.
And we're able to implement this by using dual-stack routing.
This means that our devices and our routers
can communicate using IPv4 and IPv6 simultaneously.
You can send whatever traffic you would like to the device
and it knows to forward that traffic appropriately.
With IPv4, you would configure a router or a device
with an IPv4 address.
It uses standard IPv4 routing tables.
And you can even use IPv4 dynamic routing protocols.
This is the same IPv4 configuration
that we've been using on our routers for years.
What we've done is add an additional protocol
to our routers for IPv6.
There's a separate configuration for IPv6 addresses.
These devices have their own IPv6
routing tables that are separate from the IPv4 routing tables.
And if you're using IPv6 dynamic routing protocols,
those protocols would be used by the IPv6 section
of this router.
This allows us to configure our devices with an IPv4 address,
an IPv6 address, or allows us to configure both on our devices
simultaneously, and all of our routing devices
will be able to route that traffic appropriately.
If you're starting to use IPv6, one of the things you'll notice
is that IPv6 doesn't use broadcasts.
We've removed broadcasts completely from the protocol.
But we still need a way to identify other devices that
might be on the network.
And without a broadcast, we can't
use the traditional address resolution protocol
to be able to find devices.
So instead, we use a specialized multicast protocol called
Neighbor Solicitation, or NS.
One device would send this neighbor solicitation
to this multicast address, and any device
on the network that matches the request
will send the response back as a Neighbor Advertisement, or NA.
This effectively replaces the functionality
of address resolution protocol that we
used to have in IPv4 and updates it
for the multicast capabilities of IPv6.
This allows us to use more efficient protocols,
like multicast, and replace the functionality
of IPv4 ARP with a Neighbor Discovery Protocol, or NDP.
IPv6 also provides us with a way to statically address devices
automatically without the use of a DHCP server.
This is called Stateless Address Autoconfiguration, or SLAAC.
This means that we could have an entire network configured
with SLAAC-based IP addresses without having
to build a separate DHCP server to assign addresses.
To be able to support this IPv6 autoconfiguration,
we need to use Duplicate Address Detection, or DAD,
to ensure that no duplicate IP addresses would be configured.
This is also the protocol that we would use
to find routers on our network.
This Neighbor Discovery protocol would
send a router solicitation packet
and listen for a router advertisement.
This would allow your local devices
to automatically configure themselves and identify
where the routers are on their local subnet.
This process uses the Neighbor Discovery Protocol
to find these routers.
A router solicitation message is sent to an IPv6 router
multicast address, and any local routers on that subnet
will respond back with a router advertisement.
Routers may also be configured to send unsolicited router
advertisements over this multicast address,
so that all of the devices on the subnet
would be able to identify where the router happened to be.
This will transfer information such as the IPv6 address
information of the router, prefix information
for the network, and prefix length, which would then
allow the local devices to automatically configure
themselves with the appropriate IP addresses.