With the rapid growth of the internet and the increasing number of devices such as computers, smartphones, IoT devices, and servers, the limitation of IPv4 addresses became a major issue, and to overcome this limitation, IPv6 was introduced as the next generation Internet Protocol, which provides a 📖 very large address space along with improved features for modern networking.
IPv6 (Internet Protocol Version 6) is a network layer protocol that provides unique IP addresses to devices in a network, and it uses a 128-bit address format represented in hexadecimal form, which allows a massive number of devices to be connected efficiently.
An IPv6 address consists of 8 groups, and each group contains 4 hexadecimal digits, where each digit represents 4 bits, and this structure makes IPv6 addresses longer than IPv4 but much more powerful and scalable, which helps in supporting a very large number of devices on the internet.
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
2001:1A2B:50D1:FCB3:1212:0000:CADB:45A1
👉 IPv6 address =
8 blocks separated by colon (:)
An IPv6 address is logically divided into two parts:
👉 First 64 bits represent the network
👉 Last 64 bits represent the device
IPv6 uses prefix length instead of subnet mask, and it is written using slash notation to represent the network portion of the address.
👉 Example:
2001:db8::/64
IPv6 address structure is designed to provide a scalable and future-ready addressing system, and although it is more complex than IPv4, it offers better performance, flexibility, and a huge address space, which makes it essential for modern networking.
There are two main rules used to shorten an IPv6 address: removing leading zeros in each group and replacing continuous groups of zeros with a double colon (::).
In an IPv6 address, leading zeros (zeros at the beginning of a group) can be removed to simplify the address.
👉 Explanation:
Each group contains 4 hexadecimal digits, but if the digits start with 0, those zeros can be removed without changing the value.
0001 → 1
00A2 → A2
0F23 → F23
👉 Example:
2001:0DB8:0000:0000:0000:0000:0000:0001
→ 2001:DB8:0:0:0:0:0:1
Double colon (::) is used to replace one or more continuous groups of zeros in an IPv6 address, which helps in significantly shortening long addresses.
If there are multiple groups containing only zeros, they can be replaced by ::, but this rule must be used carefully.
Example 1
2001:1A2B:50D1:FCB3:1212:0000:CADB:45A1
→ 2001:1A2B:50D1:FCB3:1212::CADB:45A1
Example 2
2001:1A2B:50D1:0000:0000:0000:CADB:45A1
→ 2001:1A2B:50D1::CADB:45A1
Example 3
2001:1A2B:50D1:0000:1111:0000:CADB:45A1
→ 2001:1A2B:50D1::1111:0:CADB:45A1
While shortening an IPv6 address, it is very important to ensure that the meaning of the address does not change, and the use of shorthand notation should follow proper rules, otherwise it may lead to incorrect interpretation of the address.
👉 IPv6 shorthand =
Remove leading zeros + Replace continuous zeros with ::
Unicast address is used to identify a single device in a network, and data sent to this address is delivered to only one specific destination.
1️⃣ Global Unicast Address
2️⃣ Unique Local Address (ULA)
3️⃣ Link-Local Address
A Global Unicast Address is used for communication over the internet, and it is globally unique, which means it can identify a device across the entire internet.
🧠 Simple Meaning 👉 Same as Public IP in IPv4
🔢 Range : 2000::/3
🔍 Identification Rule : If an IPv6 address starts with 2 or 3, then it is a Global Unicast Address
📊 Example : 2001:1A2B:50D1:FCB3::1
A Unique Local Address is used for communication within a private network, and it is not routable on the internet.
🧠 Simple Meaning 👉 Same as Private IP in IPv4
🔢 Range :👉FC00::/7
🔍 Identification Rule :👉 If an IPv6 address starts with FC or FD, then it is a Unique Local Address
📊 Example : FD00:1A2B:50D1::1
A Link-Local Address is automatically assigned to IPv6-enabled devices, and it is used for communication within the same local network segment.
🧠 Simple Meaning👉 Used for local communication only
🔢 Range :👉FE80::/10
🔍 Identification Rule :👉 If an IPv6 address starts with FE80, then it is a Link-Local Address
📊 Example : FE80::1A2B:50D1:1
Multicast address is used to send data from one device to multiple devices at the same time, and it replaces the broadcast concept used in IPv4.
🧠 Simple Meaning 👉 One-to-many communication
🔢 Range: FF00::/8
🔍 Identification Rule : If an IPv6 address starts with FF, then it is a Multicast Address
📊 Example : FF02::1
Anycast address is used to send data to the nearest device among multiple devices having the same address, which helps in reducing delay and improving performance.
🧠 Simple Meaning 👉 One-to-nearest device
⚠️ Important Concept (Very Important) :-
👉 Anycast does not have a separate address range
👉 It uses Unicast address range (mostly Global Unicast)
🔍 Identification Rule : ❌ Cannot be identified just by looking at the address, It depends on configuration, not prefix
IPv6 static routing is a method of manually configuring routes in a router, where the network administrator specifies the destination network and the next-hop address or exit interface, so that packets can be forwarded correctly between different networks.
🧠 Basic Idea
👉 Static Routing =
Manually telling router where to send packets
ipv6 route <destination-network>/<prefix-length> <next-hop-ipv6-address>
ipv6 route 2001:db8:2::/64 2001:db8:1::2
👉 Meaning:
ipv6 unicast-routing
ipv6 route 2001:db8:2::/64 2001:db8:1::2
👉 Uses next-hop IPv6 address
ipv6 route 2001:db8:2::/64 fa0/0
👉 Uses outgoing interface
ipv6 route 2001:db8:2::/64 fa0/0 2001:db8:1::2
👉 Uses both interface + next-hop
Router> enable
Router# configure terminal
Router(config)# ipv6 unicast-routing
Router(config)# interface fa0/0
Router(config-if)# ipv6 address 2001:db8:1::1/64
Router(config-if)# no shutdown
Router(config-if)# exit
Router(config)# ipv6 route 2001:db8:2::/64 2001:db8:1::2
Router(config)# end
show ipv6 route
👉 Shows routing table
ping 2001:db8:2::1
👉 Tests connectivity
Router> enable
Router# configure terminal
Router(config)# ipv6 unicast-routing
Router(config)# interface fa0/0
Router(config-if)# ipv6 address 2001:db8:1::1/64
Router(config-if)# no shutdown
Router(config-if)# exit
Router(config)# ipv6 route 2001:db8:2::/64 2001:db8:1::2
Router(config)# end
Router# show ipv6 route
👉 IPv6 Static Routing =
Manual + Prefix + Next-Hop
In this setup, IPv6 static routing is configured in a network with four LANs connected through multiple routers, where each router is manually configured with routes using the ipv6 route command to enable communication between different networks, allowing successful end-to-end connectivity such as from PC1 to Server1.

