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

Посидел на досуге и дописал модуль RAWNAT для xtables-extensions, с целью улучшения работы 1-to-1 ната. Теперь можно создать пару правил SNAT/DNAT, а сопоставления IP заносить в отдельные таблицы, хранящиеся в памяти модуля, через специальную userspace-утилиту. Это гораздо удобнее, чем создавать миллион правил для всех подключенных клиентских IP. Пишу здесь, т.к. именно это и делает lisg.

 

Результат - при трафике 2 гигабита и 4-х ядрах самое загруженное ядро - 20%. Можно на десятку теперь переходить. Если кому интересно, могу выложить патч здесь. К lisg нужно будет прикручивать отдельно, т.к. у нас другое решение, но там не должно быть ничего сложного.

 

А есть у кого этот патч попробовать?

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


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

Abram, в check_sessions небольшой косяк

Если ищем ип 1.1.1.1, в списке его нет, но есть, например, 1.1.1.11 или 1.1.1.115, скрипт решит, что всё ок

нужно грепать с аргументом -x

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


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

Wingman,

Спасибо :). Я подозревал, но не мог отловить.

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


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

kernel: ipt_ISG: Lost packet during sending data to listener (err=-11)

пролетает в логах, что это ?

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


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

Читайте реадми и применяйте сисцтл которые там рекомендованы.

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


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

To enable reliable communications between userspace and kernel, do:

   echo "1048576" > /proc/sys/net/core/rmem_max

Otherwise there will be some problems printing long session lists.

спасибо за пинок =)

 

к сожалению ситуация такая же =\

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

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


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

Увеличте ещё в 10 раз. Если останется - то см исходники на предмет условий генерации сообщения

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


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

поставил 10 миллионов, ночью проверю, если останется - буду ставить lisg поновее

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


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

Очень плохо что такой проект забросили. сейчас собираюсь ставить это чудо в продакшн, в плане перевести 17к онлайна на lISG. В тестовых условиях всё пока отлично.

плохо что так и не реализован L4 редирект в ядре.

Abram, ты ещё общаешься с Олегом? собирается он возвращаться к проекту?

было бы ещё прикольно иметь возможность хранить связку класс_трафика-скорость в базе радиуса и иметь возможность по CoA изменить скорость на определённый класс. пример: юзер под своей учёткой может авторизовывать сколько угодно IP и может сам задавать (прямо в битах/с) полосу для каждого из ипов так, чтобы суммарно всё уложилось в его тарифный план. грубо говоря можно было бы дать возможность юзеру в процентном соотношении от тарифного плана задать скорость на определённый адрес. проблема заключается в том, что есть ещё и локальные ресурсы, которые не надо полисить по другим принципам. соответственно совсем от сервисов не откажешься. а назначать скорость на класс трафика считаю даже более удобным, чем забивать его жестко в сервисе в конфиге isg. ведь для реализации подобной идеи хотя бы с приблежением, нужно наплодить уйму сервисов.

есть сторонники? или я чего то не понимаю?

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

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


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

Вы же не на L2 юзеров на тазике терминируете? Локальные ресурсы можно роутить до ISG

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


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

при 17к можно Олега и нанять на доработки и поддержку :)

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


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

я для примера привёл. суть в том что в любом случае остаются классы трафика, которые надо полисить на других скоростях. да и локальную маршрутизацию на свитчи переложить я пока не готов. мы используем к сожалению длинки, и сейчас например в dgs-3620 наблюдается стойкая утечка памяти: раз в два месяца полностью отваливается L3 на свитче с сохранением L2 коммутации. поэтому пока что критический трафик роутят в ядре крутые фряшные серваки. вообще ведётся перевод на L3 свитчинг, но ввиду того что длинк не является каталистом, сделать всё как хочется не получится сразу. сейчас всё работает на PPPoE и влан на район с 1к абонентами, хочу всё сделать по нормальному. на каждом районе уже стоит L3 свитч.

 

а от платной поддержки Олегом этого проекта, при выпуске его в продакшн, я не думаю что моё начальство отказалось бы. сам я увы на перле пишу мало и модули ядра не писал, а времени разбираться нету.

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

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


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

Мы бы тоже денег заплатили, если бы функционал устраивал :)

 

З.Ы. 3620 с прошивкой 1.2 или 2.0?

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


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

Abram, ты ещё общаешься с Олегом? собирается он возвращаться к проекту?

Давно уже не разговаривал.

Попробуй оставить тикет с фичреквестом на bitbucket-е - он время от времени туды заглядывает.

На крайняк можно дописать еще один радиус атрибут, который будет создавать класс.

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


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

З.Ы. 3620 с прошивкой 1.2 или 2.0?

2.00.B037 / B041

боремся сейчас с техподдержкой длинка. раз в два месяца высылаю им запрошенный дебаг и дампы памяти свитча

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


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

Ставьте 1.2, там MPLS, и полвина CLI от цыски...

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


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

в данный момент меня интересует OSPF и PIM-SM они на этой прошивке работают стабильно? вышлите пожалуйста прошивку если не сложно

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

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


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

Помогите разобраться.

Стенд - Debian 6, две сетевые карты интеловские, все собрано по инструкции, для удобства теста установил радиус на этой же тачке.

Скорости задаю напрямую, не по сервисам:

 

Sending Access-Request of id 100 to 10.20.0.105 port 18012

User-Name = "10.20.0.108"

User-Password = "10.20.0.108"

NAS-IP-Address = 127.0.1.1

NAS-Port = 1

rad_recv: Access-Accept packet from host 10.200.0.105 port 18012, id=100, length=64

