ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архив за Март, 2010

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Задача

Ограничить клиента (блок IP адресов) по полосе на пограничном BGP маршутизаторе  Juniper M7i.

Готовых решений в интернете и в доках не нашел, скомпилировал свое на базе найденного и док.

Решение

Создаем полисер на нужную полосу пропускания (5Mbit в данном случае) и правила firewall`а для выделения нужной сетки по образцу:

http://www.juniper.net/techpubs/software/junos/junos42/swconfig-interfaces42/html/firewall-config18.html

получилось примерно так:

policer 5mp {
   if-exceeding {
      bandwidth-limit 5m;
      burst-size-limit 100k;
   }
   then discard;
}
family inet {
    filter lokalka-in {
        term 5mshape {
            from {
                source-address {
                    x.x.x.x/28;
                }
            }
            then policer 5mp;
        }
        term 5mshape2 {
            from {
                destination-address {
                    x.x.x.x/28;
                }
            }
            then policer 5mp;
        }
        term normal {
            then accept;
        }
    }

    filter lokalka-out {
        term 5mshape {
            from {
                destination-address {
                    x.x.x.x/28;
                }
            }
            then policer 5mp;
        }
        term 5mshape2 {
            from {
                source-address {
                    x.x.x.x/28;
                }
            }
            then policer 5mp;
        }
        term normal {
            then accept;
        }
    }
}

Добавил его на  смотрящий внутрь интерфейс Juniper`а :

ge-0/3/0 {
    vlan-tagging;
    unit 0 {
        vlan-id 1025;
        family inet {
            filter {
                    input lokalka-in;
                    output lokalka-in;
            }
            address myIPaddress/27;
        }
    }
}

Все 🙂

может быть можно сделать красивее,или менее напряжно для Juniper’a — коментарии приветсвуются.

Автор:  stalex

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 7, среднее: 4,71 из 5)
Загрузка...
Отправить на почту Отправить на почту

По многочисленным наблюдениям системных администраторов различных компаний
предоставляющих доступ к сети интернет, с начала февраля 2010 года наблюдается
ежедневный лавинообразный рост количества пакетов в сети, их фрагментация, а
также существенный рост исходящего трафика. Данная проблема связана с новой
версией торрент-клиента uTorrent вышедшего 3 февраля 2010 года с поддержкой
протокола uTP, работающего поверх UDP. Призванный снизить нагрузку на
провайдеров протокол uTP в результате привел к обратному эффекту.

Для относительно безболезненной для клиента фильтрации uTP на шлюзе под
управлением Linux рекомендуется использовать следующее правило:

/sbin/iptables -I FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF AB|" --algo kmp \
      --from 40 --to 44 -m statictic --mode random --probability 0.90 -j DROP

Мониторинг работы правила:

iptables -L FORWARD -nv | grep statist

Для FreeBSD правило будет выглядеть следующим образом:

