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.
next prev parent 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