Jump to content
Калькуляторы

route realm linux >8bit

Внутри ядра linux realm 32х битный (по 16 src,dst), iproute2 понимает только 8.

Хочу пропатчить iproute2 (на предмет полных 16bit realms) , но возможно есть какие-то подводные камни про которые не знаю - почему всеже в userspace 8bit?

Share this post


Link to post
Share on other sites

Если не секрет, как вы используете realm-ы? Я знаю только один юзкейс - считать трафик по направлениям - ix, аплинк, пиринг, но таких направлений много меньше, чем 2^16

Share this post


Link to post
Share on other sites

Покажите команды, которые вы пытаетесь выполнить, и вам не хватает размерности realm? По диагонали глянул код iproute - везде используются все 32 бита realm.

Share this post


Link to post
Share on other sites

s.lobanov

realm'ы намного быстрей, чем ipset hash:net, практически бесплатные. Было время, я выделял так трафик с/на IX и MARK'ил его в iptables - была просто дополнительная куча маршрутов на дефолт. Наверное, при желании, можно использовать вместо tc hash :)

Share this post


Link to post
Share on other sites

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 by alex_001

Share this post


Link to post
Share on other sites

По крайней мере в ядро оно добавляется:

# 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 by vitalyb

Share this post


Link to post
Share on other sites

Немного некропост , но всеже :).. Еще есть ограничения в route classifier , там тоже 255 гвоздями приколочено.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this