[openstack-dev] [neutron] [IPv6] New API format for extra_dhcp_opts

Xu Han Peng pengxuhan at gmail.com
Tue Sep 30 05:46:49 UTC 2014


Robert,

I think the CLI will look something like based on Mark's suggestion:

neutron port-create extra_dhcp_opts 
opt_name=<dhcp_option_name>,opt_value=<value>,version=4(or 6) <network>

This extra_dhcp_opts can be repeated and version is optional (no version 
means version=4).

Xu Han

On 09/29/2014 08:51 PM, Robert Li (baoli) wrote:
> Hi Xu Han,
>
> My question is how the CLI user interface would look like to 
> distinguish between v4 and v6 dhcp options?
>
> Thanks,
> Robert
>
> On 9/28/14, 10:29 PM, "Xu Han Peng" <pengxuhan at gmail.com 
> <mailto:pengxuhan at gmail.com>> wrote:
>
>     Mark's suggestion works for me as well. If no one objects, I am
>     going to start the implementation.
>
>     Thanks,
>     Xu Han
>
>     On 09/27/2014 01:05 AM, Mark McClain wrote:
>>
>>     On Sep 26, 2014, at 2:39 AM, Xu Han Peng <pengxuhan at gmail.com
>>     <mailto:pengxuhan at gmail.com>> wrote:
>>
>>>     Currently the extra_dhcp_opts has the following API interface on
>>>     a port:
>>>
>>>     {
>>>         "port":
>>>         {
>>>             "extra_dhcp_opts": [
>>>                 {"opt_value": "testfile.1","opt_name": "bootfile-name"},
>>>                 {"opt_value": "123.123.123.123", "opt_name":
>>>     "tftp-server"},
>>>                 {"opt_value": "123.123.123.45", "opt_name":
>>>     "server-ip-address"}
>>>             ],
>>>             ....
>>>          }
>>>     }
>>>
>>>     During the development of DHCPv6 function for IPv6 subnets, we
>>>     found this format doesn't work anymore because an port can have
>>>     both IPv4 and IPv6 address. So we need to find a new way to
>>>     specify extra_dhcp_opts for DHCPv4 and DHCPv6, respectively. (
>>>     https://bugs.launchpad.net/neutron/+bug/1356383
>>>     <https://bugs.launchpad.net/neutron/+bug/1356383>)
>>>
>>>     Here are some thoughts about the new format:
>>>
>>>     Option1: Change the opt_name in extra_dhcp_opts to add a prefix
>>>     (v4 or v6) so we can distinguish opts for v4 or v6 by parsing
>>>     the opt_name. For backward compatibility, no prefix means IPv4
>>>     dhcp opt.
>>>
>>>             "extra_dhcp_opts": [
>>>                 {"opt_value": "testfile.1","opt_name": "bootfile-name"},
>>>                 {"opt_value": "123.123.123.123", "opt_name":
>>>     "*v4:*tftp-server"},
>>>                 {"opt_value": "[2001:0200:feed:7ac0::1]",
>>>     "opt_name": "*v6:*dns-server"}
>>>             ]
>>>
>>>     Option2: break extra_dhcp_opts into IPv4 opts and IPv6 opts. For
>>>     backward compatibility, both old format and new format are
>>>     acceptable, but old format means IPv4 dhcp opts.
>>>
>>>             "extra_dhcp_opts": {
>>>                  "ipv4": [
>>>                         {"opt_value": "testfile.1","opt_name":
>>>     "bootfile-name"},
>>>                         {"opt_value": "123.123.123.123", "opt_name":
>>>     "tftp-server"},
>>>                  ],
>>>                  "ipv6": [
>>>                         {"opt_value": "[2001:0200:feed:7ac0::1]",
>>>     "opt_name": "dns-server"}
>>>                  ]
>>>             }
>>>
>>>     The pro of Option1 is there is no need to change API structure
>>>     but only need to add validation and parsing to opt_name. The con
>>>     of Option1 is that user need to input prefix for every opt_name
>>>     which can be error prone. The pro of Option2 is that it's
>>>     clearer than Option1. The con is that we need to check two
>>>     formats for backward compatibility.
>>>
>>>     We discussed this in IPv6 sub-team meeting and we think Option2
>>>     is preferred. Can I also get community's feedback on which one
>>>     is preferred or any other comments?
>>>
>>
>>     I'm -1 for both options because neither is properly backwards
>>     compatible.  Instead we should add an optional 3rd value to the
>>     dictionary: "version".  The version key would be used to make the
>>     option only apply to either version 4 or 6.  If the key is
>>     missing or null, then the option would apply to both.
>>
>>     mark
>>
>>
>>
>>     _______________________________________________
>>     OpenStack-dev mailing list
>>     OpenStack-dev at lists.openstack.orghttp://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140930/d3ae6de0/attachment.html>


More information about the OpenStack-dev mailing list