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

Поделитесь идеологией vlan-per-user + qinq. В идеале порт агрегации на один коммутатор доступа, тогда все ясно - svlan на коммутатор, cvlan на клиента. А если за портом агрегации куст из нескольких свиче доступа, как поступаете? svlan на куст или по прежднему на коммутатор, но тогда нужен доступ с поддержкой qinq...

svlan на аггрегацию.

Ведем учёт cvlan-ов скриптом в MySQL-базе.

При генерации конфига для свитча доступа автоматом добавляются на аплинки все "соседние" cvlan.

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


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

Чем занимается accel? Как это можно поглядеть?
попробуй perf

а лучше callgrind

К сожалению я от этого довольно далек.

Можешь озвучить условия проверки(дебаг-релиз сборка софта и ядра), нужные тестовые пакеты и в идеале строки запуска утилит?

strace и perf top на релизной конфигурации запускал, ничего интересного не увидел.

 

 

[root@ipoe1 ~]# strace -c -p 26468
Process 26468 attached - interrupt to quit
^CProcess 26468 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    2.350000     1175000         2         2 rt_sigtimedwait
 0.00    0.000000           0         2         2 rt_sigreturn
------ ----------- ----------- --------- --------- ----------------
100.00    2.350000                     4         4 total

 

 

 

 

 

[root@ipoe1 ~]# perf top -p 26468
19.42%  libpthread-2.12.so  [.] 0x000000000000c182
 6.29%  [kernel]            [k] _raw_spin_lock_irq
 5.53%  libpthread-2.12.so  [.] pthread_spin_lock
 4.55%  [kernel]            [k] _raw_spin_lock
 3.70%  libtriton.so        [.] triton_thread
 1.76%  libtriton.so        [.] mempool_free
 1.47%  libtriton.so        [.] triton_context_call
 1.36%  libtriton.so        [.] mempool_alloc
 1.30%  [ip_tables]         [k] ipt_do_table
 1.15%  [kernel]            [k] __netif_receive_skb_core
 1.14%  [kernel]            [k] try_to_wake_up
 1.07%  [cls_u32]           [k] u32_classify
 1.00%  [bnx2]              [k] bnx2_rx_int

Samples: 4K of event 'cycles', Event count (approx.): 282284945, DSO: libpthread-2.12.so
76.29%  [.] 0x000000000000c182                                                                                                                                                ◆
17.02%  [.] pthread_spin_lock                                                                                                                                                 ▒
 2.31%  [.] pthread_mutex_lock                                                                                                                                                ▒
 1.18%  [.] pthread_mutex_unlock                                                                                                                                              ▒
 0.98%  [.] __libc_sigwait                                                                                                                                                    ▒
 0.72%  [.] pthread_kill                                                                                                                                                      ▒
 0.53%  [.] __pthread_enable_asynccancel                                                                                                                                      ▒
 0.52%  [.] __pthread_disable_asynccancel                       

 

 

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


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

У кого взлетел accel c shared=1 mode=L2?

Выдача адресов dhcp-модулем freeradius, авторизация freeradius.

IP реальные.

У меня что-то не взлетает.

Есть кто, кому конфиг показать и ткнуть на бока?

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


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

xeb,

static void parse_attr(struct rad_attr_t *attr, int dir, int *speed, int *burst, int *tr_id)

else if (attr->attr->type == ATTR_TYPE_INTEGER)

*speed = attr->val.integer;

 

ИМХО надо

else if (attr->attr->type == ATTR_TYPE_INTEGER)

*speed = conf_multiplier * attr->val.integer;

 

Сорри, что не патч, но помоему я его оформлять дольше буду, чем расскажу тут :)

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


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

Сорри, что не патч, но помоему я его оформлять дольше буду, чем расскажу тут :)

Это слишком большое изменение. Здесь pull request надо.

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


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

Поделитесь идеологией vlan-per-user + qinq. В идеале порт агрегации на один коммутатор доступа, тогда все ясно - svlan на коммутатор, cvlan на клиента. А если за портом агрегации куст из нескольких свиче доступа, как поступаете? svlan на куст или по прежднему на коммутатор, но тогда нужен доступ с поддержкой qinq...

svlan на аггрегацию.

Ведем учёт cvlan-ов скриптом в MySQL-базе.

При генерации конфига для свитча доступа автоматом добавляются на аплинки все "соседние" cvlan.

А если монтажник сменил порт клиенту, как вы регистрируйте клиента?

 

Если я не отдаю атрибут DCHP-Router-IP-address , то клиент не может получить IP. Отдаю IP из радиус.

man accel-ppp.conf