ngctl mkpeer ipfw: bpf 2 main
   ngctl name ipfw:2 utp_filter
   ngctl msg utp_filter: setprogram { thisHook=\"main\" ifMatch=\"\" ifNotMatch=\"main\" bpf_prog_len=12 bpf_prog=[
      { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 }
      { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 }
      { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

   ipfw add 2 netgraph 2 udp from any to any iplen 0-128

Мониторинг:

ngctl msg utp_filter: getstats \"main\"

Оригинал: http://www.opennet.ru/tips/info/2304.shtml

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 5, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Всем привет!

Очередная практическая задача по реализации транскодинга на AS5350xm.

Что такое транскодирование коротко можно прочитать здесь: http://en.wikipedia.org/wiki/Transcode

А сама задача появилась из цели экономии средств отдаваемых поставщикам услуг.

Существующая схема услуг:

Поставщик А <—> Е1 <—> Арендованный канале Е1 у поставщика Б <—> Е1 <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> Клиенты

Посчитав затраты, было решено отказаться от арендованного канала Е1 поставщика Б, а услуги от поставщика А решено было получать по VoIP.  После того как вопрос был согласован, постащик А выдал ТУ на подключение услуги, в связи с чем новая схема должна было стать такой:

Поставщик А <—> VoIP (H323, g729) <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> Клиенты

Просмотрев сайт www.cisco.com, было обнаружено, что необходимое транскодирование g729 <->  g711 можно реализовать без каких либо проблем при наличии IOS версий выше 12.4(20)Т3, 12.4(22)YB и 15.0(1)М (номера 13 и 14 для  IOS компанией Cisco не используются, т.к.  эти числа считаются «не счастливыми» в культурах разных  стран).  Но при отсутствии оной пришлось реализовать следующую схему:

Поставщик А <—> VoIP (H323, g729) <—> Cisco AS5350xm <—> Е1 (loop) <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> Клиенты

Т.е. принимаем звонок от поставщика отправляем его в Е1, «заворачиваем» его обратно и далее он «уходит»  в VoIP уже с необходимыми нам параметрами.  Сразу оговорюсь, что такая схема работает при наличии двух свободных Е1 на вашем маршрутизаторе.

Для начала нам потребуется кабель с разъемами RJ-45 и следуюзщей «распиновкой»:

E1 —- E1

1  —- 4

2 —- 5

На моем маршрутизаторе были свободны порты E1 3/2 и 3/3. Соединяем порты созданным кабелем и приступаем к настройкам.

Задаем параметры физических интерфейсов Е1:
!
controller E1 3/2
framing NO-CRC4
pri-group timeslots 1-31
!
controller E1 3/3
framing NO-CRC4
pri-group timeslots 1-31

Затем настройки D-каналов:

!
interface Serial3/2:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn protocol-emulate network
isdn incoming-voice modem
!
interface Serial3/3:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn incoming-voice modem

И проверяем состояние наших Е1:

#show  controllers e1

E1 3/2 is up.
Applique type is Channelized E1 — balanced
No alarms detected.
alarm-trigger is not set
Version info of slot 3:  HW: 519, PLD Rev: 6
Framer Version: 0x9

E1 3/3 is up.
Applique type is Channelized E1 — balanced
No alarms detected.
alarm-trigger is not set
Version info of slot 3:  HW: 519, PLD Rev: 6
Framer Version: 0x9

Далее настраиваем необходимые пиры (сразу будут указаны различные pattern направлений, объяснение будет ниже):

POTS:

Настройки пиров для нашей «петли»

!
dial-peer voice 3 pots
description ###INCOMING FROM OUR VoIP###
incoming called-number .
direct-inward-dial
port 3/2:D
no register e164
!
dial-peer voice 4 pots
description ###INCOMING FROM PROVIDER-A###
incoming called-number .
direct-inward-dial
port 3/3:D
no register e164

! — этот пир «отправляет» звонки из нашей VoIP сети в loop

!
dial-peer voice 800 pots
description ###FROM OUR VoIP TO LOOP###
destination-pattern 011.T
progress_ind setup enable 3
progress_ind alert enable 8
port 3/2:D

! — этот пир «отправляет» звонки из сети VoIP Поставщика А в loop

!
dial-peer voice 801 pots
description ###FROM PROVIDER-A TO LOOP###
destination-pattern 022.T
progress_ind setup enable 3
progress_ind alert enable 8
port 3/3:D

VoIP:

! — этот пир «принимает и отправляет» звонки из сети/в сеть VoIP Поставщика А

!
dial-peer voice 888 voip
description ###VoIP PROVIDER A###
translation-profile incoming FROM-PROVIDER-A-TO-LOOP
! —- подставляем необходимый префикс
destination-pattern 033.T
codec g729r8
session target ras ! —- наш шлюз регистрируется на гэйткипере постащика А (об этих настройках в другой статье)

incoming called-number 7…… ! —- для того чтобы звонок на наши номера прошел через этот пир и мы смогли подставить префикс
dtmf-relay h245-signal rtp-nte
fax-relay ecm disable
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback none
no vad

! — этот пир «принимает и отправляет» звонки из нашей сети/в наше сеть VoIP

!
dial-peer voice 700 voip
description ###OUR VOIP###
translation-profile incoming FROM-OUR-VoIP-TO-LOOP
! —- подставляем необходимый префикс

answer-address 4957……
! —- необходимо для того чтобы звонки от наших абонентов прошли через этот пир и мы подставили необходимый префикс
destination-pattern 4957……
session protocol sipv2
session target sip-server
codec g711alaw
fax-relay ecm disable
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback none
no vad

!
voice-port 3/3:D
translation-profile incoming FROM-LOOP-TO-PROVIDER-A
! —- подставляем необходимый префикс
disc_pi_off
input gain 3
echo-cancel coverage 32
cptone RU
music-threshold -45
bearer-cap Speech

Теперь собственно сама логика работы и ее реализация.

Входящие звонки со стороны Провайдера А мы принимаем и отправляем в поток 3/3, со стороны нашей сети все входящие звонки мы отправляем в поток 3/2.

При входящем звонке (направление звонка рассматриваем относительно AS5350xm) со стороны Провайдера А к набираемому номеру нам необходимо подставить префикс 022495, 022 — чтобы однозначно определить необходимый нам поток  3/3, а 495 приходится подставлять из-за того, что в нашей сети используются 10-ти значные АОНы, а провайдер присылает звонки на 7-ми значные.  Для однозначного определения входящего voip пира для звонка со стороны провайдера в пире 888 voip используется команда incoming called-number.  Звонок уходит в порт 3/3 согласно пиру 801, 022 при этом отрежется и из потока 3/2 придет вызов на номер 4957…… который смаршрутизируется согласно пиру 700 voip.

При входящем звонке со стороны нашей сети подставляем префикс 011 для отправки звонка в поток 3/2. Звонок уходит в порт 3/2 согласно пиру 800 pots. Чтобы однозначно определить входящий пир для нашей VoIP сети используется команда answer-address в пире 700 voip. Далее этот звонок «выходит» из 3/3 и для того, чтобы точно его отправить в сторону Поставщика А мы подставляем префикс 033 (возможно это излишне, но мы сразу предположим, что таких провайдеров может быть несколько) и звонок будет смаршрутизирован согласно пиру 888 voip.

Правила трансляции:

voice translation-rule 2
rule 1 /^7495\.*/ /011/
rule 2 /^\.*/ /011/
!
voice translation-rule 3
rule 1 /^\.*/ /022495/
!
voice translation-rule 4
rule 1 /^\.*/ /033/
!
voice translation-profile FROM-PROVIDER-A-TO-LOOP
translate called 3
!
voice translation-profile FROM-OUR-VOIP-TO-LOOP
translate called 2
!
voice translation-profile FROM-LOOP-TO-PROVIDER-A
translate called 4

На этом все, если, кому-то будет это полезным, буду рад. Жду Ваших комментариев и замечаний. Всех благ)

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.

Автор:  zaikini

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 8, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту