DHCPv6 Prefix Delegation (DHCPv6-PD)定義在RFC 3633,是DHCPv6的extension (option)。主要是用來和DHCPv6-PD server要求prefix給DHCPv6-PD client其他的interface。
Network layout如下:
Server端是Windows,使用dibber,設定檔如下(server.conf):
# Logging level range: 1(Emergency)-8(Debug)
log-level 8
# Don't log full date
log-mode short
iface "區域連線 35"
{
# clients should renew every half an hour
T1 1800
# In case of troubles, after 45 minutes, ask any server
T2 2700
# Addresses should be prefered for an hour
prefered-lifetime 3600
# and should be valid for 2 hours
valid-lifetime 7200
class {
pool 5000:1234::/48
}
# the following lines instruct server to grant each client
# 1 or 2 prefixes (if you have uncommented second line with pd-pool or not).
# For example, client might get
# 2222:2222:2222:222:2222:993f:6485:0/112 and
# 1111:1111:1111:1111:1111::993f:6485:0/112
pd-class {
pd-pool 2222:2222:1234::/48
pd-length 48
T1 11111
T2 22222
}
}
pd-pool 2222:2222:1234::/48
DHCPv6-PD server管理的prefix為2222:2222:1234::/48
pd-length 48
切割單位為48,等於全部發送出去。如果pd-length 56,則會切分2^(56-48) = 256個單位分發。也就是client會收到Prefix length = 56,Prefix Address = 2222:2222:1234:xx00::的訊息。
Client端是Linux,使用wide-dhcpv6,設定檔如下(/tmp/dhcp6c.conf):
interface br0 {
send ia-pd 1;
};
id-assoc pd 1 {
prefix-interface usb0 {
sla-id 2;
};
prefix-interface usb1 {
sla-id 3;
};
};
send ia-pd 1:
送出id為1的pd請求
sla-len:
這裡省略了sla-len,sla-len的設定原則如下:
64 - (The length of the delegation you are getting)
如Server的pd-length為48,那麼這邊的sla-len就要設16,不過可以省略不設。
sla-id 0:
設定prefix id,範圍為0 ~ 2^sla-len,如 sla-len = 8,那麼範圍就是0~255。
執行結果
root@lte-iad:/ramdisk/tmp# ifconfig usb0
usb0 Link encap:Ethernet HWaddr 11:22:33:E0:E3:B9
inet6 addr: fe80::1122:33ff:fee0:e3b9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX byt.s:RX1920 (1.8 KiB)
root@lte-iad:/ramdisk/tmp# ifconfig usb1
usb1 Link encap:Ethernet HWaddr 11:22:33:07:16:C7
inet6 addr: fe80::1122:33ff:fe07:16c7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1700 (1.6 KiB)
root@lte-iad:/ramdisk/tmp# ifconfig br0
br0 Link encap:Ethernet HWaddr 11:22:33:97:F0:E6
inet6 addr: fe80::1122:33ff:fe97:f0e6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:630 errors:0 dropped:0 overruns:0 frame:0
TX packets:14577 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:75873 (74.0 KiB) TX bytes:10922a79 (1.0 MiB)
root@lte-iad:/ramdisk/tmp# dhcp6c -c /tmp/dhcp6c.conf br0
Line: 418 *** family: 10, socktype: 1, protocol: 17, flags: 1, (sockaddr) address: ::, address len: 28 ***
Line: 502 *** family: 10, socktype: 1, protocol: 17, flags: 0, (sockaddr) addres,s: ff02::1:2, address len: 28 ***
root@lte-iad:/ramdisk/tmp# ifconfig usb0
usb0 Link encap:Ethernet HWaddr 11:22:33:E0:E3:B9
inet6 addr: 2222:2222:1234:2:1122:33ff:fee0:e3b9/64 Scope:Global
inet6 addr: fe80::1122:33ff:fee0:e3b9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:5090 (4.9 KiB)
root@lte-iad:/ramdisk/tmp# ifconfig usb1
usb1 Link encap:Ethernet HWaddr 11:22:33:07:16:C7
inet6 addr: 2222:2222:1234:3:1122:33ff:fe07:16c7/64 Scope:Global
inet6 addr: fe80::1122:33ff:fe07:16c7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:50 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:4928 (4.8 KiB)
root@lte-iad:/ramdisk/tmp# ifconfig br0
br0 Link encap:Ethernet HWaddr 11:22:33:97:F0:E6
inet6 addr: fe80::1122:33ff:fe97:f0e6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1086 errors:0 dropped:0 overruns:0 frame:0
TX packets:30600 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:134671 (131.5 KiB) TX bytes:2324630 (2.2 MiB)