Cisco-Account-Info = "QU;6291456;1179648;D;6291456;1179648"

 

Сессия поднимается, показывается в консоли:

User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags

10.20.0.108 0.0.0.0 Virtual1 49F2DA1291D5093C 905 40497819 30350407 6291456 6291456 Undefined A

 

 

А вот дальше идут совсем непонятки. Тот же самый SpeedTest.net на прием показывает 6 М/с а вот на передачу - от 8 до 30 М/с...

Сначала были мысли что чтото намудрил с правилами iptables, но в них пока только 3 строчки:

 

#!/bin/bash

#shutdown -r +20

IPTABLES='iptables'

# Определяем интерфейсы

EXTIF='eth0'

# Включаем форвардинг ip в ядре.

/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

# Сбросить правила и удалить цепочки

$IPTABLES -F

$IPTABLES --flush

$IPTABLES -t nat -F

$IPTABLES -t mangle -F

$IPTABLES -X

$IPTABLES -t nat -X

$IPTABLES -t mangle -X

# Включаем маскарадинг для разрешения доступа в интернет

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s 10.20.0.0/24 -j MASQUERADE

$IPTABLES -A FORWARD -s 10.20.0.0/24 -j ISG --session-init

$IPTABLES -A FORWARD -d 10.20.0.0/24 -j ISG

 

Рядом стоит шейпер на FreeBSD - тот же тестовый комп показывает через него все четко, 6/6 мегабит...

 

 

Танцы с бубном показывают, что если руками подбирать значение burst то добиться хотя бы более менее вменяемых результатов можно, но строчка в rеаdme:

Cisco recommended value for burst = cir / 8 * 1.5

заставляет сомневаться в разумности такого подхода...

 

Подскажите куда копать? Или что я делаю не так?

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


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

# Включаем маскарадинг для разрешения доступа в интернет

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s 10.20.0.0/24 -j MASQUERADE

$IPTABLES -A FORWARD -s 10.20.0.0/24 -j ISG --session-init

$IPTABLES -A FORWARD -d 10.20.0.0/24 -j ISG

 

попробуйте в последней строке добавить --init-mode dst

по-умолчанию --init-mode src подставляется

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


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

попробуйте в последней строке добавить --init-mode dst

по-умолчанию --init-mode src подставляется

 

Пробовал, но --init-mode dst нужен если сначала будет запрос из мира на комп - а по моим правилам сессия должна подняться при запросе С компьютера. Автор подсказал что для скоростей > 2 Мбит/с для burst лучше использовать коэффициент не 1,5 а 0,25. Ну и подразобравшись в различиях понятий шейпинг и полисер в общем то пришел к тому что шейпинг - он скорость показывает более четко, чем полисер, по показаниям по крайней мере speedtest.net. Но при этом шейпинг более ресурсоемкий вариант котроля скорости чем полисер. ДА! автор использует СВОЙ вариант (точнее - вариант полисера по RFC "с одним ведром") полисера, а не то что встроено в ядро, поэтому тема, что режеться только исходящая скорость НЕ ПРИМЕНИМА к Linux ISG (Это для тех случаев когда полисер расположен там же где NAT и возникают вдруг какие то непонятки) Так вот, он (isg полисер) работает не так "красиво" как стандарные линуховские решения, зато в силу своей простоты позволяет резать больше сессий и шире полосу пропускания - короче (цитирую смотрите выше в форуме) - масс полисинг. :)

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


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

 

Пробовал, но --init-mode dst нужен если сначала будет запрос из мира на комп - а по моим правилам сессия должна подняться при запросе С компьютера.

 

За создание сессии отвечает как раз --session-init.

А вот --init-mode как раз задает, по src или по dst нужно искать сессию. не укажите --init-mode dst - в dst полисер трафик не попадет.

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


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

Здравствуйте!

 

Подскажите как правильно прописать сервис в lISG - описываю сервис в конфиге:

$cfg{srv}{Speed2Mb}{rate_info} = "QD;2048000;384000;U;2048000;384000";

$cfg{srv}{Speed2Mb}{traffic_classes} = [ "test_net" ];

$cfg{srv}{Speed10Mb}{rate_info} = "QD;10240000;1600000;U;10240000;1600000";

$cfg{srv}{Speed10Mb}{traffic_classes} = [ "test_net" ];

 

авторизация проходит

User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags

91.xx.yy.254 0.0.0.0 Virtual1 7F6DB771E0C8F1D2 577 0 0 0 0 Undefined A

но сервис к сессии не применяется, хотя в самой системе он есть.

 

root@Router:/usr/local/ISG/bin# ./ISG.pl show_services Virtual1

User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags

91.xx.yy.254 0.0.0.0 Virtual1 4804D37FD0E238B5 0 0 0 2048000 2048000 Speed2Mb SO

91.xx.yy.254 0.0.0.0 Virtual1 C842F7A0C10B994E 0 0 0 10240000 10240000 Speed10Mb S

Если передавать параметры скорости напрямую, не через сервисы, все работает нормально.

Подскажите в какую сторону копать.

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


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

Вопрос снят, неправильно описал сервис, указав только локальные адреса.

Заработало вот так:

$cfg{srv}{Speed2Mb}{rate_info} = "QD;2048000;384000;U;2048000;384000";

$cfg{srv}{Speed2Mb}{traffic_classes} = [ "test_net", "global" ];

$cfg{srv}{Speed10Mb}{rate_info} = "QD;10240000;1600000;U;10240000;1600000";

$cfg{srv}{Speed10Mb}{traffic_classes} = [ "test_net", "global" ];

где global 0.0.0.0/0

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


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

Join the conversation

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

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

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

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

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

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

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