[openstack-dev] [neutron] Prefix delegation using dibbler client
Ihar Hrachyshka
ihrachys at redhat.com
Mon Apr 20 09:20:08 UTC 2015
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
UPD: dibbler packages are now available in all Fedora updates
repositories, starting from Fedora 20, plus EPEL7.
Packages are called: dibbler-[client|docs|requestor|relay|server].
Specifically, you can locate them at:
http://download.eng.brq.redhat.com/pub/fedora/linux/updates/21/x86_64/d/
Please report any bugs with the package at bugzilla.redhat.com.
/Ihar
On 03/11/2015 05:29 PM, John Davidge (jodavidg) wrote:
> I am pleased to say that we are now in a good position with this
> patch. The necessary DHCPv6 client changes have been made available
> in the latest release of Dibbler (1.0.1) and we’re getting some
> much appreciated assistance from Ihar and Thomas in having this new
> version packaged for wide availability - thanks guys.
>
> We’ve updated the patch to include tests and it's been brought
> up-to-date with the latest L3 agent refactoring changes. It is no
> longer WIP and we would very much appreciate your reviews and
> feedback.
>
> https://review.openstack.org/#/c/158697/
>
>
> Cheers,
>
> John
>
>
>
>
> On 24/02/2015 17:40, "John Davidge (jodavidg)" <jodavidg at cisco.com>
> wrote:
>
>> Hello all,
>>
>> We now have a work-in-progress patch up for review:
>>
>> https://review.openstack.org/#/c/158697/
>>
>>
>> Feedback on our approach is much appreciated.
>>
>> Many thanks,
>>
>> John Davidge OpenStack at Cisco
>>
>>
>>
>>
>> On 20/02/2015 18:28, "Ihar Hrachyshka" <ihrachys at redhat.com>
>> wrote:
>>
> Those are good news!
>
> I commented on the pull request. Briefly, we can fetch from git,
> but would prefer an official release.
>
> Thanks, /Ihar
>
> On 02/19/2015 11:26 PM, Robert Li (baoli) wrote:
>>>>> Hi Kyle, Ihar,
>>>>>
>>>>> It looks promising to have our patch upstreamed. Please
>>>>> take a look at this pull request
>>>>>
>>>>> https://github.com/tomaszmrugalski/dibbler/pull/26#issuecomment-75
144912
>>>>>
>>>>>
.
>>>>> Most importantly, Tomek asked if it’s sufficient to have
>>>>> the code up in his master branch. I guess you guys may be
>>>>> able to help answer that question since I’m not familiar
>>>>> with openstack release process.
>>>>>
>>>>> Cheers, Robert
>>>>>
>>>>> On 2/13/15, 12:16 PM, "Kyle Mestery" <mestery at mestery.com
>>>>> <mailto:mestery at mestery.com>> wrote:
>>>>>
>>>>> On Fri, Feb 13, 2015 at 10:57 AM, John Davidge (jodavidg)
>>>>> <jodavidg at cisco.com <mailto:jodavidg at cisco.com>> wrote:
>>>>>
>>>>> Hi Ihar,
>>>>>
>>>>> To answer your questions in order:
>>>>>
>>>>> 1. Yes, you are understanding the intention correctly.
>>>>> Dibbler doesn¹t currently support client restart, as doing
>>>>> so causes all existing delegated prefixes to be released
>>>>> back to the PD server. All subnets belonging to the router
>>>>> would potentially receive a new cidr every time a subnet is
>>>>> added/removed.
>>>>>
>>>>> 2. Option 2 cannot be implemented using the current version
>>>>> of dibbler, but it can be done using the version we have
>>>>> modified. Option 3 could possibly be done with the current
>>>>> version of dibbler, but with some major limitations - only
>>>>> one single router namespace would be supported.
>>>>>
>>>>> Once the dibbler changes linked below are reviewed and
>>>>> finalised we will only need to merge a single patch into
>>>>> the upstream dibbler repo. No further patches are
>>>>> anticipated.
>>>>>
>>>>> Yes, you are correct that dibbler is not needed unless
>>>>> prefix delegation is enabled by the deployer. It is
>>>>> intended as an optional feature that can be easily disabled
>>>>> (and probably will be by default). A test to check for the
>>>>> correct dibbler version would certainly be necessary.
>>>>>
>>>>> Testing in the gate will be an issue until the new version
>>>>> of dibbler is merged and packaged in the various distros.
>>>>> I¹m not sure if there is a way to avoid this problem,
>>>>> unless we have devstack install from our updated repo while
>>>>> we wait.
>>>>>
>>>>> To me, this seems like a pretty huge problem. We can't
>>>>> expect distributions to package side-changes to upstream
>>>>> projects. The correct way to solve this problem is to work
>>>>> to get the changes required in the dependent packages
>>>>> upstream into those projects first (dibbler, in this case),
>>>>> and then propose the changes into Neutron to make use of
>>>>> those changes. I don't see how we can proceed with this
>>>>> work until the issues around dibbler has been resolved.
>>>>>
>>>>>
>>>>> John Davidge OpenStack at Cisco
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 13/02/2015 16:01, "Ihar Hrachyshka"
>>>>> <ihrachys at redhat.com <mailto:ihrachys at redhat.com>> wrote:
>>>>>
>>>>> Thanks for the write-up! See inline.
>>>>>
>>>>> On 02/13/2015 04:34 PM, Robert Li (baoli) wrote:
>>>>>> Hi,
>>>>>
>>>>>> while trying to integrate dibbler client with neutron to
>>>>>> support PD, we countered a few issues with the dibbler
>>>>>> client (and server). With a neutron router, we have the
>>>>>> qg-xxx interface that is connected to the public network,
>>>>>> on which a dhcp server is running on the delegating
>>>>>> router. For each subnet with PD enabled, a router port
>>>>>> will be created in the neutron router. As a result, a new
>>>>>> PD request will be sent that asks for a prefix from the
>>>>>> delegating router. Keep in mind that the subnet is added
>>>>>> into the router dynamically.
>>>>>
>>>>>> We thought about the following options:
>>>>>
>>>>>> 1. use a single dibbler client to support the above
>>>>>> requirement. This means, the client should be able to
>>>>>> accept new requests on the fly either through
>>>>>> configuration reload or other interfaces. Unfortunately,
>>>>>> dibbler client doesn¹t support it.
>>>>>
>>>>> Sorry for my ignorance on PD implementation (I will
>>>>> definitely look at it the next week), but what does this
>>>>> entry above mean? Do you want a single dibbler instance
>>>>> running per router serving all subnets plugged into it? And
>>>>> you want to get configuration updates when a new subnet is
>>>>> plugged in, or removed from the router?
>>>>>
>>>>> If that's the case, why not just restarting the client?
>>>>>
>>>>>> 2. start a dibbler client per subnet. All of the dibbler
>>>>>> clients will be using the same outgoing interface (which
>>>>>> is the qg-xxx interface). Unfortunately, dibbler client
>>>>>> uses /etc/dibbler and /var/lib/dibbler for its state (in
>>>>>> which it saves duid file, pid file, and other internal
>>>>>> states). This means it can only support one client per
>>>>>> network node. 3. run a single dibbler client that
>>>>>> requests a smaller prefix (say /56) and splits it among
>>>>>> the subnets with PD enabled (neutron subnet requires
>>>>>> /64). Depending on the neutron router setup, this may
>>>>>> result in significant waste of prefixes.
>>>>>
>>>>> Just to understand all options at the table: can we
>>>>> implement ^^ option with stock dibbler?
>>>>>
>>>>>
>>>>>> Given the significant drawback with 3, we are left with 1
>>>>>> and 2. After looking at the dibbler source code, we found
>>>>>> that 2 is easier to achieve for now by making some small
>>>>>> changes in the dibbler code. In the long run, we think
>>>>>> option 1 is better.
>>>>>
>>>>>> The changes we made to the linux dibbler client code, and
>>>>>> the dibbler server code can be found in here:
>>>>>> https://github.com/johndavidge/dibbler/tree/cloud-dibbler.
>>>>>>
>>>>>>
Basically it does a few things: ‹ create a unique working area
>>>>>> per dibbler client ‹ since all the clients use the same
>>>>>> outgoing interface, we¹d like each dibbler client to use
>>>>>> a unique LLA as its source address when sending messages.
>>>>>> This would avoid clients to receive server messages that
>>>>>> are not intended for them. ‹ we found that dibbler server
>>>>>> uses transaction ID alone to identify a match between a
>>>>>> request and an answer. This would require that unique
>>>>>> transaction IDs be used among all the existing clients.
>>>>>> We found that clients could use the same transaction IDs
>>>>>> in our environment. Therefore, a little change is made in
>>>>>> the server code so that it will take the request sender
>>>>>> into consideration while looking up a match.
>>>>>
>>>>>
>>>>>> Option 1 requires better understanding of the dibbler
>>>>>> code, and we think that it may not be possible to make it
>>>>>> happen in the kilo timeframe. But we think it has
>>>>>> significant advantages over option 2. Regardless, changes
>>>>>> made for 2 is also needed since we need to run one
>>>>>> dibbler client per neutron router.
>>>>>
>>>>>> Now the issue is how to make those changes (possible
>>>>>> with further revision) into an official dibbler release
>>>>>> ASAP so that we can use them for kilo release. John
>>>>>> Davidge has contacted the dibbler authors, and hasn¹t
>>>>>> received response so far.
>>>>>
>>>>> That's disturbing from packager point of view.
>>>>>
>>>>> - From Red Hat side, we miss dibbler packaged in Fedora,
>>>>> but that's a minor issue, we can easily put some effort and
>>>>> do it.
>>>>>
>>>>> As for shipping side patches with it, it's a major
>>>>> problem. Especially considering the fact that those patches
>>>>> were not reviewed or accepted by dibbler upstream.
>>>>>
>>>>> I think it is critical to reach dibbler authors ASAP and
>>>>> see what they have to say about these patches. Remember,
>>>>> we're in Kilo-3 mode already.
>>>>>
>>>>> Reading thru the spec [1], it seems to me that dibbler
>>>>> won't be involved at all unless users explicitly omit
>>>>> prefix info when creating subnets. Is it correct? If so,
>>>>> can we somehow provide an easy way for distributions and
>>>>> deployers out of using custom patched dibbler by disabling
>>>>> the feature completely if/when they see shipping this
>>>>> version of dibbler unacceptable? I think we could introduce
>>>>> a new config option that would forbid prefix delegated
>>>>> subnets (?).
>>>>>
>>>>> Speaking of deployers, have you also considered providing a
>>>>> patch for sanity_check tool that would test local dibbler
>>>>> installation on whether it supports the needed features?
>>>>>
>>>>> Also, on a relevant note, how do you test the feature in
>>>>> gate? Distro packages probably don't ship the patched
>>>>> version of the client. Do you have any functional tests
>>>>> that utilize the client?
>>>>>
>>>>> [1]:
>>>>>
>>>>> https://github.com/openstack/neutron-specs/blob/master/specs/kilo/
ipv6-p
>>>>>
>>>>>
r
>>>>> e
>>>>>
>>>>>
> fix-delegation.rst
>>>>>
>>>>> /Ihar
>>>>>>
>>>>>>
>>>>>> _________________________________________________________________
______
>>>>>>
>>>>>>
_
>>>>>> __
>>>>>
>>>>>>
>>>>> OpenStack Development Mailing List (not for usage
>>>>> questions)
>>>>>> Unsubscribe:
>>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>
>>>>>>
<http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>>>>>
>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
________________________________________________________________________
>>>>> _ _
>>>>>
>>>>>
> OpenStack Development Mailing List (not for usage questions)
>>>>> Unsubscribe:
>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>
>>>>>
<http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>>>>>
>>>>>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> __________________________________________________________________
______
>>>>>
>>>>>
_
>>>>> _
>>>>>
>>>>>
> OpenStack Development Mailing List (not for usage questions)
>>>>> Unsubscribe:
>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>
>>>>>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>
>>> ____________________________________________________________________
_____
>>>
>>>
_
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe:
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>>
________________________________________________________________________
__
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>>
> ______________________________________________________________________
____
>
>
OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAEBCAAGBQJVNMTIAAoJEC5aWaUY1u57cUQH+QE2YUC3ki1dvspkzNavh4JS
3usKmLPS0vAXOjpYRN4MOJ1Y2FGblMqMvH5dN8Y2jGrimRy1G9zHR1C8J8n3H1X+
BZXd3wbqxCpfbgl95HA22oz4oZeRbm1i7WILxrLDmVFhwoNuLwuumpj/JqsK3LwZ
HH9DZuWjaHaL7zOTcpGe1OhqVC1jEPRFokd8Yvz9rjrVqkrYinfuZV8OK8ZgDuO7
RBzl/dXMAKd9LFRfQUCaRmB/ePeO12Mhhv4JsXDeurHB2zWRF4MpVFzeK+GK8N5q
UL/ikT2nb94zBg32L+IoFxVxo0HVFiFb5pBvZ5yurw8S9hvXvewr8mYDatzI/qI=
=JD/s
-----END PGP SIGNATURE-----
More information about the OpenStack-dev
mailing list