Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Обзор конфигурации Kamailio в Kazoo

IqTek
October 01, 2019

Обзор конфигурации Kamailio в Kazoo

IqTek

October 01, 2019
Tweet

More Decks by IqTek

Other Decks in Programming

Transcript

  1. Конференция Kamailio 2019 О себе • Работа с VoIP c

    2005 года • Преимущественно Asterisk • Kamailio для решения побочных задач • Эксплуатация Kazoo c 2014 года
  2. Конференция Kamailio 2019 Kazoo • OpenSource проект • Ранее использовал

    opensips • Масштабируемая телефонная платформа • Ключевые компоненты ◦ Kamailio ◦ FreeSwitch ◦ RabbitMQ ◦ Erlang apps ◦ Haproxy ◦ CouchDB
  3. Конференция Kamailio 2019 Kamailio in Kazoo • SIP SBC •

    Шлюз для Websocket • Сервер приложений • Сервисы, называемые ‘ролями’ • yum install -y kazoo-kamailio
  4. Конференция Kamailio 2019 Модуль kamailio • Модуль db_kazoo • Конвертирует

    запросы на запись и чтение • Обменивается AMQP сообщения (RabbitMQ) • В mainstream kamailio c 4.2
  5. Конференция Kamailio 2019 int db_kazoo_bind_api(db_func_t *dbb) { dbb->init = db_kazoo_init;

    dbb->use_table = db_kazoo_use_table; dbb->close = db_kazoo_close; dbb->query = db_kazoo_query; dbb->free_result = db_kazoo_free_result; dbb->insert = db_kazoo_insert; dbb->replace = db_kazoo_replace; dbb->insert_update = db_kazoo_insert_update; dbb->delete = db_kazoo_delete; dbb->update = db_kazoo_update; dbb->raw_query = db_kazoo_raw_query; dbb->cap = DB_CAP_ALL; return 0; }
  6. Конференция Kamailio 2019 Модуль kamailio if(kazoo_query("callevt", $var(routing_key), $var(payload_request))) { $du

    = $(kzR{kz.json,Channels[0].switch_url}); } event_route[kazoo:consumer-event-presence-mwi-update] { if($xavp(watchers=>message-summary) > 0) { kazoo_pua_publish_mwi($kzE); pres_refresh_watchers("$(kzE{kz.json,From})", "message-summary", 1); } }
  7. Конференция Kamailio 2019 Функции и переменные • kazoo_publish(exchange, routing_key, json_payload)

    • kazoo_query(exchange, routing_key, json_payload [, target_var]) • kazoo_subscribe(exchange, exchange_type, queue, routing_key) • kazoo_subscribe(json_description) • kazoo_pua_publish(json_payload) • kazoo_encode(to_encode, target_var) • kazoo_json(json_payload, field, target_var) Переменные: $kzR и $kzE
  8. Конференция Kamailio 2019 Асинхронные события • Отправка BLF и MWI

    без FreeSwitch • SIP MESSAGE • Расширенная информация о парковке (Polycom) • Обновление dispatcher по команде от kz_apps
  9. Конференция Kamailio 2019 Enabled/Disabled Roles # # #!trydef TRAFFIC_FILTER-ROLE #

    # #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE
  10. Конференция Kamailio 2019 Enabled/Disabled Roles # # #!trydef TRAFFIC_FILTER-ROLE #

    # #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE • На каждую роль - файл конфигурации • local.cfg - настройки • defaults.cfg - обязательная конфигурация
  11. Конференция Kamailio 2019 Dispatcher • Выбирает наилучший freeswitch • Поиск

    сервера клиента • Поиск вызова для pickup/transfer • trunkstore -> kamailio ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE
  12. Конференция Kamailio 2019 Nat Traversal ## Enabled Roles #!trydef DISPATCHER-ROLE

    #!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • nathelper
  13. Конференция Kamailio 2019 Registrar ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef

    NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • registrar • usrloc
  14. Конференция Kamailio 2019 Presence ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef

    NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • presence • presence_dialoginfo • presence_mwi • resence_xml • 1000+ строк конфигурации
  15. Конференция Kamailio 2019 Опциональные модули # # #!trydef TRAFFIC_FILTER-ROLE #

    # #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE • PUSHER - поддержка APNS Push нотификаций • TLS - поддержка TLS • WEBSOCKET - WS/WSS • RATE_LIMITER - поддержка ограничений настроенных в Kazoo • SIP_TRACE - поддержка Homer • PRESENCE_SYNC - синхронизация presence на разных зонах Kazoo