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

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

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

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

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

Share this post


Link to post
Share on other sites

Чем занимается 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                       

 

 

Share this post


Link to post
Share on other sites

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

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

IP реальные.

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

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

Share this post


Link to post
Share on other sites

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;

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Поделитесь идеологией 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.

Edited by roysbike

Share this post


Link to post
Share on other sites

Проявилась сегодня проблемка. Клиенты перестали получать 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

Share this post


Link to post
Share on other sites

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

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

Edited by mr.Scamp

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

Спасибо :)

 

Еще один вопрос новичка - а как установить модуль ядра 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. Его нужно руками копировать?

Share this post


Link to post
Share on other sites

Спасибо :)

 

Еще один вопрос новичка - а как установить модуль ядра 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. Его нужно руками копировать?

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Edited by Dimka88

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

roysbike

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Edited by ichthyandr

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by ichthyandr

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Коллеги , в продолжении темы. Настроил 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"
}
}

Share this post


Link to post
Share on other sites

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.