public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Gao feng <gaofeng@cn•fujitsu.com>
To: BALAKUMARAN KANNAN <balakumarank@tataelxsi•co.in>
Cc: "netdev@vger•kernel.org" <netdev@vger•kernel.org>
Subject: Re: flush cache according to 'preferred life time'
Date: Mon, 23 Jul 2012 16:05:42 +0800	[thread overview]
Message-ID: <500D05D6.7090108@cn.fujitsu.com> (raw)
In-Reply-To: <4A71D24947E78D43BC584A7CD4391A41017DE48F@SIXPRD0410MB359.apcprd04.prod.outlook.com>

于 2012年07月23日 15:36, BALAKUMARAN KANNAN 写道:
> Hello all,
>     I am running test casees for IPv6 conformation on linux-3.0.26 kernel. Here I am facing a problem in routing advertisement. Once test case sets the 'preferred life time' to 20 seconds for a particular destination. And continuously sending ICMP REQUEST. It is expected that the ICMP_REPLY should stop in 20 seconds. But as because the default gc_interval is 30seconds, even after the timer expiry of the route, it is staying in the router cache. So even after 20 seconds, the nut(node under test) sends ICMP_REPLY. So if I changes gc_interval to 1, the test is getting passed.
> 
>     But if I changes gc_interval to 1 seconds another test case in pmtu section fails. It expects that the nut should hold pmtu(path mtu) information for different value. So if I flushes the cache, the pmtu value is turning back to default.
> 
>     So I made the kernel to alter its gc_interval value according to the 'preferred life time' of the path. Here is my path. Kindly tell me whether my idea is correct. Am I missing something?
> 

Is this commit 1716a96101c49186bb0b8491922fd3e69030235f what you need?

> --------------------------------------------------------------------------------------
> --- ../linux-3.0.y-BRANCH_SS-RT.git.fresh/net/ipv6/ndisc.c.bak  2012-07-23 12:50:46.000000000 +0530
> +++ ../linux-3.0.y-BRANCH_SS-RT.git.fresh/net/ipv6/ndisc.c      2012-07-23 12:54:17.000000000 +0530
> @@ -1160,6 +1160,9 @@
>  
>         __u8 * opt = (__u8 *)(ra_msg + 1);
>  
> +        struct net *net = dev_net(skb->dev);
> +        fib6_run_gc(1, net);
> +
>         optlen = (skb->tail - skb->transport_header) - sizeof(struct ra_msg);
>  
>         if (!(ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)) {
> @@ -1200,6 +1203,22 @@
>                 return;
>         }
>  
> +        if (*opt == 3) {
> +                printk("<8> IN OPT 3\n");
> +                struct net *net = dev_net(skb->dev);
> +                fib6_run_gc(1, net);
> +                int pref_life_time =  ntohl(*((int *) (((char *) (opt)) + 8)));
> +                if ((pref_life_time != 0) && (pref_life_time < 50)) {
> +                        printk("<8> gc_interval CHANGED\n");
> +                        //init_net.ipv6.sysctl.flush_delay = 1;
> +                        init_net.ipv6.sysctl.ip6_rt_gc_interval = 1 * HZ;
> +                }
> +                else {
> +                        init_net.ipv6.sysctl.ip6_rt_gc_interval = 30 * HZ;
> +                }
> +
> +        }
> +
>         if (!accept_ra(in6_dev))
>                 goto skip_linkparms;
> --------------------------------------------------------------------------------------
> 
> Note: This is not well structured. I just created it for temparory solution. Just clarify me whether this idea is right.
> 
> And Please let me know why pmtu value is not stored in routing table but only in cache.

I think the pmtu should be belong to destination.the different destinations may have
different pmtu,even they use same route entry.

  reply	other threads:[~2012-07-23  8:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-23  7:36 flush cache according to 'preferred life time' BALAKUMARAN KANNAN
2012-07-23  8:05 ` Gao feng [this message]
2012-07-23  8:12   ` BALAKUMARAN KANNAN
2012-07-23  8:24     ` Gao feng
2012-07-23  8:36       ` BALAKUMARAN KANNAN
2012-07-23  9:44         ` Gao feng

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=500D05D6.7090108@cn.fujitsu.com \
    --to=gaofeng@cn$(echo .)fujitsu.com \
    --cc=balakumarank@tataelxsi$(echo .)co.in \
    --cc=netdev@vger$(echo .)kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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