[ipv6-tf] net.ipv6.route.max_size Linux & BGP
Lukasz Trabinski
lukasz w trabinski.net
Śro, 16 Lut 2011, 21:41:28 CET
Witam
Może komuś się to przyda. Problem dotyczy przypadku, kiedy używamy
BGP ze światową tablicą routingu IPv6 na Linuxie.
Standardowa wartość net.ipv6.route.max_size to 4096
dla obecnego rozmiaru tablicy BGP, to stanowczo za mało.
W przypadku np. Quaggi objawia się to takim oto błedem:
2011/02/12 18:43:52 ZEBRA: netlink-cmd error: Cannot allocate memory,
type=RTM_NEWROUTE(24), seq=11124600, pid=0
i co za tym idzie, część prefixów nie jest w ogóle instalowana w FIBie, a
więc jest gubiona. Problem można szybciej zaobserwować w przypadku
posiadania paru sesji BGP v6 i częstej zmiany tras.
Rozwiązaniem jest dopisanie do /etc/sysctl.conf przykładowo
net.ipv6.route.max_size = 65536
i wykonanie sysctl -p /etc/sysctl.conf
lub też bezpośrednio łata na kernel:
--- /tmp/linux-2.6.38-rc4/net/ipv6/route.c~ 2011-02-08
01:03:55.000000000 +0100
+++ /tmp/linux-2.6.38-rc4/net/ipv6/route.c 2011-02-14
20:48:53.000000000 +0100
@@ -2708,7 +2708,7 @@
#endif
net->ipv6.sysctl.flush_delay = 0;
- net->ipv6.sysctl.ip6_rt_max_size = 4096;
+ net->ipv6.sysctl.ip6_rt_max_size = 65536;
net->ipv6.sysctl.ip6_rt_gc_min_interval = HZ / 2;
net->ipv6.sysctl.ip6_rt_gc_timeout = 60*HZ;
net->ipv6.sysctl.ip6_rt_gc_interval = 30*HZ;
Problem był już wielokrotnie zgłaszany na linux-kernel i netdev, ale póki
co nikt nie pokusił się na stałą poprawkę. Generalnie najlepiej, byłoby
liczyć dynamicznie rozmiar tablicy, tak jak to jest w przypadku v4.
Być może, jak znajdę dłuższą chwilę wolnego czasu i natchnienie do
grzebenia w kodzie, to sam zrobię lepszego niż powyższy patcha. ;)
Z tego wiem, podobny problem występował w FreeBSD, ale zdaję się został
naprawiony. Nie sprawdzałem, jak wygląda w przypadku innych *nixów i *BSD.
pozdro.
-------------- następna część ---------
_______________________________________________
ipv6-tf mailing list
ipv6-tf w pl.ipv6tf.org
http://www.pl.ipv6tf.org/cgi-bin/mailman/listinfo/ipv6-tf
Więcej informacji o liście ipv6-tf