On 1/29/17, 10:02 AM, David Ahern wrote:
> On 1/28/17 6:00 PM, Roopa Prabhu wrote:
>>> 4. Route Appends
>>> - IPv6 allows nexthops to be appended to an existing route. In this
>>> case one notification is sent per nexthop added
>> thanks for listing all of these...I think you mentioned this case to me..
>> but I don't remember now why this notification is
>> sent per nexthop added. This is an update to an existing multipath route.
>> so seems like the notification should be a RTM_NEWROUTE with the full
>> RTA_MULTIPATH route
>> (similar to route add)
> It could be; it's a question of what should userspace get -- the full route
> or the change? Append to me suggests the latter - userspace is told what
> changed. It is simpler kernel code wise to send the full new route. The
> append changes were done after our conversation. ;-)
ok, yeah. you listing all the cases here made it more simpler to understand in
the context of other notifications :). I would prefer all
RTM_NEWLINK notifications (ie new add or update to an existing
route..replace/append), contain the full route via RTA_MULTIPATH.
>
>> Same holds for replace, I know the code might be tricky here...but the route
>> replace
>> is also an update to an existing multipath route and hence should be a
>> RTM_NEWROUTE
>> with the full multipath route (RTA_MULTIPATH) that changed (from userspace
>> semantics POV)
> It is. The only change on a replace is the encoding of all routes in
> RTA_MULTIPATH which is the point of this patch set. On successful replace,
> only 1 notification is sent with the full route.
ok, good.
>
>> I don't have a better solution, but with the above still being different,
>> wondering
>> if its worth the risk changing the api for just a few notifications.
> Data centers are moving to L3, and multipath is a big part of that. Anyone
> who looks at ip -6 route enough knows it gets painful mentally pulling the
> individual routes into a single one. In addition, using RTA_MULTIPATH is more
> efficient at scale.
>
> Furthermore, I have a follow on patch set that returns the route matched on
> an ip route get lookup. Returning the full multipath route is an important
> part to understanding the full context of the route to an address.
ok, sure. If we are moving to RTA_MULTIPATH, I just want to make sure all the
notifications consistently move to multipath.
so, to summarize and to get on the same page as you,
- all RTM_NEWLINK notifications will contain RTA_MULTIPATH when the route in
the kernel is a multipath route:
- since ipv6 allows add/append of a single nexthop, the
notification for the first nexthop may go out without a RTA_MULTIPATH
- RTM_DELETE will also contain RTA_MULTIPATH when the user tries to delete the
full route with RTA_MULTIPATH
- since ipv6 allows deleting of a single nexthop, RTM_DELETE may
contain a single nexthop delete ie without RTA_MULTIPATH (this is just to
continue
supporting the single nexthop delete support that ipv6 has)
Thanks.