Перейти к содержимому
Калькуляторы

route realm linux >8bit

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

s.lobanov

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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)..

Изменено пользователем alex_001

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

# 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 

Изменено пользователем vitalyb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.