Two /64 IPv6 “blocks” are allocated to my routerAt the first glance I was thinking it’s a bug in my router or it could be some obsolete data that has not been purged:
1234567 ppp0 Link encap:Point-to-Point Protocol inet6 addr: 2001:db8:1234:5678::abcd/64 Scope:Global [...] br0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet6 addr: 2001:db8:1234:5688::1234:0/64 Scope:Global [...]
But it isn’t.
The reason why my ISP is allocating two /64 IPv6 “blocks” is for their sake of simplicity in routing.
The first /64 block, or more specifically, the IP assigned to me, 2001:db8:1234:5678::abcd
, is a GUA (global unique address). It serves both for ISP to reach me, and for me to route IPv6 packets to outside. It will be the routing target for the block 2001:db8:1234:5688::/64
.
Personally I don’t get the point why ISP gives the entire /64 block to me (or at least routing the entire /64 block to my router, as I observed that my router was able to receive the ICMP (ping) packets to 2001:db8:1234:5678::abce
), as 1 GUA is enough for routing purpose.
Presumbly ISP wants to isolate the clients into different LANs or something?
And it looks like the ISP simply routes all packets to 2001:db8:1234:5678::/64
to the link I established with it using PPP (ppp0
).
Here comes an interesting fact: ICMP packets sent to 2001:db8:1234:5678::abce
will be routed to my router, and my router routes it back to the ISP (as my router does not think it belongs to any devices behind it), …, back and forth, until TTL is reached.
The first GUA IP seems to be “assigned” to me using SLAAC. (Indeed it’s my router itself who “assigned” the IP to it. SLAAC does not get an IP from some other, instead it generates one itself.)
The second /64 block, which is really a block, not just an IP, assigned to me, is for my own use. And the entire block is routed to 2001:db8:1234:5678::abcd
, which is the GUA ISP “assigned” to my router. This block is allocated by DHCPv6/PD (Prefix delegation).
My router, in turn, hands this block to my devices, using Router Advertisement (radvd), letting them configure their IPv6 addresses.
All my devices will get one or more IPs (generally at least two, one for accepting incoming connections, and is static, and one or more for establishing outgoing connections, which is temporary) from this block. The router also does, in addition to the IP it got form ISP.
Also note that as the entire block 2001:db8:1234:5678/64
is routed to me, it’s quite possible for me to still assign IPs in that block to my other devices. This only compilates my management of the network, but does not add burden to the ISP. However, if I’m connecting to the ISP using Ethernet, each IP I use would call for another routing entry in ISP’s router, and that would be unaffordable for them.
At the first glance I was thinking it’s a bug in my router or it could be some obsolete data that has not been purged:
1 2 3 4 5 6 7 | ppp0 Link encap:Point-to-Point Protocol inet6 addr: 2001:db8:1234:5678::abcd/64 Scope:Global [...] br0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet6 addr: 2001:db8:1234:5688::1234:0/64 Scope:Global [...] |
But it isn’t.
The reason why my ISP is allocating two /64 IPv6 “blocks” is for their sake of simplicity in routing.
The first /64 block, or more specifically, the IP assigned to me, 2001:db8:1234:5678::abcd
, is a GUA (global unique address). It serves both for ISP to reach me, and for me to route IPv6 packets to outside. It will be the routing target for the block 2001:db8:1234:5688::/64
.
Personally I don’t get the point why ISP gives the entire /64 block to me (or at least routing the entire /64 block to my router, as I observed that my router was able to receive the ICMP (ping) packets to 2001:db8:1234:5678::abce
), as 1 GUA is enough for routing purpose.
Presumbly ISP wants to isolate the clients into different LANs or something?
And it looks like the ISP simply routes all packets to 2001:db8:1234:5678::/64
to the link I established with it using PPP (ppp0
).
Here comes an interesting fact: ICMP packets sent to 2001:db8:1234:5678::abce
will be routed to my router, and my router routes it back to the ISP (as my router does not think it belongs to any devices behind it), …, back and forth, until TTL is reached.
The first GUA IP seems to be “assigned” to me using SLAAC. (Indeed it’s my router itself who “assigned” the IP to it. SLAAC does not get an IP from some other, instead it generates one itself.)
The second /64 block, which is really a block, not just an IP, assigned to me, is for my own use. And the entire block is routed to 2001:db8:1234:5678::abcd
, which is the GUA ISP “assigned” to my router. This block is allocated by DHCPv6/PD (Prefix delegation).
My router, in turn, hands this block to my devices, using Router Advertisement (radvd), letting them configure their IPv6 addresses.
All my devices will get one or more IPs (generally at least two, one for accepting incoming connections, and is static, and one or more for establishing outgoing connections, which is temporary) from this block. The router also does, in addition to the IP it got form ISP.
Also note that as the entire block 2001:db8:1234:5678/64
is routed to me, it’s quite possible for me to still assign IPs in that block to my other devices. This only compilates my management of the network, but does not add burden to the ISP. However, if I’m connecting to the ISP using Ethernet, each IP I use would call for another routing entry in ISP’s router, and that would be unaffordable for them.