[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