From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ia0-x22e.google.com (mail-ia0-x22e.google.com [IPv6:2607:f8b0:4001:c02::22e]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 009F121F11C for ; Wed, 24 Apr 2013 08:46:45 -0700 (PDT) Received: by mail-ia0-f174.google.com with SMTP id h23so1738663iae.5 for ; Wed, 24 Apr 2013 08:46:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=8/AXN7Ku0uZPieKxYuinnx8nuAa6gteDVquJKjkce5o=; b=AxDKNmFJ0ZhztO90BBC7EJMFI85HBfmTbYi/JAX59WsFm/V3RJtPgnpPks105a9ehW /CO6Q3iZWfPuxRJ4ZQNijn4vtmxm1/Ks4J8Yc2Moa/TrgdBU/W7Ov04GtpAXMIQbKPXP u6kEpSyFce9WflgoW2PD92+XZc0T8vsW7WX3QSRqHMEY5qbJNigNxClh5+ZmYVopuJf8 XBlKNqx8dRXG8er+95P2Zhm3GIYxU6BQ4BQIiaqBfa31qylQq+2jpgVqbuqe2tkdRqRK fRXbiRmSmiyXL/0j6wurgv041yXHD71DiprRPjTHsGTNDZh44qaasZkKJFCyT4y5MDoh umAQ== MIME-Version: 1.0 X-Received: by 10.50.25.102 with SMTP id b6mr14696460igg.27.1366818405004; Wed, 24 Apr 2013 08:46:45 -0700 (PDT) Received: by 10.64.132.71 with HTTP; Wed, 24 Apr 2013 08:46:44 -0700 (PDT) Received: by 10.64.132.71 with HTTP; Wed, 24 Apr 2013 08:46:44 -0700 (PDT) In-Reply-To: <5177DDA8.8010801@gmail.com> References: <5177DDA8.8010801@gmail.com> Date: Wed, 24 Apr 2013 08:46:44 -0700 Message-ID: From: Dave Taht To: Robert Bradley Content-Type: multipart/alternative; boundary=047d7bd768bc80bd5904db1d3535 Cc: cerowrt-devel@lists.bufferbloat.net Subject: Re: [Cerowrt-devel] atomic route updates? X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Apr 2013 15:46:46 -0000 --047d7bd768bc80bd5904db1d3535 Content-Type: text/plain; charset=ISO-8859-1 There is a possibly related bug being discussed on the babel-users list with an easy fix. Not sure what kernel versions it happens on. On Apr 24, 2013 11:39 AM, "Robert Bradley" wrote: > On 20/04/13 10:56, Dave Taht 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. >> >> > I think quagga-RE would take a lot of work, as you'd need to teach it > about modifying routes. The standalone babeld looks promising though, and > I have a basic patch up on GitHub (git://github.com/rb12345/**babeld.git). > One issue is that it seems difficult to actually flush the IPv6 route > cache, at least on Ubuntu, as writes to /proc/sys/net/ipv6/route/flush > appear to be ignored. The iproute2 approach is to query all cached routes > and misuse its internal print_route function to remove each route when > flushing the IPv6 cache. > > At the moment, the code compiles fine, and I am in the process of testing > it here. > > -- > Robert Bradley > > ______________________________**_________________ > Cerowrt-devel mailing list > Cerowrt-devel@lists.**bufferbloat.net > https://lists.bufferbloat.net/**listinfo/cerowrt-devel > --047d7bd768bc80bd5904db1d3535 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

There is a possibly related bug being discussed on the babel= -users list=A0 with an easy fix.

Not sure what kernel versions it happens on.

On Apr 24, 2013 11:39 AM, "Robert Bradley&q= uot; <robert.bradley1@gmail= .com> wrote:
On 20/04/13 10:56, Dave Taht 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.

" =A0 =A0 =A0 =A0if (matches(*argv, "change") =3D=3D 0 || st= rcmp(*argv, "chg") =3D=3D 0)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return iproute_modify(RTM_NEWROUTE, NLM_= F_REPLACE,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0argc-1, argv+1);
=A0 =A0 =A0 =A0 =A0if (matches(*argv, "replace") =3D=3D 0)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return iproute_modify(RTM_NEWROUTE, NLM_= F_CREATE|NLM_F_REPLACE,
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0argc-1, argv+1);"

The babel =A0native daemon and the quagga-re code, however, does a
delete/add, which results in packets dropping on the floor when a
route changes.


I think quagga-RE would take a lot of work, as you'd need to teach it a= bout modifying routes. =A0The standalone babeld looks promising though, and= I have a basic patch up on GitHub (git://github.com/rb12345/babeld.git)= . =A0One issue is that it seems difficult to actually flush the IPv6 route = cache, at least on Ubuntu, as writes to /proc/sys/net/ipv6/route/flush appe= ar to be ignored. =A0The iproute2 approach is to query all cached routes an= d misuse its internal print_route function to remove each route when flushi= ng the IPv6 cache.

At the moment, the code compiles fine, and I am in the process of testing i= t here.

--
Robert Bradley

_______________________________________________
Cerowrt-devel mailing list
Ce= rowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel
--047d7bd768bc80bd5904db1d3535--