👉 This topology consists of:
🟡 LAN 1 - FC00:1111:2222:3333::/64
🟣 LAN 2 - FC00:1112:2222:3333::/64
🟠 LAN 3 - FC00:1113:2222:3333::/64
🟢 LAN 4 - FC00:1114:2222:3333::/64
👉 Enable IPv6 routing on all routers:
ipv6 unicast-routing
Router> enable
Router# configure terminal
Router(config)# hostname GATEWAY1
GATEWAY1(config)# ipv6 unicast-routing
GATEWAY1(config)# interface fa0/0
GATEWAY1(config-if)# ipv6 address FC00:1111:2222:3333::1/64
GATEWAY1(config-if)# no shutdown
GATEWAY1(config-if)# exit
GATEWAY1(config)# interface fa0/1
GATEWAY1(config-if)# ipv6 address FC00:1112:2222:3333::1/64
GATEWAY1(config-if)# no shutdown
GATEWAY1(config-if)# exit
GATEWAY1(config)# ipv6 route FC00:1113:2222:3333::/64 FC00:1112:2222:3333::2
GATEWAY1(config)# ipv6 route FC00:1114:2222:3333::/64 FC00:1112:2222:3333::2
GATEWAY1(config)# exit
Router> enable
Router# configure terminal
Router(config)# hostname ROUTER1
ROUTER1(config)# ipv6 unicast-routing
ROUTER1(config)# interface fa0/0
ROUTER1(config-if)# ipv6 address FC00:1112:2222:3333::2/64
ROUTER1(config-if)# no shutdown
ROUTER1(config-if)# exit
ROUTER1(config)# interface fa0/1
ROUTER1(config-if)# ipv6 address FC00:1113:2222:3333::1/64
ROUTER1(config-if)# no shutdown
ROUTER1(config-if)# exit
ROUTER1(config)# ipv6 route FC00:1111:2222:3333::/64 FC00:1112:2222:3333::1
ROUTER1(config)# ipv6 route FC00:1114:2222:3333::/64 FC00:1113:2222:3333::2
ROUTER1(config)# exit
Router> enable
Router# configure terminal
Router(config)# hostname GATEWAY2
GATEWAY2(config)# ipv6 unicast-routing
GATEWAY2(config)# interface fa0/0
GATEWAY2(config-if)# ipv6 address FC00:1113:2222:3333::2/64
GATEWAY2(config-if)# no shutdown
GATEWAY2(config-if)# exit
GATEWAY2(config)# interface fa0/1
GATEWAY2(config-if)# ipv6 address FC00:1114:2222:3333::1/64
GATEWAY2(config-if)# no shutdown
GATEWAY2(config-if)# exit
GATEWAY2(config)# ipv6 route FC00:1111:2222:3333::/64 FC00:1113:2222:3333::1
GATEWAY2(config)# ipv6 route FC00:1112:2222:3333::/64 FC00:1113:2222:3333::1
GATEWAY2(config)# exit
PC1 :-
IPv6 Address: FC00:1111:2222:3333::4444
Gateway: FC00:1111:2222:3333::1
Server1 :-
IPv6 Address: FC00:1114:2222:3333::2222
Gateway: FC00:1114:2222:3333::1

After configuring IPv6 static routing on all routers, it is important to verify whether end-to-end communication is working properly, and this can be done by sending ICMP echo requests (ping) from one device to another device located in a different network.
👉We are pinging from PC1 (LAN 1) to Server1 (LAN 4)
ping FC00:1114:2222:3333::2222

Routing table verification is used to check whether the static routes configured on the router are correctly installed, and it helps to confirm that the router knows the path to reach all remote networks.
show ipv6 route
If:
👉 Then configuration is successful and complete
In this topology, IPv6 static routing is configured manually on all routers, where each router is provided with routes to reach remote networks, and communication is successfully verified from PC1 to Server1.
👉 Start your IPv6 practical lab now:
https://www.evisiontechnoserve.com/internships/it/45-days-job-internship-program-live