alex_001 Posted October 19, 2013 Posted October 19, 2013 Внутри ядра linux realm 32х битный (по 16 src,dst), iproute2 понимает только 8. Хочу пропатчить iproute2 (на предмет полных 16bit realms) , но возможно есть какие-то подводные камни про которые не знаю - почему всеже в userspace 8bit? Вставить ник Quote
s.lobanov Posted October 21, 2013 Posted October 21, 2013 Если не секрет, как вы используете realm-ы? Я знаю только один юзкейс - считать трафик по направлениям - ix, аплинк, пиринг, но таких направлений много меньше, чем 2^16 Вставить ник Quote
evil-man Posted October 21, 2013 Posted October 21, 2013 Покажите команды, которые вы пытаетесь выполнить, и вам не хватает размерности realm? По диагонали глянул код iproute - везде используются все 32 бита realm. Вставить ник Quote
vitalyb Posted October 21, 2013 Posted October 21, 2013 s.lobanov realm'ы намного быстрей, чем ipset hash:net, практически бесплатные. Было время, я выделял так трафик с/на IX и MARK'ил его в iptables - была просто дополнительная куча маршрутов на дефолт. Наверное, при желании, можно использовать вместо tc hash :) Вставить ник Quote
alex_001 Posted October 21, 2013 Author Posted October 21, 2013 (edited) s.lobanov realm'ы намного быстрей, чем ipset hash:net, практически бесплатные. Было время, я выделял так трафик с/на IX и MARK'ил его в iptables - была просто дополнительная куча маршрутов на дефолт. Наверное, при желании, можно использовать вместо tc hash :) Именно так :) http://lartc.org/howto/lartc.adv-filter.route.html. Вполне себе работает такое + htb , но у меня не 255 клиентов :) Покажите команды, которые вы пытаетесь выполнить, и вам не хватает размерности realm? По диагонали глянул код iproute - везде используются все 32 бита realm. alex001 alexey # ip route add 192.168.5.0/24 dev lo realm 256 Error: argument "256" is wrong: "realm" value is invalid alex001 alexey # ip route add 192.168.5.0/24 dev lo realm 255 С userspace iproute все вроде ясно , непонятно где в ядре может быть ограничение (вроде везде оно 32bit src/dst).. Edited October 21, 2013 by alex_001 Вставить ник Quote
vitalyb Posted October 22, 2013 Posted October 22, 2013 (edited) По крайней мере в ядро оно добавляется: # python >>> from pyroute2 import IPRoute >>> ip = IPRoute() >>> ip.route("add", prefix="10.0.1.0", mask=24, gateway="192.168.0.1", RTA_FLOW="\x12\x05\x00\x00") [{'family': 2, 'dst_len': 24, 'proto': 4, 'tos': 0, 'event': 'RTM_NEWROUTE', 'flags': 0, 'attrs': [('RTA_TABLE', 254), ('RTA_DST', '10.0.1.0'), ('RTA_GATEWAY', '192.168.0.1'), ('RTA_OIF', 2), ('RTA_FLOW', '12:05:00:00')], 'table': 254, 'src_len': 0, 'type': 1, 'scope': 0}] # ip r 10.0.1.0/24 via 192.168.0.1 dev eth0 proto static realm 1298 А вот и первое ограничение, в rtacct не считается, видимо из-за ограничений в /proc/net/rt_acct А iptables считает: pkts bytes target prot opt in out source destination 20 1680 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 realm 0x512 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 realm 0x5120000 Edited October 22, 2013 by vitalyb Вставить ник Quote
alex_001 Posted March 13, 2014 Author Posted March 13, 2014 Немного некропост , но всеже :).. Еще есть ограничения в route classifier , там тоже 255 гвоздями приколочено. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.