[ipoe]
 gw-ip-address=x.x.x.x/mask
             Specifies address to be used as server ip address if radius can assign only client address. In such case if client address
             is matched network and mask then specified address and mask will be used. You can specify multiple such options.

 

Поделитесь идеологией vlan-per-user + qinq. В идеале порт агрегации на один коммутатор доступа, тогда все ясно - svlan на коммутатор, cvlan на клиента. А если за портом агрегации куст из нескольких свиче доступа, как поступаете? svlan на куст или по прежднему на коммутатор, но тогда нужен доступ с поддержкой qinq...

Спасибо! за gw-ip-address=x.x.x.x/mask , решило проблему , теперь не отдаю DHCP-Mask и Router-IP-Address.

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

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


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

Проявилась сегодня проблемка. Клиенты перестали получать IP. Захожу cмотрю show sessions, все сессии finish и не мог скинуть их с сервера. Перезапустил , все заработало.

 

 

[ipoe]
verbose=5
username=ifname
lease-time=60
max-lease-time=180
shared=0
ifcfg=0
mode=L2
start=dhcpv4
proxy-arp=0
proto=100
attr-dhcp-client-ip=Framed-IP-Address
#attr-dhcp-client-ip=DHCP-Client-IP-Address
#attr-dhcp-router-ip=DHCP-Router-IP-Address
#attr-dhcp-mask=DHCP-Mask
gw-ip-address=172.30.0.29/16

attr-l4-redirect=L4-Redirect


l4-redirect-ipset=debtors

interface=vlan2000
interface=vlan2001
interface=vlan2002
interface=vlan2003

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


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

А как работает accel-ppp с IPv6 в режиме IPoE?

Собираемся делать dual-stack с shared=1, mode=L2, vlan-mon.

Изменено пользователем mr.Scamp

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


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

ipv6 пока только в проекте

Я бы тоже не отказался от работающего v6, пора уже хотя бы в тестовом виде начинать внедрение.

 

P.S. неделю работает IPOE на 1.8.0, vlan per user, полет отличный.

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


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

Спасибо :)

 

Еще один вопрос новичка - а как установить модуль ядра ipoe на wheezy?

sasha@bras1:~/src/accel-ppp-code/build$ sudo make -C /usr/src/linux-headers-3.2.0-4-amd64/ M=/home/sasha/src/accel-ppp-code/build/drivers/ipoe/drivers/ipoe modules_install
make: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64'
 DEPMOD  3.2.0-4-amd64
Warning: you may need to install module-init-tools
See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
make: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64'

Модуль собирается, но не ставится в /lib/modules. Его нужно руками копировать?

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


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

Спасибо :)

 

Еще один вопрос новичка - а как установить модуль ядра ipoe на wheezy?

sasha@bras1:~/src/accel-ppp-code/build$ sudo make -C /usr/src/linux-headers-3.2.0-4-amd64/ M=/home/sasha/src/accel-ppp-code/build/drivers/ipoe/drivers/ipoe modules_install
make: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64'
 DEPMOD  3.2.0-4-amd64
Warning: you may need to install module-init-tools
See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
make: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64'

Модуль собирается, но не ставится в /lib/modules. Его нужно руками копировать?

можна и руками

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


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

ACCEL_PPP_VERSION "92aa52c116cdd1a5df42c1437fe9d68b3a1c122b"

 

Ошибочка закралась у вас:

 

/accel-ppp-code/accel-pppd/logs/log_pgsql.c

 

--- log_pgsql_old.c 2014-06-15 11:28:43.502592904 +0300

+++ log_pgsql.c 2014-06-15 11:24:10.627911936 +0300

@@ -86,7 +86,7 @@

sleeping = 1;

spin_unlock(&queue_lock);

