Разширени инструменти за SIP телефония - Администриране на сървъра
Изглежда, че почти всеки админ е чувал за Asterisk - намира се буквално на всяка крачка, независимо дали става въпрос за офис телефонна централа или нещо свързано с телекома. Но ако в първия случай използването му е почти винаги оправдано, то във втория може да има някои проблеми. Има ли алтернативи на Asterisk?
SIP: Кратко въведение
На първо място, струва си да разберете как работи SIP по принцип и какъв вид протокол е той. И така, SIP - протокол за започване на сесия, който служи единствено за целите на установяване и прекратяване на сесия. Обменът на пакети от установяването на връзка до нейното завършване се нарича разговор. Медийният поток не се предава чрез този протокол - за това има RTP протокол. SDP (протоколът за описание на сесията), капсулиран в SIP пакета, определя по-специално параметрите на медийния поток, като използвания кодек и типа на данните.
Важно е да се разбере, че преминаването на тези два потока - SIP / SDP и RTP (или, както казват сигнализаторите, сигнализиране и данни) - е напълно независимо един от друг. Нека да видим какво се случва по време на нормален разговор (много опростено, наистина).
- Обаждащата се страна инициира връзката чрез изпращане на INVITE SIP пакет, който също капсулира SDP с информация за желаните RTP параметри. Този пакет може да премине през няколко SIP проксита - повече за тях по-долу.
- В зависимост от това дали повикването минава през SIP проксито или не, повикващата страна получава или ОПИТВАЩ отговор от SIP проксито (докато проксито изпраща ПОКАНА до извиканата страна), последвано от ЗВЪНЕНИЕ, или незабавно ЗВЪНЕНИЕ. Пакетът RINGING означава, че обажданата страна изпраща сигнал до абоната „Обаждам се“ и сега трябва да изчакате, сравнително казано, „вдигане на телефона“.
- Веднага щом повиканата страна вдигне телефона, тя изпраща SIP пакет с код 200ДОБРЕ. Този пакет отново капсулира SDP полезния товар, съдържащ параметрите, които се поддържат от тази страна. Повикващата страна, ако параметрите съвпадат, изпраща ACK отговорен пакет.
- Клиентите се свързват чрез RTP директно, независимо дали предишният обмен на SIP пакети е преминал през SIP прокси или не. Има разговор.
- При освобождаване побеждаващата страна изпраща BYE SIP пакет, а втората страна изпраща отново ACK пакет. Връзката е завършена.
Сега си струва да разберем устройството на SIP мрежата - какви логически единици обикновено има.

Трябва да се отбележи, че често логическите единици се комбинират в един софтуер. Така че SIP прокси най-често се комбинира с регистратор и пренасочвач.
Има два вида SIP проксита - без състояние и със състояние.Ако сте запознати с iptables, мисля, че няма нужда да обяснявам разликите им. И ако не... SIP проксито с постоянно състояние пази състоянието на транзакцията, тоест знае кой INVITE пакет отговаря на кой ACK пакет. Проксито без състояние не знае нищо от това и глупаво предава пакета на правилното място.
И тук плавно преминаваме към въпроса какви други безплатни инструменти за работа с SIP протокола (освен Asterisk, за който всички знаят) съществуват в * nix системите. В момента има два проекта, посветени на тази цел, Kamailio и OpenSIPS. Те имат общ прародител, така че няма смисъл да описваме подробно различията им. Статията ще разгледа OpenSIPS.
КАКВО Е OPENSIPS? ИНСТАЛАЦИЯ
OpenSIPS осигурява функционалността на почти всички сървърни компоненти, споменати по-горе, от SIP прокси до B2BUA. Разликата му от Asterisk е, първо, че OpenSIPS манипулира пакети и SIP сесии на по-ниско ниво,какво прави Asterisk, и второ, Asterisk е по същество комбинат, например съдържа освен SIP и медиен сървър. Освен това Asterisk не поддържа мащабиране.
OpenSIPS има дълга история: поне (ако броите предшествениците му) не е по-млад от Asterisk и като се има предвид, че SIP за последния не е роден, може дори да е по-стар. Той също така поддържа модулна архитектура и има много модули. В момента се разработва клон 2.0 от нулата, който ще има различна архитектура - сегашната беше положена, без да се вземат предвид някои от съвременните реалности, които все още не бяха предвидени по това време. Този клон обаче е в процес на активно развитие и аз предпочитам стабилни версии, така че тук ще бъде описана версия 1.11.3, която между другото е LTS.