Mediastreamer2 VoIP қозғалтқышын зерттеу. 8 бөлім

Мақала материалы менің сайтымнан алынды zen арнасы.

Mediastreamer2 VoIP қозғалтқышын зерттеу. 8 бөлім

RTP пакетінің құрылымы

Өткенде мақала пайдаланып жатырмыз TShark қабылдағыш пен таратқыш арасында алмасылған RTP пакеттерін түсіруді орындады. Ал, бұл жерде біз пакеттің элементтерін әртүрлі түстерге бояймыз және олардың мақсаты туралы сөйлесеміз.

Сол қаптаманы қарастырайық, бірақ түсті шеттері мен түсіндірме белгілері бар:
Mediastreamer2 VoIP қозғалтқышын зерттеу. 8 бөлім

Листингтің төменгі жағында RTP пакетін құрайтын байттар тоналды және бұл өз кезегінде UDP пакетінің пайдалы жүктемесі болып табылады (оның тақырыбы қара түспен дөңгелектелген). Түсті фон RTP тақырыбының байттарын көрсетеді және RTP пакетінің пайдалы жүктемесін қамтитын деректер блогы жасыл түспен бөлектелген. Деректер он алтылық форматта берілген. Біздің жағдайда бұл u-заңына (mu-law) сәйкес қысылған дыбыс сигналы, яғни. бір үлгінің өлшемі 1 байт. Біз 8000 Гц пакеттік жиілікпен әдепкі таңдау жиілігін (50 Гц) пайдаланғандықтан, әрбір RTP пакетінде 160 байт пайдалы жүктеме болуы керек. Біз мұны жасыл аймақтағы байттарды санау арқылы көреміз, олардың 10 жолы болуы керек.

Стандартқа сәйкес пайдалы жүктемедегі деректер көлемі төртке еселік болуы керек немесе басқаша айтқанда, төрт байт сөздің бүтін санынан тұруы керек. Егер пайдалы жүктеме осы ережеге сәйкес келмесе, пайдалы жүктеменің соңына нөлдік мәнді байтты қосып, толтыру битін орнату керек. Бұл бит RTP тақырыбының бірінші байтында орналасқан және көгілдір түсті. Барлық пайдалы жүк байттары 0xFF екенін ескеріңіз, бұл u-law үнсіздігі сияқты көрінеді.

RTP пакетінің тақырыбы 12 міндетті байттан тұрады, бірақ екі жағдайда ол ұзағырақ болуы мүмкін:

  • Пакет бірнеше көздерден (RTP ағындары) сигналдарды араластыру арқылы алынған дыбыстық сигналды тасымалдағанда, тақырыптың алғашқы 12 байтынан кейін осы пакеттің пайдалы жүктемесін жасау үшін пайдалы жүктемелері пайдаланылған бастапқы идентификаторлар тізімі бар кесте пайда болады. Бұл жағдайда тақырыптың бірінші байтының төменгі төрт битінде (өріс Үлес қосатын бастапқы идентификаторлар саны) көздердің санын көрсетеді. Өріс өлшемі 4 бит, сондықтан кестеде 15 бастапқы идентификаторға дейін болуы мүмкін. Олардың әрқайсысы 4 байтты алады. Бұл кесте конференциялық қоңырауды орнату кезінде пайдаланылады.

  • Тақырыпта кеңейтім болған кезде. Бұл жағдайда бит тақырыптың бірінші байтында орнатылады X. Кеңейтілген тақырыпта қатысушылар кестесінен кейін (бар болса) бір сөзден тұратын кеңейтім тақырыбы, одан кейін кеңейтім сөздері бар. Кеңейтім - бұл қосымша деректерді тасымалдау үшін пайдалануға болатын байттар жинағы. Стандарт бұл деректердің пішімін қарастырмайды - бұл кез келген нәрсе болуы мүмкін. Мысалы, бұл RTP пакеттерін қабылдайтын құрылғының кейбір қосымша параметрлері болуы мүмкін. Кейбір қолданбалар үшін кеңейтілген тақырып стандарттары әзірленді. Бұл, мысалы, стандарттағы коммуникациялар үшін жасалады ED-137 (VoIP ATM құрамдастарының өзара әрекеттесу стандарттары).

