Buni birinchi bo'lib call-markaz operatorlari sezadi. Mijoz uchinchi marta "Iltimos, qaytaring" deydi. Operator uzr so'raydi, uzuq-yuluq ovozni ilg'ashga urinadi va 3 daqiqada tugashi kerak bo'lgan suhbat 8 daqiqaga cho'ziladi. Buni 50 ta operator va kuniga 500 ta qo'ng'iroqqa ko'paytiring. Qo'ng'iroq sifatini kuzatmaslikning narxi ana shu.
Asterisk administratorlarining ko'pchiligi qo'ng'iroqlar sonini va navbatdagi kutish vaqtini kuzatadi. Ammo o'sha qo'ng'iroqlarning sifatini — jitter, packet loss, MOS, kodeklar ishini — kam odam nazorat qiladi. Bu qo'llanma shuni o'zgartiradi.
VoIP qo'ng'irog'ini "sifatli" qiladigan narsa nima?
Asterisk vositalariga o'tishdan oldin, qo'ng'iroq tiniq eshitiladimi yoki konserva bankasi ichidagi suhbatga o'xshaydimi — buni belgilab beradigan to'rtta metrikani tushunib olish kerak.
Latency (bir tomonlama kechikish)
Latency — ovoz paketlarining jo'natuvchidan qabul qiluvchiga yetib borish vaqti. U ovozni buzmaydi, u suhbatning o'zini noqulay qiladi: odamlar bir-birining gapini bo'la boshlaydi.
| Latency | Ta'siri |
|---|---|
| < 150ms | Sezilmaydi. Suhbat tabiiy ketadi. |
| 150-300ms | Sezilarli kechikish. Suhbatdoshlar bir-birining gapini bo'la boshlaydi. |
| > 300ms | Suhbat buziladi. Sun'iy yo'ldosh orqali gaplashayotgandek tuyuladi. |
Asterisk o'rnatilgan tizimlarda latency'ni PBX bilan SIP-trunk provayderi orasida o'lchang. Agar tizim o'z serveringizda ishlayotgan bo'lsa, bu odatda server bilan ITSP shlyuzi orasidagi uchastka.
Jitter (paketlar kechikishining o'zgaruvchanligi)
Jitter paketlar qanchalik notekis kelayotganini ko'rsatadi. Agar paketlar 20ms oralig'ida kelib, ba'zan bu oraliq 80ms gacha sakrasa — jitter yuqori. Natija: uzuq-yuluq ovoz, robotsimon nutq va gapdagi bo'shliqlar.
Asterisk jitter'ni o'rnatilgan jitter-bufer orqali tekislaydi. Ammo bufer — bu murosa: juda kichigi tebranishlarni tekislay olmaydi, juda kattasi kechikish qo'shadi.
rtp.conf dagi joriy jitter-bufer sozlamalarini tekshiring:
; /etc/asterisk/rtp.conf
[general]
rtpstart=10000
rtpend=20000
; Jitter buffer settings
jbenable=yes ; Enable jitter buffer
jbforce=no ; Don't force on all channels
jbmaxsize=200 ; Max jitter buffer size (ms)
jbresyncthreshold=1000 ; Resync threshold (ms)
jbimpl=adaptive ; Use adaptive jitter buffer
jbtargetextra=40 ; Extra delay for target (ms)
jblog=no ; Enable for debuggingadaptive implementatsiyasi bufer hajmini tarmoq holatiga qarab dinamik moslaydi. Agar jitter doimiy ravishda 30ms dan yuqori bo'lsa, fixed dan adaptive ga o'ting va jbmaxsize ni 200 ga oshiring.
Packet loss (paketlar yo'qolishi)
Har bir yo'qolgan paket — ovozning tushib qolgan bo'lagi. TCP asosidagi protokollardan farqli o'laroq, RTP (Real-time Transport Protocol) yo'qolgan paketni qayta yubormaydi: qayta yuborilgani yetib kelguncha, o'sha lahza o'tib bo'lgan bo'ladi.
| Packet loss | Ta'siri |
|---|---|
| < 1% | Ko'pchilik kodeklarda sezilmaydi |
| 1-3% | Vaqti-vaqti bilan chirsillash, yengil pasayish |
| 3-5% | Bo'shliqlar aniq eshitiladi, tinglash qiyinlashadi |
| > 5% | Suhbatlashish qiyin bo'lib qoladi |
Ba'zi kodeklar paket yo'qolishini boshqalardan yaxshiroq ko'taradi. Opus o'rnatilgan xatolarni oldindan tuzatish (FEC) hisobiga 5% gacha packet loss'ga chidaydi. G.711 da esa zaxira umuman yo'q — har bir yo'qolgan paket bo'shliqqa aylanadi.
MOS (Mean Opinion Score)
MOS jitter, latency va packet loss'ni 1.0 dan 5.0 gacha bo'lgan bitta raqamga jamlaydi:
| MOS | Sifat | Hayotiy taqqoslash |
|---|---|---|
| 4.3-5.0 | A'lo | Shahar telefon liniyasi sifati |
| 4.0-4.3 | Yaxshi | 4G tarmoqdagi mobil telefon |
| 3.5-4.0 | Qoniqarli | Yig'ilish xonasida karnay orqali suhbat |
| 3.0-3.5 | Yomon | Uyali aloqa zaif, lekin gapni tushunsa bo'ladi |
| < 3.0 | Yaroqsiz | Har 10 soniyada "Meni eshityapsizmi?" |
G.711 uchun nazariy maksimum — MOS 4.5. G.729 uchun esa mukammal sharoitda ham 3.92: siqish algoritmining o'zi sifatni pasaytiradi.
Asterisk CLI orqali qo'ng'iroq sifatini kuzatish
Asterisk qo'ng'iroq sifati ma'lumotlarini real vaqtda RTCP (Real-Time Control Protocol) statistikasi orqali beradi. Har bir faol RTP-oqim RTCP-paketlar almashadi va ularda jitter, packet loss hamda round-trip time uzatiladi.
Faol kanallar sifati
Suhbat davomida metrikalarni to'g'ridan-to'g'ri olish mumkin:
# List active channels
asterisk -rx "core show channels verbose"
# Show RTP stats for a specific channel
asterisk -rx "rtp show stats"rtp show stats buyrug'i har bir faol RTP-oqim bo'yicha joriy jitter, packet loss va round-trip time'ni chiqaradi. Sifat muammolarini o'sha zahoti tutish uchun uni eng band soatlarda ishga tushiring.
CDR va CEL dagi RTCP ma'lumotlari
Asterisk RTCP sifat ma'lumotlarini qo'ng'iroq yozuvlari bilan birga log qila oladi. Buni cdr.conf da yoqing va sifat metrikalarini bazaga yozish uchun CDR adaptive ODBC modulidan foydalaning:
; /etc/asterisk/cdr.conf
[general]
enable=yes
unanswered=yesBatafsilroq ma'lumot uchun Channel Event Logging (CEL) tizimini sozlang:
; /etc/asterisk/cel.conf
[general]
enable=yes
apps=dial,queue
events=ALLKanal o'zgaruvchilaridan sifatni olish
Har bir qo'ng'iroqdan so'ng Asterisk kanal o'zgaruvchilarini RTP statistikasi bilan to'ldiradi. Ularga dialplan'da murojaat qiling:
; In extensions.conf — log quality after each call
exten => h,1,NoOp(Call quality - RTP stats)
same => n,Set(JITTER=${CHANNEL(rtcp,all_jitter)})
same => n,Set(LOSS=${CHANNEL(rtcp,all_loss)})
same => n,Set(RTT=${CHANNEL(rtcp,all_rtt)})
same => n,NoOp(Jitter: ${JITTER} | Loss: ${LOSS} | RTT: ${RTT})
same => n,Set(CDR(jitter)=${JITTER})
same => n,Set(CDR(packet_loss)=${LOSS})
same => n,Set(CDR(rtt)=${RTT})CHANNEL(rtcp,...) funksiyasi joriy qo'ng'iroq yelkasi bo'yicha RTCP ma'lumotlarini beradi. Mavjud maydonlar:
- —
all_jitter— qo'ng'iroq davomidagi jitter (min/max/avg/stdev) - —
all_loss— paket yo'qolishi foizi - —
all_rtt— round-trip time - —
txcount/rxcount— jo'natilgan va qabul qilingan paketlar - —
txjitter/rxjitter— uzatish va qabul qilishdagi jitter
Qo'ng'iroq sifati tarixi va trendlarini ko'rish uchun bularni CDR bazangizga yozing.
Kodek tanlash va uning sifatga ta'siri
Kodek sifat shiftini belgilaydi. Hech qanday tarmoq optimizatsiyasi G.729 ni G.711 dek yangratmaydi.
| Kodek | Kanal kengligi | Maks. MOS | Packet loss'ga chidamliligi | Qayerda qo'llash |
|---|---|---|---|---|
| G.711 (ulaw/alaw) | 87.2 kbps | 4.5 | Past (< 1%) | LAN, keng kanallar |
| G.729 | 31.2 kbps | 3.92 | Past (< 1%) | WAN, tor kanallar |
| Opus | 6-510 kbps | 4.5+ | Yuqori (FEC bilan 5% gacha) | WebRTC, o'zgaruvchan tarmoqlar |
| G.722 | 87.2 kbps | 4.5 | Past (< 1%) | HD Voice, kengpolosali qo'ng'iroqlar |
| iLBC | 38.4 kbps | 4.14 | O'rtacha (2-3%) | Yo'qotishli tarmoqlar |
Kodeklar ustuvorligi sip.conf yoki pjsip.conf da sozlanadi:
; /etc/asterisk/pjsip.conf
[my-trunk]
type=endpoint
; ...
allow=!all,opus,g722,ulaw,alawAfzal ko'rgan kodekni birinchi qo'ying. Agar SIP-trunk provayderingiz Opus'ni qo'llab-quvvatlasa — o'shani tanlang: Opus tarmoq holatiga tez moslashadi va packet loss'ni har qanday qat'iy bitreytli kodekdan ancha yaxshi ko'taradi.
Kodek sifatini tekshirish
Qaysi kodek kelishilganini ko'rish uchun sip show channelstats (chan_sip) yoki PJSIP'ning shunga mos buyrug'idan foydalaning:
# For PJSIP
asterisk -rx "pjsip show channelstats"
# Output includes:
# BridgeId | Channel | Codec | Rx/Tx Count | Lost | Jitter | RTTAgar sizda doimiy ravishda G.729 kelishilayotgan bo'lsa-yu, G.711 kerak bo'lsa, trunk konfiguratsiyasini va allow/disallow tartibini tekshiring.
Tarmoq darajasida sifat monitoringi
Asterisk qo'ng'iroqlarga nima bo'lganini ko'rsatadi. Tarmoq monitoringi esa nima uchun bo'lganini ko'rsatadi.
RTCP-XR (kengaytirilgan hisobotlar)
Asterisk 13+ RTCP-XR ni qo'llab-quvvatlaydi — bu standart RTCP dan tashqari batafsil sifat metrikalarini beradi:
- —Burst/gap loss metrikalari (tasodifiy yo'qotishni ketma-ket yo'qotishdan ajratadi)
- —Round-trip delay
- —Signal va shovqin darajalari
- —R-factor (MOS hisoblanadigan boshlang'ich qiymat)
PJSIP da RTCP-XR ni yoqish:
; /etc/asterisk/pjsip.conf
[global]
type=global
; Enable RTCP-XR
send_rtcp_xr=yessngrep bilan monitoring
SIP signalizatsiyasini real vaqtda tahlil qilish uchun sngrep almashtirib bo'lmaydigan vosita:
# Install
apt-get install sngrep
# Capture live SIP traffic
sngrep -d eth0
# Filter specific calls
sngrep -c port 5060sngrep to'liq SIP zinapoya diagrammasini ko'rsatadi: INVITE, 100 Trying, 180 Ringing, 200 OK, ACK, BYE. Qo'ng'iroqlar uzilganda yoki sifat pasayganda, asosiy sabab aynan shu yerdan topiladi.
Navbatlarda nima sodir bo'layotganini taxmin qilishdan charchadingizmi?
Astervis sizning Asterisk PBX'ingiz uchun 30+ realtime grafik, operator KPI va CRM-integratsiya beradi. On-premise. 5 daqiqada o'rnatiladi. $119/oydan flat — operatorlar soni cheklanmagan.
RTP tahlili uchun tcpdump
RTP paketlarni yozib oling va Wireshark'da tahlil qiling:
# Capture RTP traffic (common port range)
tcpdump -i eth0 -w /tmp/rtp-capture.pcap portrange 10000-20000
# Run for 60 seconds during peak traffic
timeout 60 tcpdump -i eth0 -w /tmp/rtp-$(date +%Y%m%d-%H%M).pcap portrange 10000-20000Yozib olingan faylni Wireshark'da oching va Telephony > RTP > RTP Streams bo'limiga o'ting. Wireshark har bir oqim uchun jitter, packet loss va MOS ni hisoblab beradi. Vaqti-vaqti bilan paydo bo'ladigan sifat muammolarini aniqlashda bu — oltin standart.
Sifat bo'yicha proaktiv ogohlantirishlar
Reaktiv monitoring degani — muammo haqida siz mijozlardan eshitasiz. Chegaraviy qiymatlar asosida proaktiv alertlarni sozlang.
Chegaraviy qiymatlarga asoslangan monitoring skripti
Faol qo'ng'iroqlarda sifatni tekshiradigan oddiy skript yozing:
#!/bin/bash
# /usr/local/bin/asterisk-quality-check.sh
JITTER_THRESHOLD=30 # ms
LOSS_THRESHOLD=2 # percent
RTT_THRESHOLD=300 # ms
# Get RTP stats from active channels
asterisk -rx "rtp show stats" | while read line; do
jitter=$(echo "$line" | awk '{print $5}')
loss=$(echo "$line" | awk '{print $7}')
rtt=$(echo "$line" | awk '{print $9}')
if (( $(echo "$jitter > $JITTER_THRESHOLD" | bc -l) )); then
echo "ALERT: High jitter detected: ${jitter}ms" | \
mail -s "Asterisk Quality Alert" admin@yourcompany.com
fi
if (( $(echo "$loss > $LOSS_THRESHOLD" | bc -l) )); then
echo "ALERT: Packet loss detected: ${loss}%" | \
mail -s "Asterisk Quality Alert" admin@yourcompany.com
fi
doneUni ish soatlarida har 5 daqiqada cron orqali ishga tushiring:
*/5 8-18 * * 1-5 /usr/local/bin/asterisk-quality-check.sh
SIP javob kodlarini kuzatish
Provayder tomonidagi muammolarni tutish uchun SIP xatoliklarini kuzating:
| Kod | Ma'nosi | Nima qilish kerak |
|---|---|---|
| 408 | Request Timeout | Trunk'gacha tarmoq bog'lanishini tekshirish |
| 486 | Busy Here | Odatiy holat, lekin keskin o'sishi sig'im yetishmasligidan darak |
| 503 | Service Unavailable | Trunk provayderida muammo yoki PBX ortiqcha yuklangan |
| 488 | Not Acceptable | Kodeklar mos kelmadi — allow/disallow sozlamalarini tekshiring |
Ularni Asterisk CLI dan ko'rish mumkin:
# Watch for failed SIP transactions in real-time
asterisk -rx "pjsip show registrations" | grep -v "Registered"Qo'ng'iroq sifatidagi keng tarqalgan muammolar va yechimlar
Muammo: bir tomonlama eshitiluvchanlik
Belgilari: mijoz operatorni eshitadi, operator esa mijozni eshitmaydi (yoki aksincha).
Sababi: deyarli har doim NAT. RTP paketlar noto'g'ri IP ga ketadi.
pjsip.conf dagi yechim:
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
external_media_address=YOUR.PUBLIC.IP
external_signaling_address=YOUR.PUBLIC.IP
local_net=10.0.0.0/8
local_net=172.16.0.0/12
local_net=192.168.0.0/16Muammo: eng band soatlarda uzuq-yuluq ovoz
Belgilari: sifat ertalab 9 dan 11 gacha va kunduzi 14 dan 16 gacha pasayadi.
Sababi: kanalning to'yinishi. Ovozli trafik ma'lumotlar trafigi bilan raqobatlashadi.
Yechim: QoS markirovkasini joriy qiling. Ovozli paketlarni DSCP EF (Expedited Forwarding) bilan belgilang:
; /etc/asterisk/rtp.conf
[general]
tos=ef ; DSCP EF for RTP
cos=5 ; 802.1p CoS for RTP
; /etc/asterisk/sip.conf or pjsip.conf
tos_sip=cs3 ; DSCP CS3 for SIP signaling
cos_sip=3Keyin routeringiz yoki kommutatoringizni belgilangan paketlarni ustuvor o'tkazishga sozlang.
Muammo: 30 soniyadan keyin tasodifiy uzilishlar
Belgilari: qo'ng'iroq ulanadi, ovoz keladi, so'ng aynan 30-32 soniyada aloqa uziladi.
Sababi: routeringiz yoki firewall'ingizdagi SIP ALG SIP sarlavhalarini qayta yozmoqda.
Yechim: routerda SIP ALG ni o'chiring. Har bir modelda menyu boshqacha, lekin odatda bu firewall yoki NAT sozlamalari bo'limida. Aynan shu bitta o'zgartirish Asterisk'dagi muammolarni boshqa har qanday konfiguratsiya o'zgarishidan ko'ra ko'proq hal qiladi.
Muammo: suhbatdagi aks-sado
Belgilari: mijoz yoki operator o'z ovozini kechikish bilan eshitadi.
Sababi: analog/TDM interfeyslarda impedans mos kelmasligi yoki jitter-bufer haddan tashqari katta.
Yechim:
# If using DAHDI analog interfaces
# Tune echo cancellation in /etc/dahdi/system.conf
echocanceller=mg2,1-4
# In chan_dahdi.conf
echocancel=yes
echocancelwhenbridged=yes
echotraining=800Faqat SIP asosidagi tizimlarda aks-sado odatda abonent qurilmasidan — telefon yoki softfondan — keladi. Apparatning aks-sadoni bostirish sozlamalarini tekshiring.
Qo'ng'iroq sifati dashboard'ini qurish
Xom RTCP ma'lumotlari, agar ularga hech kim qaramasa, foydasiz. Sizga sifat trendlarini vaqt bo'yicha ko'rsatadigan va operatorlar shikoyat qilishidan oldin pasayishni belgilab beradigan dashboard kerak.
1-variant: Grafana'da o'z qo'lingiz bilan
RTCP ma'lumotlarini time-series bazaga (InfluxDB, TimescaleDB) yozing va Grafana'da dashboard quring. Bu ishlaydi, lekin sozlashga 20-40 soat ketishini hisobga oling:
- —RTCP ma'lumotlarini yig'ish uchun o'z AGI/ARI skriptingizni yozish
- —InfluxDB/TimescaleDB ni o'rnatish
- —Grafana'da ma'lumot manbasini sozlash
- —Panellarni yig'ish: MOS trendlari, jitter taqsimoti, trunklar bo'yicha yo'qotishlar
- —Alert qoidalarini yaratish
- —Asterisk yangilanishlari skriptlaringizni buzganda, hammasini qo'llab-quvvatlash
2-variant: Astervis — Asterisk uchun tayyor analitika
Astervis sizning Asterisk CDR bazangizga ulanadi va 30+ tayyor hisobot beradi: qo'ng'iroq sifati analitikasi, navbatlar ko'rsatkichlari, operator metrikalari, trunklar bandligi. O'rnatish 5 daqiqa oladi:
curl -fsSL https://api.astervis.io/api/releases/install.sh | bashHech qanday o'z skriptlaringiz kerak emas. Grafana sozlash kerak emas. Baza bilan ovora bo'lish kerak emas. Navbatlar issiqlik xaritalari, operatorlar samaradorligini kuzatish va qo'ng'iroq trendlari analitikasi — hammasi darhol, oyiga $119 qat'iy narxda, operatorlaringiz soni qanday bo'lishidan qat'i nazar.
Farqi oddiy: Grafana'dagi dashboard sizga faqat o'zingiz sozlagan narsani beradi. Astervis esa call-markazlarning 15 yillik ish tajribasi foydali ekanini isbotlagan narsani beradi.
Qo'ng'iroq sifati bo'yicha nazorat ro'yxati
Bu sahifani yopishdan oldin ro'yxat bo'yicha yurib chiqing:
- —Jitter-bufer:
rtp.confdajbenable=yesvajbimpl=adaptiveni tekshiring - —Kodeklar ustuvorligi: endpoint konfiguratsiyasida afzal kodeklar birinchi turganiga ishonch hosil qiling
- —RTCP loglash: hangup-handler'ga
CHANNEL(rtcp,*)o'zgaruvchilarini qo'shing - —QoS markirovkasi: RTP uchun
tos=ef, SIP signalizatsiyasi uchuntos_sip=cs3ni belgilang - —NAT sozlamasi:
external_media_addresssizning ommaviy IP'ingizga mos kelishini tekshiring - —SIP ALG: firewall yoki routerda o'chirilganiga ishonch hosil qiling
- —Monitoring: eng band soatlarga muntazam sifat tekshiruvlarini rejalashtiring
- —Alertlar: jitter > 30ms, loss > 2%, RTT > 300ms chegaralarini belgilang
- —Tarixiy ma'lumotlar: trend tahlili uchun RTCP metrikalarini bazada saqlang
- —Kodek kelishuvini ko'rib chiqish: qo'ng'iroqlar vaqtida
pjsip show channelstatsni tekshiring
Bu ro'yxatni har chorakda va tarmoqdagi har qanday o'zgarishdan so'ng bajaring. 15 daqiqalik audit "telefonlar yomon eshitilyapti" degan tiketlarning haftalab davom etishidan qutqaradi.
Keyingi qadamlar
Qo'ng'iroq sifati monitoringi — bir martalik sozlash emas, doimiy intizom. Asosdan boshlang: RTCP loglashni yoqing, jitter-bufer sozlamalarini tekshiring, kodek konfiguratsiyasini ko'rib chiqing. Keyin chegaraviy alertlar va tarixiy trend tahlili bilan uzluksiz monitoringga o'ting.
Maqsad — har bir qo'ng'iroqda mukammal MOS emas. Maqsad — pasayishni mijozlaringizdan oldin sezish. Ikki hafta davomida hech kim payqamagan 0.5 MOS pasayishi — bu yuzlab asabiylashgan odam, ular sizga nega qayta qo'ng'iroq qilmaganini hech qachon aytmaydi.
Tarmoqni kuzating. Metrikalarni yig'ing. Muammolar sizga mijozlarni yo'qotish evaziga tushishidan oldin ularni tuzating.
Taxmin qilishni bas qiling. Ko'rishni boshlang.
Asterisk call-markazingizning haqiqiy ko'rinishi: navbatlardagi kutish vaqti, operatorlar faolligi, trunk yuklamasi va 30+ grafik. Sizning serveringizda on-premise. 5 daqiqada o'rnatish. Kartasiz.
$119/oydan flat. Operatorlar soni cheklanmagan. 14 kunlik triаl.
