
pelle at hemmop
Jan 13, 2011, 4:42 AM
Post #4 of 19
(3367 views)
Permalink
|
|
Re: Using an *external* DHCPv6 server for prefix-delegation in conjunction with PPPoE
[In reply to]
|
|
Hi > Interesting. With PVI's I had no issue on the 7206VXR or 7609-S running > 12.2(33)SRE2. I have you tried the "ipv6 dhcp relay source xxxx" option, so > that the source is specified? Yes, but that does solve anything. Here's two tshark captures illustrating it: Without "dhcp-relay source": Internet Protocol Version 6 Source: fd00:8c0:3::91 (fd00:8c0:3::91) Destination: fd00:8c0:1::20 (fd00:8c0:1::20) DHCPv6 Message type: Relay-forw (12) Hop count: 0 Link-address: :: Peer-address: fe80::219:aaff:fe85:9981 With "dhcp-relay source": Internet Protocol Version 6 Source: fd00:8c0:2116::1:7 (fd00:8c0:2116::1:7) Destination: fd00:8c0:1::20 (fd00:8c0:1::20) DHCPv6 Message type: Relay-forw (12) Hop count: 0 Link-address: :: Peer-address: fe80::219:aaff:fe85:9981 In both cases there is no link address and just a link local peer address, it's just the source of the IPv6 frame that's changed. And isc-dhcpd doesn't use that info when selecting the subnet6 clause (see below). > BTW, I would recommend running ISC dhcp v4.2 or later. There's IPv6-related > items fixed/working in v4.2. Yes, but I'm running Debian on the server, and it's only 4.1.1 that's pre-packaged. Unfortunately 4.2 won't be available in the next release (squeeze) either. Anyway, looking at the 4.2 sources reveals what isc-dhcpd is lookng for. The function mapping packet to subnets (shared_network_from_packet6) starts at line 4159 in the file server/dhcpv6.c. The comments says it all: 1) /* * First, find the link address where the packet from the client * first appeared (if this packet was relayed). */ pseudo code: looking for an link address which is neither unspecified nor link local. /* * If there is a relayed link address, find the subnet associated * with that, and use that to get the appropriate * shared_network. */ 2) /* * If there is no link address, we will use the interface * that this packet came in on to pick the shared_network. */ That is: first look for the link address in the DHCPv6 packet, secondly use the interface on the DHCPv6 *server* the packet was received on. In practice the second option is not very viable in a SP environment, which gives you only one option left: make sure the DHCPv6 packet do have an identifyable link address. Changing the source address of the relayed packet doesn't help much. -- Pelle RFC1925, truth 11: Every old idea will be proposed again with a different name and a different presentation, regardless of whether it works.
|