alex_001 Опубликовано 19 октября, 2013 · Жалоба Внутри ядра linux realm 32х битный (по 16 src,dst), iproute2 понимает только 8. Хочу пропатчить iproute2 (на предмет полных 16bit realms) , но возможно есть какие-то подводные камни про которые не знаю - почему всеже в userspace 8bit? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 21 октября, 2013 · Жалоба Если не секрет, как вы используете realm-ы? Я знаю только один юзкейс - считать трафик по направлениям - ix, аплинк, пиринг, но таких направлений много меньше, чем 2^16 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
evil-man Опубликовано 21 октября, 2013 · Жалоба Покажите команды, которые вы пытаетесь выполнить, и вам не хватает размерности realm? По диагонали глянул код iproute - везде используются все 32 бита realm. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 21 октября, 2013 · Жалоба s.lobanov realm'ы намного быстрей, чем ipset hash:net, практически бесплатные. Было время, я выделял так трафик с/на IX и MARK'ил его в iptables - была просто дополнительная куча маршрутов на дефолт. Наверное, при желании, можно использовать вместо tc hash :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 21 октября, 2013 (изменено) · Жалоба 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).. Изменено 21 октября, 2013 пользователем alex_001 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 22 октября, 2013 (изменено) · Жалоба По крайней мере в ядро оно добавляется: # 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 Изменено 22 октября, 2013 пользователем vitalyb Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 13 марта, 2014 · Жалоба Немного некропост , но всеже :).. Еще есть ограничения в route classifier , там тоже 255 гвоздями приколочено. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...