sowmini.varadhan at sun.com wrote:
>> I think what we'd want for dynamic address assignment is the ability to
>> manage the identities in ipadm, with the default identity being the MAC
>> address. Then in the future we can add the ability to specify different
>> DHCPv4 identities (client IDs?) on the command line, as well as multiple
>> IPv6 tokens and/or DUIDs for IPv6.
>
> Would the usage of client-ID as the "binding" cover all cases?
You need to handle the default case of no DHCPv4 client-ID and just the
MAC address as the ID. I suspect one can represent this as a single
thing which can be either a binary MAC address, or a client-ID (which
might be ASCII?)
Note that IPv6 and DHCPv6 use (at least) different terminology in that
the MAC address corresponds to an 64-bit IPv6 token (or interface-ID)
[which by default is derived from the MAC address], and the DHCPv4
client-ID conceptually corresponds to the DUID (but the DUID has a type
field and comes in different types; not just a sequence of bytes like
the client-ID.)
>> Thus the full fledged syntax might be something like
>> ipadm create-dhcpv4 -i link4 [-c clientID]
>> where the lack of a -c means that refers to the single identity which is
>> the MAC address on link4. So 'ipadm destroy-dhcpv4 -i link4' would
>> destroy that default one.
>>
>> It isn't clear whether we want to treat stateless and DHCPv6 as separate
>> or a union; the protocols are coupled together, but stateless using a
>> token derived from the MAC address, and the DUID being quite different.
>> A separate one could be
>> ipadm create-dhcpv6 -i link6 [-c DUID]
>> ipadm create-slac -i link6 [-t token]
>> and a combined one could be of the form
>> ipadm create-ipv6 -i link6 [-c DUID] [-t token]
>>
>> The name of these objects are of the form <link, id> the same way the
>> static address objects are of the form <link, address>. For instance, my
>> laptop would show a dhcpv4 name for <ath0, 0:21:5d:96:26:fa>.
>>
>> If we think this is sensible, and we don't need to support bge0:17
>> DHCPv4 configuration using ipadm from day one, the initial support is
>> just for
>> ipadm create-dhcpv4 -i link
>> ipadm destroy-dhcpv4 -i link
>> ipadm create-ipv6 -i link
>> ipadm destroy-ipv6 -i link
>> thus we can add the options later.
>
> I'm not sure I see what create-ipv6/destroy-ipv6 do, and how they
> would be differnt from what create-interface would do?
create-ipv6 falls in the address management part of the interface.
create-interface is the thing that sets up the phyint/ill, right?
You've specified those as different, and in that case, just like we need
create-dhcpv6 for address management we need create-<something> for
non-static IPv6 address management.
It might be that the interface can be simplified to remove the
create-interface all together, and having it be implicit in the first
address management on the link.
That would work well for the normal cases of configuring static or
dynamic addresses, but it might have issues with the NWAM-type usage
where one wants to plumb bge0 just to be able to see the state of
IFF_RUNNING (I'm guessing that is what NWAM does, but it could also use
DLPI to look for DL_NOTE_LINK_UP/DOWN.)
Any other issues with making create-interface implicit in creating the
first address on the interface?
> also, as you point out, stateless and dhcpv6 are coupled together,
> and in.ndpd is the configuration method here, much like in.routed
> manages rdisc today, so wouldn't it be better to deal with all these
> mechanisms when we add routing options in ipadm later?
I don't understand what IPv6 address management has to to with routing
(any more than IPv4 address management having something to do with routing.)
No, I don't think you can punt on IPv6 address management and just do
IPv4 if that was the question ;-)
Erik