Re: [dhcwg] Question: in RFC3046 why did Agent Subnet Mask Sub-optiondie

Simon Kelley <simon@thekelleys.org.uk> Fri, 09 March 2007 11:50 UTC

Return-path: <dhcwg-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HPdc3-0007Ht-Ll; Fri, 09 Mar 2007 06:50:19 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HPdc2-0007Ho-5A for dhcwg@ietf.org; Fri, 09 Mar 2007 06:50:18 -0500
Received: from cpc2-cmbg4-0-0-cust458.cmbg.cable.ntl.com ([81.98.241.203] helo=thekelleys.org.uk) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HPdc0-0001KN-H8 for dhcwg@ietf.org; Fri, 09 Mar 2007 06:50:18 -0500
Received: from guest425.wtgc.org ([193.62.205.172]) by thekelleys.org.uk with asmtp (Exim 3.36 #1 (Debian)) id 1HPdZO-0001yW-00; Fri, 09 Mar 2007 11:47:37 +0000
Message-ID: <45F14A04.8080500@thekelleys.org.uk>
Date: Fri, 09 Mar 2007 11:50:28 +0000
From: Simon Kelley <simon@thekelleys.org.uk>
User-Agent: Thunderbird 1.5.0.9 (X11/20070104)
MIME-Version: 1.0
To: "David W. Hankins" <David_Hankins@isc.org>
Subject: Re: [dhcwg] Question: in RFC3046 why did Agent Subnet Mask Sub-optiondie
References: <45EDD246.20605@thekelleys.org.uk> <403B5316AD7A254C9024875BAE481D4E6C314F@zeus.incognito.com> <45EDDE8C.1090704@thekelleys.org.uk> <20070308180602.GB26203@isc.org>
In-Reply-To: <20070308180602.GB26203@isc.org>
X-Enigmail-Version: 0.94.0.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 1.8 (+)
X-Scan-Signature: b1c41982e167b872076d0018e4e1dc3c
Cc: DHC WG <dhcwg@ietf.org>
X-BeenThere: dhcwg@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: dhcwg.ietf.org
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:dhcwg@ietf.org>
List-Help: <mailto:dhcwg-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=subscribe>
Errors-To: dhcwg-bounces@ietf.org

David W. Hankins wrote:
> On Tue, Mar 06, 2007 at 09:35:08PM +0000, Simon Kelley wrote:
>> The Agent Subnet mask would provide the needed information and make 
>> configuration for remote networks work in the same way as for local 
>> networks. This would make my life easier because my users would no 
>> longer omit netmask information and wonder why their DHCP doesn't work.
> 
> Except that some DHCPv4 relays do not have addresses on the networks
> they are relaying...so they don't have this knowledge.
> 
> Some don't set giaddr, but do provide the relay agent option.  So
> a subsequent relay agent that does set giaddr would be disallowed
> from placing their own relay agent option in the packet and
> couldn't deliver the subnet mask if they had it...
> 
> Some do set giaddr (to an address on a different interface), and
> therefore have to be configured with a subnet selection option
> contents.  So far as I know, none of them expect 'CIDR notation'
> for this configuration value, but I suppose it is at least
> possible that they might be made to.

These configurations are clearly not suitable for use with a scheme
where the DHCP server derives network topology. There is no reason it
should become mandatory for either relay agents or DHCP servers to use a
netmask sub-option, but it easy to demonstrate situations in which using
them would be advantageous.

> 
> But I'm more curious about what you intend to do with multiple
> subnets on one broadcast domain...which subnet should the relay
> provide the mask for?

This is a very valid question: reading back though the archives, it
looks like it's one of the things which was worying Ted Lemon about the
netmask sub-option. (I think: Ted can, of course, correct me if I've
second-guessed him wrong here.)

> 
> Are relays going to be required to know about all the subnets
> attached to a physical interface?  If they're too dumb to have
> an IP address, but smart enough to be able to supply useful
> information in a relay agent option, are they going to need a
> way for routers to inform them what subnets they should
> advertise to the DHCP server?

You have clearly followed the same paths as me: I think relay-added
option which contains all the subnets existing on the physical network
from which a relay received a packet would be exactly what's required here.
> 

> I don't like the vector to this line of reasoning.

Would you care to explain why?
> 
>> To answer your question another way, I have a DHCP server which doesn't 
>> need to be explicitly configured with the network topology, it derives 
>> it. To make this work with relays need the relays to provide netmask 
>> information.
> 
> I don't think this will work without creating some sort of
> "subset of compatibility" (similar to the client-identifier
> and domain-name options).
> 
> 

You should look at dnsmasq, which makes it work fine.

Consider first an interface on the machine running dnsmasq which has two
two addresses, say 192.168.0.0/24 and 192.168.1.0/24. Dnsmasq is
configured which available address ranges on each of these networks and
on another network.

dhcp-range=192.168.0.2,192.168.0.100
dhcp-range=192.168.1.2.192.168.1.100
dhcp-range=192.168.2.2,192.168.2.100

Note that no netmask information is provided, and dhcp-ranges are not
explicitly associated with a physical interface.

When a broadcast arrives at the interface, dnsmasq starts with the list
of IP-address/netmask pairs associated with the interface where packet
was received, and infers which dhcp-range statements are valid. In this
case 129.168.0... and 192.168.1.... but _not_ 192.168.2..... That set of
address ranges is then used to allocate an address.

If the same thing occurs but the broadcast is received by a relay, then
the relay can  put only one address into giaddr, (which one is not
specified in any standard, as far as I know) The packet is then unicast
by the relay to dnsmasq, which can only use the value of giaddr to infer
valid address ranges, hence it ends up with either 192.160.0.... _or_
192.168.1.... in the set of usable address ranges, but not both.

In the relay case, dnsmasq needs to configured with the netmask of
whichever subnet the relay chose: it has no way to find it automatically
and can't infer which address-ranges are valid without this information.
(In contrast for the local-interface case, it can just ask the kernel.)

So, using a relay, address allocation over multiple subnets on one
physical network is impossible, and it requires that netmask information
be duplicated in the relay and the server. Both of these problems could
be fixed by a relay sub-option which allows the relay to send a list of
IP-address/netmask pairs to the server. The server would then have the
same information in the relay case that it has in the directly-connected
case.


Another way to think about this is that giaddr has two functions: it is
the address to which the server unicasts packets which it wishes to be
relayed back to a client, and it's a handle which encodes the place in a
the network topology from which a broadcast originated, and therefore
drives the address allocation process. [1] A relay-suboption which
transmits the list of subnets associated with he pyhsical network on
which a broadcast was received can be seen as replacing the second of
these functions, but only when both relay and server support it.

Cheers,

Simon.


[1] I believe that the ISC server makes this more explicit with "shared
    network" declarations: which can be read as saying "if a packet
    arrives with giaddr on subnet A, you can allocate an address from
    subnets A,B,C
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> dhcwg mailing list
> dhcwg@ietf.org
> https://www1.ietf.org/mailman/listinfo/dhcwg


_______________________________________________
dhcwg mailing list
dhcwg@ietf.org
https://www1.ietf.org/mailman/listinfo/dhcwg