Енді тақырып өрістерін толығырақ қарастырайық. Төменде RTP тақырыбының құрылымы бар канондық сурет бар, мен оған қарсы тұра алмадым және сол түстермен боядым.

Mediastreamer2 VoIP қозғалтқышын зерттеу. 8 бөлім
VER — протокол нұсқасының нөмірі (ағымдағы 2-нұсқа);

P - RTP пакеті соңында бос байттармен толықтырылған жағдайларда орнатылатын жалауша;

X - тақырып кеңейтілген жалауша;

CC — тұрақты тақырыптан кейінгі CSRC идентификаторларының санын (1..3 сөздерінен кейін) қамтиды, кесте суретте көрсетілмеген;

M — кадрдың басының маркері немесе арнада сөйлеудің болуы (егер сөйлеуді кідірту детекторы пайдаланылса). Егер қабылдағышта сөйлеуді тоқтату детекторы болмаса, онда бұл бит тұрақты түрде орнатылуы керек;

PTYPE - пайдалы жүктің форматын анықтайды;

Реттік нөмір - пакеттердің ойнатылу ретін қалпына келтіру үшін пайдаланылатын пакет нөмірі, өйткені нақты жағдай пакеттер қабылдағышқа жіберілген қате ретпен жетуі мүмкін. Бастапқы мән кездейсоқ болуы керек, бұл RTP ағыны шифрланған болса, оны бұзу қиын болатындай етіп жасалады. Сондай-ақ, бұл өріс өткізіп алған пакеттерді анықтауға мүмкіндік береді;

Уақыт белгісі - уақыт белгісі. Уақыт сигнал үлгілерінде өлшенеді, яғни. егер серпіліс 160 үлгіні қамтыса, келесі серпінді уақыт белгісі тағы 160 болады. Уақыт белгісінің бастапқы мәні кездейсоқ болуы керек;

SSRC — пакет көзінің идентификаторы, ол бірегей болуы керек. RTP ағынын бастамас бұрын оны кездейсоқ түрде жасаған дұрыс.

Егер сіз өзіңіздің RTP таратқышыңызды немесе қабылдағышыңызды жасасаңыз, өнімділікті арттыру үшін пакеттеріңізді бірнеше рет қарап шығуға тура келеді, мен сізге TShark бағдарламасында пакеттерді сүзуді қалай пайдалану керектігін үйренуді ұсынамын, бұл сізге тек пакеттерді түсіруге мүмкіндік береді. сізге қызығушылық. Желіде ондаған RTP құрылғылары жұмыс істейтін ортада бұл өте құнды. TShark пәрмен жолында сүзу опциялары "-f" опциясымен көрсетілген. Біз бұл опцияны 8010 портынан пакеттерді түсіргіміз келгенде пайдаландық:
-f "udp port 8010"
Сүзгілеу параметрлері негізінен «ұсталған» пакет сәйкес келуі керек критерийлер жиынтығы болып табылады. Шарт адресті, портты, пакеттегі белгілі бір байттың мәнін тексере алады. Шарттарды логикалық амалдармен біріктіруге болады «ЖӘНЕ», «НЕМЕСЕ» т.б. Өте күшті құрал.

Топтамалардағы өріс өзгерістерінің динамикасын көргіңіз келсе, шығыстың көшірмесін жасау керек TShark файлға, соңғы мақалада көрсетілгендей, шығысты беру арқылы TShark кіреберісте tee. Содан кейін журнал файлын ашыңыз аз, vim немесе үлкен мәтіндік файлдармен жылдам жұмыс істей алатын және жолдарды іздейтін басқа құралдың көмегімен сіз RTP ағынындағы пакеттік өрістердің әрекетінің барлық нюанстарын біле аласыз.

Егер сізге RTP ағыны арқылы берілетін сигналды тыңдау қажет болса, онда нұсқаны пайдалану керек TShark визуалды интерфейсімен Wireshark. Тінтуірдің қарапайым манипуляциялары арқылы сигналдың толқын пішінін тыңдауға және көруге болады. Бірақ бір шарт бойынша - егер ол u-law немесе a-low форматында кодталған болса.

Келесі мақала біз сізбен дуплексті домофон жасаймыз. Бір жұп гарнитура мен бір әңгімелесушіні жинаңыз.

Ақпарат көзі: www.habr.com

пікір қалдыру