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 сап болушу керек.

Стандартка ылайык, пайдалуу жүктөгү маалыматтардын көлөмү төрткө эселүү болушу керек, же башкача айтканда төрт байттык сөздөрдүн бүтүн санын камтышы керек. Эгер сиздин пайдалуу жүкүңүз бул эрежеге баш ийбесе, анда пайдалуу жүктүн аягына нөл маанилери бар байттарды кошуп, Padding битин коюшуңуз керек. Бул бит RTP башынын биринчи байтында жайгашкан жана бирюза түстүү. Баардык пайдалуу жүк байттарында 0xFF мааниси бар экенин эске алыңыз - унчукпоо u-law форматында ушундай көрүнөт.

RTP пакетинин аталышы талап кылынган 12 байттан турат, бирок эки учурда ал узунураак болушу мүмкүн:

  • Пакет бир нече булактардан (RTP агымдары) сигналдарды аралаштыруу жолу менен алынган аудио сигналды алып жүргөндө, баштын биринчи 12 байтынан кийин бул пакеттин пайдалуу жүгүн түзүү үчүн пайдалуу жүктөрү колдонулган булак идентификаторлорунун тизмеси бар таблица пайда болот. Бул учурда, баштын биринчи байтынын төмөнкү төрт битинде (талаа Салым кошкон булак идентификаторлорунун саны) булактардын саны көрсөтүлөт. Талаанын көлөмү 4 бит, ошондуктан таблица 15ке чейин булак идентификаторлорун камтышы мүмкүн. Алардын ар бири 4 байт алат. Бул таблица конференц-байланышты уюштурууда колдонулат.

  • Аталышынын кеңейтилиши болгондо. Бул учурда, баштын биринчи байтындагы бит коюлат X. Кеңейтилген темада катышуучулардын таблицасынан кийин (эгер бар болсо) бир сөздөн турган кеңейтүү баш аты, андан кийин кеңейтүүнүн сөздөрү жазылат. Кеңейтүү - бул кошумча маалыматтарды өткөрүү үчүн колдоно турган байттардын жыйындысы. Стандартта бул маалыматтардын форматы көрсөтүлгөн эмес - ал каалаган нерсе болушу мүмкүн. Мисалы, бул RTP пакеттерин кабыл алган аппараттын кошумча жөндөөлөрү болушу мүмкүн. Кээ бир колдонмолор үчүн, бирок, кеңейтилген баш стандарттар иштелип чыккан. Бул, мисалы, стандарттагы байланыш жабдуулары үчүн жасалат ED-137 (VoIP банкомат компоненттери үчүн өз ара аракеттенүү стандарттары).

Эми кененирээк баш талааларды карап көрөлү. Төмөндө 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 форматында коддолсо.

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

Source: www.habr.com

Комментарий кошуу