From: Dave Taht <dave.taht@gmail.com>
To: Maciej Soltysiak <maciej@soltysiak.com>
Cc: cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Cerowrt-devel] atomic route updates?
Date: Wed, 24 Apr 2013 02:33:17 -0700 [thread overview]
Message-ID: <CAA93jw63dMae8-WyPrpTh+e1QJDSGeouONLDYpkxtgDBuztPCw@mail.gmail.com> (raw)
In-Reply-To: <CAMZR1YCc982k_djJ3BhTRKBn1iSwh5KDLfaqjW=oOXEb6=qPAw@mail.gmail.com>
On Tue, Apr 23, 2013 at 11:14 PM, Maciej Soltysiak <maciej@soltysiak.com> wrote:
> I think I remember to fix ssdp you brought some of route cache and igmp
> back.
No. What I did observe was that for the past 2+ years, routing
behavior kept changing in subtle ways, and I am hoping it's all
perfect now.
the igmp bug was due to openwrt being too agressive on removing
useless cruft from /proc, thus breaking a few userspace tools. Been
fixed a while now.
> Do we know if cero routed setup without route cache can work with
> ssdp? I wouldn't like to force bringing back route cache just for ssdp.
Routes are routes. The route cache was an inefficient means of
theoretically speeding up route lookup and has been eliminated, that's
all. Route lookups still happen, just not through an over-abstracted
cache mechanism.
> I'm OK to test this scenario.
goferit.
>
> Maciej
>
> On 20 Apr 2013 18:01, "Dave Taht" <dave.taht@gmail.com> wrote:
>>
>> iproute2's ip/iproute2.c code has a function called iproute_modify,
>> which to a blurring eye appears to be capable of doing an atomic route
>> update via it's netlink interface.
>>
>> " if (matches(*argv, "change") == 0 || strcmp(*argv, "chg") == 0)
>> return iproute_modify(RTM_NEWROUTE, NLM_F_REPLACE,
>> argc-1, argv+1);
>> if (matches(*argv, "replace") == 0)
>> return iproute_modify(RTM_NEWROUTE,
>> NLM_F_CREATE|NLM_F_REPLACE,
>> argc-1, argv+1);"
>>
>> The babel native daemon and the quagga-re code, however, does a
>> delete/add, which results in packets dropping on the floor when a
>> route changes.
>>
>> Everyone that's tried to make this code do atomic updates has failed.
>>
>> Juliusz thinks this section of the codebase is cursed, and I
>> personally, gave up, because dave miller had spent most of the last 3+
>> years eliminating the linux kernel route cache, (which was finally
>> eliminated a few kernel versions back (3.6?)) and I figured all
>> attempts at doing anything fancy with routing during that phase was
>> going to break in odd ways until the new cache-free-linux-kernel
>> routing code stabilized.
>>
>> OK, so, like, it's kernel 3.8 time now, and ... I find myself too
>> scarred by previous attempts to give it a go myself, but I know that
>> out there are intrepid explorers out there, just dying to delve into
>> the gnarly details of netlink programming to keep a few more streams
>> going full throttle in the face of a routing change! Yes? Anyone? So
>> take a look at iproute2 and the relevant netlink code here:
>>
>> git://github.com/Quagga-RE/quagga-RE.git
>> git://github.com/jech/babeld.git
>>
>> I note that I have a few other ideas for netlink-related changes to
>> cero. Two of the big ones is that I'd like to be able to have a
>> userspace daemon get back more details as to when *fq_codel drops a
>> packet (e.g, send a multicast to a listener of the dropped the packet,
>> and why), and get some sort of ongoing bandwidth estimate when it
>> starts dropping, etc.
>>
>> I also have some hope for multi-prefix multi-homed routing too...
>>
>> but I find netlink really intimidating. It has an interface that only
>> a bit-banger would love.
>>
>> --
>> Dave Täht
>>
>> PS: I have a build of 3.8.8 at the moment that uses the new PROCD
>> replacement for init that I'm losing a battle on, too. Also toke has
>> got cero mostly independently buildable now.
>>
>> Fixing bufferbloat with cerowrt:
>> http://www.teklibre.com/cerowrt/subscribe.html
>> _______________________________________________
>> Cerowrt-devel mailing list
>> Cerowrt-devel@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/cerowrt-devel
--
Dave Täht
Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html
next prev parent reply other threads:[~2013-04-24 9:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-20 9:56 Dave Taht
2013-04-24 6:14 ` Maciej Soltysiak
2013-04-24 9:33 ` Dave Taht [this message]
2013-04-24 13:27 ` Robert Bradley
2013-04-24 14:03 ` Robert Bradley
2013-04-24 15:46 ` Dave Taht
2013-04-25 15:05 ` Robert Bradley
2013-05-05 12:02 ` Dave Taht
2013-05-05 13:58 ` Daniel Ezell
2013-05-05 18:31 ` Dave Taht
2013-05-05 17:01 ` Robert Bradley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAA93jw63dMae8-WyPrpTh+e1QJDSGeouONLDYpkxtgDBuztPCw@mail.gmail.com \
--to=dave.taht@gmail.com \
--cc=cerowrt-devel@lists.bufferbloat.net \
--cc=maciej@soltysiak.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox