Jump to content

Recommended Posts

Posted

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

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

Posted

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

Posted

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

Posted

s.lobanov

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

Posted (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 by alex_001
Posted (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 by vitalyb
  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...