mpd-filter mpd-limit

Anonymous
2012-04-11
2013-03-27

  • Anonymous
    2012-04-11

    Задача пускать на список ip адресов минуя rate-limit и shape. Городить для каждого ngXX mpd-filter нецелесообразно. Можно ли и как, если можно, подцепить к mpd-filer таблицу из ipfw?

     
  • По входу mpd-filter применяется раньше чем ipfw, потому ничего сделать нельзя. По выходу теоретически можно заставить ipfw или кого-то еще маркировать трафик используя поле TOS/DSC, а потом заставить mpd-filter его проверять.

    С другой стороны, mpd поддерживает глобальные фильтры, которые можно задать в конфигурации и затем ссылаться на них при авторизации. Филтры все-равно будут создаваться на каждый интерфейс, но по крайней мере не будут каждый раз передаваться через RAIDIUS.

     

  • Anonymous
    2012-04-17

    благодарю! а где посмотреть пример включения в конфигурацию глобальных фильтров?

     
  • http://mpd.sourceforge.net/doc5/mpd18.html#18:
    set global filter num add fltnum flt
    set global filter num clear
        These commands define or clear traffic filters to be used by rules submitted by radius during authentication.

    Использовать их как обычно. Пространство номеров общее. При обращении сначала проверяется не передан ли фильтр с данным номером в RADIUS ответе, а если нет - проверяются глобальные. Таким образом глобальный фильтр при необходимости можно перебить специфичным.

     

  • Anonymous
    2012-04-17

    еще момент. не могу добиться избирательного ограничения скорости:
    в вэбморде на интерфейсе:

    ynamic routes via peer:
    IPFW pipes:
    IPFW queues:
    IPFW tables:
    IPFW rules:
    Traffic filters:
        1#2 : 'match src net 188.43.64.0/23'
        1#3 : 'match dst ip 10.16.6.246/32'
    Traffic limits:
        in#1    : 'flt1 pass'
        in#2    : 'all shape 512000 51202 pass'
        in#3    : 'all pass'
        out#1   : 'all rate-limit 512000 51202 pass'
    

    смотрю tcpdump через интерфейс: трафик идёт с 188.43.64.17. но применяется ограничение в 512кБит/с.
    где ошибка в фильтрах?

     
  • А с какой стороны ngX интерфейса какие сети? Фильтры построены как будто 188.43.64.0/23 у клиента, а 10.16.6.246/32 снаружи. Это так?

     

  • Anonymous
    2012-04-17

    нет. у клиента 10.16.6.246
    188.43.64.0/23 - сеть от которой планируется пропускать трафик без шейпирования.

     
  • Значит ты переврал все что можно:
    - in значит от клиента, а out в клиенту, тоесть чтобы пропустить без шейтов на клиента нужно править out;
    - несколько правил match в фильтре клеятся по ИЛИ, а не по И, а если у клиента один адрес, то вторая строка в фильтре не нужна совсем, так как будет истинной всегда и только все испортит.

     
  • Александр, при поднятии лимитов (ng_car и ng_bpf) что может сработать не так (отсутствие внутренних каких-нибудь буферов или ещё чего-нибудь), что хуки все будут подключены (по аналогии с другими) а трафика на интерфейсе не будет?
    на L2 интерфейсе сервера смотрю tcpdump-ом, вижу PPPoE Session фреймы, ip пакеты в мир от удалённой стороны, но на ngX интерфейсе пакеты эти не появляются.
    когда меняю mpd-filter и mpd-limit аттрибуты чтобы Mpd применил - mpd применяет и трафик начинает ходить (тоесть без разрыва сессии)
    выяснить пока не удалось конкретику (на каких нодах есть увеличение счетчиков и есть ли bpf-программы на bpf нодах) пользователю надо было инет срочно дать. попробую в следующий раз проверить счетчики и bpf программы
    это случается единицы, совсем единицы за ~30000 установленных сессий.

    лимиты выставляются вот так:

    Traffic filters :
        1#1 : 'match src host 191.203.38.18 and (dst net 17.25.252.0/22 or dst net 191.203.36.0/22 or dst net 191.211.192.0/22 or dst net 10.10.0.0/23 or dst host 1.2.3.4 or dst net 89.185.92.0/22 or dst net 92.240.208.0/23)'
        2#1 : 'match dst host 191.203.38.18 and (src net 17.25.252.0/22 or src net 191.203.36.0/22 or src net 191.211.192.0/22 or src net 10.10.0.0/23 or src host 1.2.3.4 or src net 89.185.92.0/22 or src net 92.240.208.0/23)'
        3#1 : 'match src host 191.203.38.18 and dst net 0.0.0.0/0'
        4#1 : 'match dst host 191.203.38.18 and src net 0.0.0.0/0'
        Traffic limits  :
            in#1#3092   : 'flt1 rate-limit 104857600 6553600 4369066 pass'
            in#3#3152   : 'flt3 rate-limit 12582912 786432 524288 pass'
            in#5    : 'all deny'
            out#2#3092  : 'flt2 rate-limit 104857600 6553600 4369066 pass'
            out#4#3152  : 'flt4 rate-limit 12582912 786432 524288 pass'
            out#6   : 'all deny'
    
     
  • Не знаю. Были когда-то жалобы что при каких-то очень редких условиях ng_car перестает пропускать трафик. Но на сколько я знаю до сути никто пока не докопался.

     
  • ясно, спасибо, уже направление. буду изучать код ng_car, попробую собрать больше информации.

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

     

  • Anonymous
    2012-04-17

    разобрался. благодарю за помощь!