if (need_close) {

- triton_md_unregister_handler(&pgsql_hnd);

+ triton_md_unregister_handler(&pgsql_hnd, 1);

PQfinish(conn);

conn = NULL;

triton_context_unregister(&pgsql_ctx);

@@ -267,7 +267,7 @@

{

spin_lock(&queue_lock);

if (sleeping) {

- triton_md_unregister_handler(&pgsql_hnd);

+ triton_md_unregister_handler(&pgsql_hnd, 1);

PQfinish(conn);

conn = NULL;

triton_context_unregister(&pgsql_ctx);

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


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

Коллеги , помогите решить задачку. Планирую переводить на IPoE , интересует вопрос. Например логина eth1.1500.1 нет в базе, как мне отдать клиенту IP из спец пула чтобы кинуть на старицу регистрации. У кого так реализовано?

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


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

Коллеги , помогите решить задачку. Планирую переводить на IPoE , интересует вопрос. Например логина eth1.1500.1 нет в базе, как мне отдать клиенту IP из спец пула чтобы кинуть на старицу регистрации. У кого так реализовано?

Это реализуется на стороне биллинга. У вас какой биллинг?

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

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


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

Коллеги , помогите решить задачку. Планирую переводить на IPoE , интересует вопрос. Например логина eth1.1500.1 нет в базе, как мне отдать клиенту IP из спец пула чтобы кинуть на старицу регистрации. У кого так реализовано?

Это реализуется на стороне биллинга. У вас какой биллинг?

самописный, расскажите логику , объясню программеру он впилит. Я пока до конца не въеду.

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


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

roysbike

Логика - радиус должен вместо отбоя неизвестному логину отвечать ok и давать ip из гостевого блока.

У меня радиус отвечает ok всегда, а выдачу нужных адресов обеспечивает самописный dhcp-сервер, конечная реализация не приципиальна.

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


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

самописный, расскажите логику , объясню программеру он впилит. Я пока до конца не въеду.

Неавторизованным обманентам выдается Access-Accept + IP из спец. пула.

Всё, что из этого пула, на NAS-е редиректится на страницу "введи логин". Пользователь вводит логин-пароль.

После правильного ввода следует оборвать сессию (посредством CoA либо отстуствием ответа из радиуса на Interim-Update).

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


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

самописный, расскажите логику , объясню программеру он впилит. Я пока до конца не въеду.

Неавторизованным обманентам выдается Access-Accept + IP из спец. пула.

Всё, что из этого пула, на NAS-е редиректится на страницу "введи логин". Пользователь вводит логин-пароль.

После правильного ввода следует оборвать сессию (посредством CoA либо отстуствием ответа из радиуса на Interim-Update).

странице авторизации както доставляется инфа номер интерфейса + мак? Интересует ситуация именно Л2-коннектед & влан на абонента

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

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


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

странице авторизации както доставляется инфа номер интерфейса + мак?

А зачем если эти данные знает биллинг (сессия-то поднята)?

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


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

а если выдать reject, accel сам выдаст ип из своего гостевого пула, есть ли способ передать биллингу username?

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


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

странице авторизации както доставляется инфа номер интерфейса + мак?

А зачем если эти данные знает биллинг (сессия-то поднята)?

как зачем? аццель авторизует абнента по qnq интерфейсу + мак. Клиент поменял мак или вообще еще не подключался ниразу, редиректим на страницу авторизации в биллинг. В большинстве биллингов доступ к учетке авторизуется через логин/пароль, абонент вводит логин/пароль. как странице авторизации передать ЕЩЕ И qnq + мак, чтобы определить валидность этой связки? Есть подозрение - вытащить через выданный IP на страничке qnq+mac из текущей сессии?

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

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


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

вытащить через выданный IP на страничке qnq+mac из текущей сессии

ну да

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


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

Клиент поменял мак или вообще еще не подключался ниразу, редиректим на страницу авторизации в биллинг. В большинстве биллингов доступ к учетке авторизуется через логин/пароль, абонент вводит логин/пароль. как странице авторизации передать ЕЩЕ И qnq + мак, чтобы определить валидность этой связки?

Биллинг выдает гостевой адрес, поднимается гостевая сессия. При вводе логина-пароля - известен айпи, т.е. известна сессия, т.е. известны логин и мак...

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


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

Коллеги , в продолжении темы. Настроил freeradius, чтобы при смене mac-address , кидало на страницу регистрации. Например клиент сменил устройство или монтажник сменил порт клиенту. Если auth прошла, то клиенту отдается Framed-IP-Address из базы. Если User-Name базе не известен, то разрешаем auth и отдаю Framed-Pool- guestpool в accel-ppp заведен guestpool. Вопрос, как мне быть , если Username например vlan1500.1 есть в базе, но не совпадает mac-address , клиенту отдается Framed-IP-Address и Framed-Pool, как мне выпилить Framed-IP-Address. Пока в голову не приходит.

 

 

unlang в default

if ("%{sql:SELECT COUNT(*) FROM `radcheck` WHERE username = '%{User-Name}' AND mac = '%{Calling-Station-Id}'}" >= 1 && NAS-Identifier == "ipoe") {
ok

update control {
        Auth-Type := "Accept"
}
}
elsif (NAS-Identifier == "mpd") {
ok
}

else {
update control {
        Auth-Type := "Accept"
}


update reply {
         Framed-Pool := "guestpool"
         Reply-Message = "Hello , last MAC-address + %{User-name} not correct or  %{User-Name} not registered"
}
}

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


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

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


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

Join the conversation

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

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

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

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

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

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

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