Development issues regarding the cerowrt test router project
 help / color / mirror / Atom feed
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

  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