Qo'ng'iroq uzilishi — Asterisk asosidagi har qanday call-markazdagi eng asabbuzar muammo. Har bir uzilgan qo'ng'iroq — bu yo'qotilgan mijoz muloqoti, asabiylashgan operator va katta ehtimol bilan qo'ldan boy berilgan daromad. Bundan ham yomoni, uzilishlarni aniqlash juda mashaqqatli: ularning ortida o'nlab turli sabab turishi mumkin — oddiy NAT xatolaridan tortib tarmoq sifatiga bog'liq nozik muammolargacha.
Ushbu qo'llanmada Asterisk'dagi qo'ng'iroq uzilishlarining barcha keng tarqalgan sabablari ko'rib chiqiladi, aniq diagnostika buyruqlari va tayyor konfiguratsiya tuzatishlari beriladi, shuningdek muammolarni mijozlaringiz sezishidan oldin ilg'ab olish uchun proaktiv monitoringni qanday sozlash ko'rsatiladi.
Asterisk nima uchun qo'ng'iroqni uzadi
Tuzatishlarga o'tishdan avval qo'ng'iroqning yo'lini tushunib olish foydali. Asterisk'dagi qo'ng'iroq uchta alohida bosqichdan o'tadi va uzilish ularning istalganida yuz berishi mumkin:
- —Qo'ng'iroqni o'rnatish (INVITE, 200 OK, ACK): bu yerdagi uzilishlar bir lahza ulanib, darhol uzilib qoladigan qo'ng'iroq ko'rinishida bo'ladi — odatda 0–5 soniya ichida.
- —Media almashinuvi (RTP audio oqimlari): suhbatning o'zi davomidagi uzilishlar, ko'pincha 15, 30 yoki 60 soniyadan keyin — yoki tasodifiy oraliqlarda.
- —Sessiyani ushlab turish (re-INVITE, OPTIONS, session timers): aniq bashorat qilinadigan oraliqlarda, masalan roppa-rosa 15 yoki 30 daqiqada uziladi.
Har bir bosqichning o'z nosozlik ssenariylari bor. Ularni tartib bilan ko'rib chiqamiz.
1-sabab: NAT'dan o'tish muammolari
Belgilari: qo'ng'iroq roppa-rosa 30 soniyadan keyin uziladi. Uzilishdan oldin ovoz bir tomonlama bo'ladi. Lokal tarmoqda hammasi ishlaydi, uzoqdagi ichki raqamlarda esa yo'q.
NAT — Asterisk'dagi qo'ng'iroq uzilishlarining birinchi raqamli sababi. Asterisk serveri NAT-router ortida turganda, SIP signalizatsiya va RTP media oqimlari ichida tashqi qurilmalar yeta olmaydigan ichki IP-manzillar tashiladi.
Diagnostika
Joriy NAT konfiguratsiyasini tekshiring:
# For chan_sip (legacy)
asterisk -rx "sip show settings" | grep -i nat
# For chan_pjsip (modern)
asterisk -rx "pjsip show endpoint <endpoint_name>"Aslida nima sodir bo'layotganini ko'rish uchun SIP debug'ni yoqing:
asterisk -rx "pjsip set logger on"
# Test qo'ng'iroq qiling, so'ng SIP sarlavhalarida ichki IP bor-yo'qligini tekshiring
# Contact: va Via: sarlavhalarida 192.168.x.x yoki 10.x.x.x manzillarini qidiringYechim
pjsip.conf uchun (Asterisk 16+ da tavsiya etiladi):
[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=192.168.0.0/16
local_net=10.0.0.0/8
local_net=172.16.0.0/12
[endpoint-template](!)
type=endpoint
direct_media=no
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yessip.conf uchun (eski usul):
[general]
externip=YOUR.PUBLIC.IP
localnet=192.168.0.0/255.255.0.0
localnet=10.0.0.0/255.0.0.0
nat=force_rport,comedia
directmedia=noMuhim jihat: direct_media=no (eski sintaksisda canreinvite=no) butun RTP'ni Asterisk orqali o'tkazadi. Bu ko'proq resurs talab qiladi, lekin NAT bilan bog'liq uzilishlarning 90 foizini hal qiladi.
2-sabab: SIP ALG (Application Layer Gateway)
Belgilari: tasodifiy uzilishlar. Ba'zi tarmoqlardan qo'ng'iroq o'tadi, boshqalaridan esa yo'q. SIP sarlavhalari buzilgan — portlar yoki IP'lar Asterisk yuborgan qiymatlarga mos kelmaydi.
Ko'plab uy va biznes routerlarida SIP ALG mavjud: u paket sarlavhalarini qayta yozib, SIP trafikka "yordam berishga" urinadi. Amalda esa SIP ALG deyarli har doim hal qilganidan ko'ra ko'proq muammo keltirib chiqaradi.
Diagnostika
Asterisk nima yuborayotganini uzoqdagi qurilma nima qabul qilayotgani bilan solishtiring:
# Asterisk serverida SIP trafikni ushlaymiz
tcpdump -i eth0 -n -s 0 port 5060 -w /tmp/sip_capture.pcap
# Wireshark yoki sngrep orqali tahlil qilamiz
sngrep -I /tmp/sip_capture.pcapYechim
Router yoki firewall'da SIP ALG'ni o'chiring:
- —Linux iptables:
modprobe -r nf_nat_sip nf_conntrack_sip - —pfSense: System, Advanced, Firewall and NAT, Disable Firewall Scrub belgisini olib tashlang
- —Ubiquiti/EdgeRouter:
set system conntrack modules sip disable - —Aksariyat uy routerlari: firewall sozlamalarida SIP ALG, SIP Passthrough yoki VoIP Passthrough bandlarini toping va o'chiring
3-sabab: session timers qiymatlarining mos kelmasligi
Belgilari: qo'ng'iroq roppa-rosa 15 daqiqada, 30 daqiqada yoki boshqa bashorat qilinadigan oraliqda uziladi.
SIP session timers (RFC 4028) sessiyani vaqti-vaqti bilan yangilab, "o'lik" qo'ng'iroqlarni aniqlash uchun ishlatiladi. Agar Asterisk va uzoqdagi qurilmadagi taymer qiymatlari kelishmasa, tomonlardan biri sessiyani muddati o'tgan deb hisoblab, qo'ng'iroqni tugatadi.
Diagnostika
asterisk -rx "pjsip show endpoint <endpoint>" | grep -i timer
grep -i "session-expires" /var/log/asterisk/fullYechim
; pjsip.conf
[endpoint-template](!)
type=endpoint
timers=no ; session timers'ni butunlay o'chirish
; YOKI ularni to'g'ri sozlash:
timers=yes
timers_min_se=90 ; Sessiyaning minimal amal qilish muddati (soniyalarda)
timers_sess_expires=1800 ; Sessiya muddati (standart 1800 = 30 daqiqa)Agar SIP provayderingiz session timers talab qilsa, uning Min-SE qiymatiga moslashtiring:
timers_min_se=900 ; Provayder minimumiga moslash (ko'pincha 900s = 15 daqiqa)
timers_sess_expires=1800 ; min_se dan yuqoriroq qilib qo'ying4-sabab: kodeklarni kelishishdagi nosozliklar
Belgilari: qo'ng'iroq ulanadi, lekin darhol uziladi (1–3 soniya ichida). Umuman ovoz yo'q. Trasirovkalarda SIP 488 Not Acceptable Here ko'rinadi.
Asterisk va uzoqdagi qurilma umumiy audio kodek bo'yicha kelisha olmasa, qo'ng'iroq yo umuman ulanmaydi, yo media sessiya boshlanishi bilan uzilib ketadi.
Diagnostika
asterisk -rx "pjsip show endpoint <endpoint>" | grep -i allow
asterisk -rx "core show channels verbose"Yechim
Ikkala tomonda kamida bitta umumiy kodek borligiga ishonch hosil qiling:
; pjsip.conf
[endpoint-template](!)
type=endpoint
allow=!all,g722,ulaw,alaw ; g722 ustuvor (keng polosali), zaxira sifatida ulaw/alawMaslahat: tartib muhim. Ro'yxatdagi birinchi kodek ustuvor hisoblanadi. Eng sifatli kodekni birinchi qilib qo'ying.
5-sabab: resurslarning yetishmasligi
Belgilari: yuklama ortgan sari uzilishlar ko'payadi. Eng gavjum soatlarda Asterisk javob bermay qoladi. Uzilishdan oldin ovoz sifati pasayadi — nutq uzuq-yuluq va "robot"simon bo'lib qoladi.
Asterisk protsessorga talabchan, ayniqsa turli kodeklar o'rtasida transkodlash yoki suhbatlarni yozib olish paytida. CPU, xotira yoki fayl deskriptorlarining tugashi muqarrar ravishda qo'ng'iroq uzilishlariga olib keladi.
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.
Diagnostika
asterisk -rx "core show channels count"
asterisk -rx "core show uptime"
top -bn1 | head -20
free -h
ulimit -n # Fayl deskriptorlari limiti
ss -unp | grep asterisk | wc -lYechim
- —Fayl deskriptorlari limitini oshiring:
# /etc/security/limits.conf
asterisk soft nofile 65536
asterisk hard nofile 65536- —
Keraksiz transkodlashdan qoching — qo'ng'iroqning ikkala tomonida bir xil kodekdan foydalaning.
- —
RTP port diapazonini optimallashtiring:
; rtp.conf
[general]
rtpstart=10000
rtpend=20000 ; 10 000 port = 5 000 bir vaqtdagi qo'ng'iroq- —CPU yuklamasini kuzating — agar Asterisk muttasil 80% dan ortiq protsessor band qilsa, gorizontal masshtablang yoki jihozni yangilang.
6-sabab: firewall va tarmoq muammolari
Belgilari: tarmoqdagi hodisalar bilan mos keladigan vaqti-vaqti bilan yuz beradigan uzilishlar. Uzilishlar hamma emas, ayrim trunklarga ta'sir qiladi. Uzilishdan oldin ovozda uzilishlar yoki bir tomonlama ovoz.
UDP ulanishlarini to'g'ri kuzatmaydigan firewall'lar RTP paketlarini tashlab yubora boshlaydi. Tarmoq tiqilinchi, jitter va paket yo'qotishlari ovoz sifatini buzadi va oxir-oqibat qo'ng'iroqni uzadi.
Diagnostika
ping -c 100 provider.sip.address | tail -5
cat /proc/sys/net/netfilter/nf_conntrack_udp_timeout
cat /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
asterisk -rx "rtp show stats"Yechim
# UDP ulanishlarini kuzatish taymautini oshiramiz (standart 30s qo'ng'iroqlar uchun juda kam)
echo 180 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout
echo 180 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
# /etc/sysctl.conf da doimiy qilib mustahkamlaymiz
net.netfilter.nf_conntrack_udp_timeout=180
net.netfilter.nf_conntrack_udp_timeout_stream=180Firewall quyidagilarga ruxsat berishiga ishonch hosil qiling:
- —SIP signalizatsiya: UDP/TCP 5060 (yoki o'zingizning nostandart portingiz)
- —RTP media: UDP 10000-20000 (rtp.conf dagi diapazonga mos bo'lsin)
- —TLS/SRTP: shifrlangan SIP uchun TCP 5061
7-sabab: qualify va keep-alive nosozliklari
Belgilari: pjsip show endpoints chiqishida qurilmalar Unreachable yoki UNKNOWN sifatida ko'rinadi. Ayrim ichki raqamlarga qo'ng'iroqlar o'tmaydi, qolganlari esa ishlaydi.
Asterisk qurilmalar hamon mavjudligini tekshirish uchun OPTIONS yoki NOTIFY xabarlarini yuboradi. Agar qurilma qualify tekshiruvlariga javob bermasa, Asterisk uni mavjud emas deb belgilaydi.
Diagnostika
asterisk -rx "pjsip show endpoints" | grep -E "Unavail|Unreachable"
asterisk -rx "pjsip show aor <aor_name>"Yechim
; pjsip.conf
[aor-template](!)
type=aor
qualify_frequency=60 ; Har 60 soniyada tekshirish
qualify_timeout=5.0 ; Javobni 5 soniya kutish
max_contacts=1Beqaror tarmoqlar uchun taymautni oshiring:
qualify_timeout=10.0 ; Yuqori kechikishli ulanishlar uchun yumshoqroqProaktiv monitoring: uzilishni sodir bo'lgunicha to'xtating
Uzilishlar bilan keyin — mijozlar shikoyat qilganidan so'ng — kurashish qimmat va asabbuzar ish. Haqiqiy yechim — sifat pasayishini u uzilishga aylanmasidan oldin ilg'ab oladigan proaktiv monitoring.
Nimani kuzatish kerak
| Metrika | Nima uchun muhim | Ogohlantirish chegarasi |
|---|---|---|
| Faol kanallar | Quvvatni rejalashtirish | Maksimumning 80% dan ortiq |
| Qo'ng'iroq davomiyligi taqsimoti | Uzilishlar qisqa qo'ng'iroq bo'lib ko'rinadi | 10s dan qisqa qo'ng'iroqlar keskin ko'payishi |
| ASR (Answer-Seizure Ratio) | Amalga oshmagan qo'ng'iroqlar ulushi | 90% dan past |
| ACD (Average Call Duration) | Keskin tushish muammodan darak beradi | Odatdagining 50% idan past |
| RTP paket yo'qotishlari | Ovoz sifati | 1% dan yuqori |
| Jitter | Ovoz sifati | 30ms dan yuqori |
| SIP javob kodlari | Xatolik naqshlari | 408, 480, 503 keskin ko'payishi |
| Trunk registratsiya holati | Ulanish barqarorligi | Ro'yxatdan o'tmagan istalgan trunk |
| CPU/xotira yuklamasi | Resurs yetishmovchiligi | CPU 80% dan yuqori |
CDR ma'lumotlari bo'yicha uzilishlarni tahlil qilish
CDR (Call Detail Records) bazangizda qimmatli tergov materiali saqlanadi. Uzilish naqshlarini topish uchun so'rov yuboring:
-- G'ayritabiiy qisqa davomiylikdagi qo'ng'iroqlarni topamiz (ehtimoliy uzilishlar)
SELECT calldate, src, dst, duration, disposition, channel
FROM cdr
WHERE duration < 10
AND disposition = 'ANSWERED'
AND calldate > NOW() - INTERVAL 24 HOUR
ORDER BY calldate DESC;
-- Soatlar kesimida uzilish ulushi (eng muammoli vaqtni topamiz)
SELECT
HOUR(calldate) as hour,
COUNT(*) as total_calls,
SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) as short_calls,
ROUND(SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as drop_rate_pct
FROM cdr
WHERE calldate > NOW() - INTERVAL 7 DAY
GROUP BY HOUR(calldate)
ORDER BY drop_rate_pct DESC;
-- Trunklar kesimida uzilish ulushi (muammoli provayderlarni aniqlaymiz)
SELECT
SUBSTRING_INDEX(channel, '-', 1) as trunk,
COUNT(*) as total_calls,
SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) as potential_drops,
ROUND(AVG(duration), 1) as avg_duration
FROM cdr
WHERE calldate > NOW() - INTERVAL 30 DAY
GROUP BY trunk
ORDER BY potential_drops DESC;Uzilishlarni avtomatik aniqlash uchun Astervis'dan foydalanish
CLI buyruqlari va SQL so'rovlari bir martalik diagnostika uchun yaxshi, biroq uzluksiz monitoring uchun ular masshtablanmaydi. Astervis Asterisk asosidagi call-markazlar uchun maxsus ishlab chiqilgan real vaqt dashboardlarini beradi va bu jarayonni to'liq avtomatlashtiradi:
- —Real vaqtda qo'ng'iroq monitoringi — jonli dashboardda har bir faol qo'ng'iroq, uning davomiyligi, kodegi va sifat metrikalari ko'rinadi
- —Uzilishlarni avtomatik aniqlash — Astervis g'ayritabiiy qisqa qo'ng'iroqlarni belgilab qo'yadi va issiqlik xaritalari orqali ayrim trunklardagi muammolarni ko'rsatadi: uzilishlar qachon va qayerda yuz berayotgani darhol ma'lum bo'ladi
- —Operatorlar ishini kuzatish — uzilishlarni aniq operatorlar, navbatlar yoki vaqt oraliqlari bilan solishtirib, muammo tizimlimi yoki alohida xodimdami — aniqlab olish mumkin
- —Trunklar holati monitoringi — har bir trunk bo'yicha registratsiya holati, qo'ng'iroqlar hajmi va sifat metrikalari, trunk ishdan chiqsa esa bir zumda ogohlantirish
- —Tarixiy analitika — 30+ grafik: qo'ng'iroqlar hajmi dinamikasi, navbatdagi kutish vaqti, operator KPI'lari va boshqalar — hammasi bitta qator SQL yozmasdan
Astervis Asterisk serveringizga bitta o'rnatish buyrug'i bilan bir necha daqiqada ulanadi va darhol ma'lumot yig'a boshlaydi. Yuqoridagi qo'lda diagnostika qadamlari bilan birgalikda siz ham chuqur tahlil imkoniyatini, ham kelajakdagi muammolarning oldini oladigan avtomatik monitoringni qo'lga kiritasiz.
Bepul 14 kunlik sinov muddatini boshlang
Qisqacha ma'lumotnoma: belgisiga qarab diagnostika
| Belgi | Eng ehtimoliy sabab | Qaysi buyruqdan boshlash |
|---|---|---|
| Roppa-rosa 30 soniyada uziladi | NAT muammolari | pjsip show endpoint |
| 15 yoki 30 daqiqada uziladi | session timers mos kelmayapti | Taymer sozlamalarini tekshiring |
| Tasodifiy uzilishlar, ayrim trunklar | SIP ALG | ALG'ni o'chiring, tcpdump oling |
| Ovoz yo'q, keyin uzilish | Kodeklar mos kelmayapti | allow sozlamalarini tekshiring |
| Gavjum soatlarda uzilish | Resurs yetishmovchiligi | top, core show channels count |
| Bitta ichki raqam mavjud emas | qualify taymauti | pjsip show endpoints |
| Uzoqdagi raqamlarda uzilish | Firewall / UDP taymauti | conntrack sozlamalarini tekshiring |
Profilaktika ro'yxati
Uzilishlar boshidanoq paydo bo'lmasligi uchun yangi Asterisk o'rnatayotganda shu ro'yxat bo'yicha yuring:
- —Barcha endpoint'larda
direct_media=noqo'yish - —
external_media_addressvaexternal_signaling_addressni to'g'ri yozish - —Trafik yo'lidagi barcha routerlarda SIP ALG'ni o'chirish
- —UDP conntrack taymautini kamida 180 soniyaga ko'tarish
- —Asterisk va barcha SIP provayderlar o'rtasida kodek ro'yxatlarini moslashtirish
- —session timers'ni provayder talabiga sozlash yoki butunlay o'chirish
- —Fayl deskriptorlari limitini 65536 dan yuqori qilib qo'yish
- —Firewall'da ham SIP (5060), ham to'liq RTP diapazonini (10000-20000) ochish
- —Trunk registratsiyasi va aloqa sifati uchun monitoring sozlash
- —Kutilayotgan eng yuqori yuklamada bir vaqtning o'zidagi qo'ng'iroqlar bilan test o'tkazish
Xulosa
Asterisk'dagi qo'ng'iroq uzilishlarining deyarli har doim aniq va bartaraf etsa bo'ladigan sababi bor. Asosiy aybdorlar — NAT sozlamalaridagi xatolar, SIP ALG aralashuvi va session timers mos kelmasligi — holatlarning katta qismini tashkil qiladi va bir marta aniqlangach, ularni tuzatish qiyin emas.
Uzilishlardan uzoq muddatga qutulishning kaliti — faqat hozirgi nosozlikni tuzatish emas, balki keyingisini mijozlaringizdan oldin ilg'ab oladigan monitoringni yo'lga qo'yish. CLI buyruqlaridanmi, CDR so'rovlaridanmi yoki Astervis kabi maxsus vositadanmi foydalanasiz — maqsad bitta: har bir qo'ng'iroq, har bir trunk va har bir ehtimoliy nosozlik nuqtasini ko'rib turish.
Sizning Asterisk call-markazingiz uzilib qoladigan qo'ng'iroqlardan ko'ra yaxshiroq narsaga loyiq. Kuzatishni boshlang, tuzatishni boshlang va mijozlaringiz kutayotgan ishonchli aloqani bera boshlang.
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.
