Вы здесь

MS Skype for Business 02. Стандарты и протоколы

Для начала сделаем небольшой экскурс в историю создания сетей.
В те времена когда не было Интернета, единственной системой общения в реальном времени была телефонная связь.
Многие в детстве играли в телефон на проволоке и с жестяными банками на концах: по сути это и является простейшим видом связи circuit-switched network.

В приложении к электрическому телефону, для соединения двух абонентов, они должны находиться в одном электрическом контуре (circuit).
Для соединения друг с другом нескольких абонентов использовался switch: оператор физически подключает контуры друг с другом - отсюда название circuit-switched network.

Со временем технологии развивались и конечные устройсва получили свои номера (extension numbers).
Несколько switches соединялись друг с другом, и чтобы позвонить на абонента другого коммутатора необходимо набрать номер соответствующего свитча.
Например:
ms_skype_for_business_02._standarty_i_protokoly_01_ciscomaster.ru.jpg
Для подключения на Switch 5, Extn 101 нужно набрать 5101. А для предотвращения совпадения номеров на каждом из свитчей, мы будем набирать 9-ку.
Отсюда пошло понятие outside line: когда коммутатор видит вначале номер "9", далее он будет ожидать номер другого коммутатора и затем собственно extension number:
9 5 101.
Такая концепция была позже расширена в понятия national routing, international routing, т.е. во все правила набора, с которыми мы имеем дело сегодня.

Circuit-Switched Signaling

Любой тип передачи данных включает в себя две вещи:
- Data: собственно передача голоса
- Signaling: необходима для установки соединения.

Digital transmission

Цифровая передача использует передачу 0 и 1.
Для перевода аналоговой речи в в цифровую передачу используются различные codecs (от слова coder-decoders).

Цифровая передача обладает несколькими преимуществами:
- Дешевизна. Цифровая передача позволяет передавать несколько разговоров через несравнимо меньшее количество проводов, чем этого требует аналоговая передача.
- Качество передачи. Цифровая передача не подвержена помехам при усилении сигнала.

Конечно у цифровой передачи есть и минусы. Самый главный минус - это задержки, необходимые для кодирования/декодирования и маршрутизации.

Digital Signaling

Вообще голосовые сети можно разделить на три категории:
- Analog Voice Circuit Switched Network
- Digital Voice Circuit Switched Network
- Voice over IP Packet Network

Исторически эти технологии появлялись в том же порядке.
Digital Voice Circuit Switched Network использует Time Division Multiplexing (TDM), которая позволяет передавать множество соединений с использованием одной линии. При этом каждое соединение использует определенный Time Slot.
Изначально каждый поток занимал 64Kbps.
Сигнализацию можно разделить две категории:

  • access signaling - изначально это были on-hook/off-hook. Далее это развилось в pulse signaling, а затем появился Dual-Tone Multi-Frequency (DTMF). Для обратной связи от станции к пользователю (busy, call waiting и др) используются Standard tones, которые в разных странах разные.
  • trunk signaling - в приложении к Digital Voice Circuit Switched Network бывают сигнализации:
    CAS: Сигнализация передаётся в голосовом канале.
    CCS: Сигнализация передается в выделенном канале, т.е. выделяется отдельный Time Slot под сигнализацию.
    SS6 и SS7 есть разновидности CCS.
    В настоящее время операторы предпочитают использовать CCS.

ms_skype_for_business_02._standarty_i_protokoly_02_ciscomaster.ru.jpg

Packet-Switched Networks

Смысл Packet-Switched Networks - это разделение данных на секции или пакеты, и передача этих пакетов отдельно. Это даёт возможность передавать одновременно пакеты из разных источников и в разные назначения.
Каждый пакет имеет адрес источника, а также адрес назначения. Передачей пакетов занимаются устройства под названием Router.

Packet-Switched Networks обладают высокой гибкостью и эффективностью. Они позволяют обеспечивать пропускную способность в различных направлениях и приоритезацию.
Минусом таких сетей являются задержки, которые могут появиться из-за перегрузки сети.

Современная Packet-Switched Network это есть IP Network. Internet также является IP Network.

Transport Layer Protocols

В приложении к IP телефонии нам интересны Transport Control Protocol (TCP) и User Datagram Protocol (UDP).
У низ разница в том, что TCP обеспечивает надежность соединения: получение пакетов требует подтверждения, и при потере пакет пересылается заново.

Real-time Data

Коммуникации Аудио и Видео требуют так называемую real-time transmission. Это означает что задержка скажем в секунду делает такой трафик абсолютно бесполезным.
UDP и TCP также имеют инструменты, обеспечивающие сортировки пакетов, т.е. чтобы они прибывали в том же порядке как и отправлялись.

Пакеты могут прибегать к месту назначения с различными задержками, при этом нарушается последовательность получения этих пакетов; это различие во времени называется jitter.
Для преодоления jitter используется Jitter Buffer.
Например Real-Time Transport Protocol (RTP) использует Jitter Buffer.
Получающая система буферизует входящие пакеты. тем самым давая определённое время добежать всем опаздывающим, в результате получающая система получит continuous playback.
ms_skype_for_business_02._standarty_i_protokoly_03_ciscomaster.ru.jpg
На рисунке видно, что пакеты отсылаются в определённом порядке, но прибегают к месту назначения с различными задержками от 40Milliseconds.
Получающая система использует Jitter Buffer на 80 Milliseconds, что позволяет дождаться большинство опаздывающих пакетов.
На рисунке видно, что задержка 7-го пакета оказалась более 80 и такой пакет оказался бесполезным и даже при его получении он будет отброшен.
Такие ситуации могут быть по разному обработаны, в зависимости от используемого кодека. Одни кодеки замещают недостающий пакет предыдущим, другие пытаются "угадать".
В любом случае если речь идёт только об одном пакете - его длина всего 20Milliseconds, и подобные замены практически незаметны.

Вообще jitter buffer выставляется автоматически, но чаще всего в Skype for Business Server 2015 он составляет 40ms

Quality of Service

Поскольку интересующий нас трафик является Real-time Data, в загруженных сетях для такого типа трафика необходима приоритезация.
Вообще существуют два типа QoS:
◆ Integrated Services, RFC 1633
◆ Differentiated Services, RFC 2475

Skype for Business Server 2015 поддерживает только Differentiated Services через маркировку пакетов метками Differentiated Services Code Point (DSCP).
По умолчанию маркировка происходит следующая:
ms_skype_for_business_02._standarty_i_protokoly_04_ciscomaster.ru.jpg
Важно понимать, что для корректной работы приоритезации, QoS должна быть настроена на всех маршрутизаторах по пути трафика.

Session Description Protocol (SDP)

Session Description Protocol, SDP - протокол, который обеспечивает стороны необходимой информацией для поднятия media session.
С помощью SDP передающая и принимающая стороны договариваются о параметрах соединения: IP адреса и порты, используемые media codecs, authentication и т.д.
SDP может быть расширен через использование a= information lines.

SDP имеет текстовый формат, например:

v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 49170 RTP/AVP 0 m=video 51372 RTP/AVP 31 m=application 32416

Session Initiation Protocol (SIP)

Первое что стоит отметить - в настоящее время все упоминания о SIP на самом деле упоминают SIPv2.
Не вдаваясь в подробности, можно сказать, что SIPv2 есть продолжение развития двух первоначальных протоколов SIPv1 и SCIP.
Далее все упоминания SIP буду означать SIPv2.

Вообще SIP описывается RFC 2543, но SIP примечателен тем, что существует множество его расширений:
◆ RFC 2976 (INFO)
◆ RFC 3261 (ACK, BYE, CANCEL, INVITE, OPTIONS, REGISTER)
◆ RFC 3262 (PRACK)
◆ RFC 3265 (SUBSCRIBE, NOTIFY)
◆ RFC 3311 (UPDATE)
◆ RFC 3428 (MESSAGE)
◆ RFC 3515 (REFER)
◆ RFC 3903 (PUBLISH)
Благодаря этим расширениями SIP обладает огромной гибкостью.

Microsoft в свою очередь не осталась в стороне и наплодила своих расширений.
Если вы видите заголовки SIP, начинающиеся с "ms-" - это оно и есть.

Далее мы рассмотрим Microsoft implementation of SIPv2 и его работу с Skype for Business Server 2015.

Использование SIP

В своём основном виде SIP используется для создания, изменения и закрытия сессий между юзерами и или между юзером и сервером.
SIP в своём синтаксисе похож на HTTP, и является протоколом request-and-response. Это означает, что для кжадого отданного request ожидается соответствующий response.

SIP response похожи на HTML:
ms_skype_for_business_02._standarty_i_protokoly_05_ciscomaster.ru.jpg

Рассмотрим некоторые SIP requests:

  • INVITE - это начало или инициация SIP-сессии. INVITE в себя включает SDP для уточнения параметров сессии между сторонами.
    ms_skype_for_business_02._standarty_i_protokoly_06_ciscomaster.ru.jpg
    Как видно на диаграмме, на запрос INVITE в ответ пришло два SIP response: 180 Ringing и 200 OK.
  • ACK - на диаграмме ACK есть подтверждение INVITE со стороны initiating user. Каждая SIP response должна быть подтверждена. Например если сторона получает несколько Responses - на каждую отправляется подтверждение.
  • CANCEL - используется для отмены какой-либо ожидающей INVITE.
    ms_skype_for_business_02._standarty_i_protokoly_07_ciscomaster.ru.jpg
  • BYE - используется для отключения established session.
  • REGISTER - используется для информирования сервера насчет местонахождения клиента, или по сути IP адреса по которому доступен клиент.
    Skype for Business Server 2015 поддерживает Multiple Points of Presence (MPOP), когда один и тот же юзер может одновременно подключаться к примеру через комп, и мобилу. Все эти устройства осуществляют регистрацию отдельно.
    ms_skype_for_business_02._standarty_i_protokoly_08_ciscomaster.ru.jpg
  • OPTIONS - позволяет сделать запрос какую функциональность поддерживает сторона

Формат SIP

Все сообщения SIP имеют определённый формат:

SIP Request
◆ Request line

INVITE sip:Linda.lync@rlscomms.info SIP/2.0

◆ Several header lines
◆ Empty line
◆ Message body

SIP response
◆ Status line

SIP/2.0 180 Ringing

◆ Several header lines
◆ Empty line
◆ Message body

header lines бывают самые разные, также можно добавить свои, как это сделала Microsoft (заголовки начинающиеся на ms-)
Рассмотрим некоторые стандартные заголовки:

  • Call-ID - уникален для каждой сессии SIP, это позволяет отслеживать одну и ту же сессию через несколько серверов, что очень облегчает поиск проблем. Если звонок транферится - Call-ID меняется
  • Contact - похож на заголовок From, но дополнительно содержит IP и порт. Это очень полезно когда мы имеем дело с сессиями с несколькими Endpoints, что позволяет иденитифицировать каждую сторону.
  • Cseq - Command Sequence (Cseq) используется для отслеживания запросов внутри одной и той же сессии. например:
    Cseq: 1 INVITE ......... Cseq: 2 INVITE

    При этом соответствующая 200 OK будет содержать то же значение Cseq, также как и ACK и CANCEL message.

  • From - в данном заголовке содержится SIP URI отправителя:
    From: "Linda Lync";tag=0769872b19;epid=2b663e94f4
  • Record-Route/Route/Via - все эти три заголовка имеют отношение к маршруту по которому данное SIP Message прибыло.
    Record-Route содержит proxy server.
    Route header содержит return path.
    Via header используется для обнаружения routing loops, т.к. в нем записаны каждый Proxy, через которые прошло сообщение.
    Record-Route: ;tag=2EC6A1159F9FC738075EDD59C27F45C0 Via: SIP/2.0/TLS 192.168.2.4:5061;branch=z9hG4bK1AEEEECC.20D7529ED18C1AF6;branched=FALSE; ms-internal-info="baRiub04VXxb6vw502CuXS9lPngcMAbhMUPLl9C6gLAzieUtcgkpDG4wAA"
  • To - содержит SIP URI получателя
    To: ;epid=7f3d62f538

Providing Presence

Presence это возможность получать информацию о присутствии пользователя.
Для Presence используются два типа SIP messages: SUBSCRIBE и NOTIFY.
NOTIFY используется для обновления состояния.
SUBSCRIBE используется для подписки на получения уведомлений о состоянии других пользователей.
С точки зрения пользователя, для получения уведомлений Presence, нужно контакт добавить в contacts list.
ms_skype_for_business_02._standarty_i_protokoly_09_ciscomaster.ru.jpg

Instant Message

Instant Messages также очень популярная опция.
После того, как клиент залогинился (REGISTER) и получил статус своего собеседника (SUBSCRIBE, NOTIFY), он может отправить сообщение, используя MESSAGE request.
ms_skype_for_business_02._standarty_i_protokoly_10_ciscomaster.ru.jpg

Skype for Business Codecs and Standards

Вообще Skype for Business Server 2015 использует продвинутый кодек SILK, но с точки зрения SIP session setup выбор кодека происходит через использование SDP, который в свою очередь является частью initial INVITE.

Рассмотрим пример пример лога:
ms_skype_for_business_02._standarty_i_protokoly_11_ciscomaster.ru.jpg

ms_skype_for_business_02._standarty_i_protokoly_12_ciscomaster.ru_0.jpg

Кодек и методы recovery

Для восстановления потерянных пакетов Skype for Business Server 2015 использует метод Forward Error Correction (FEC).
FEC работает динамически и активируется в случае если пакеты начинают теряться.
Предположим исходный голос выглядит:
ms_skype_for_business_02._standarty_i_protokoly_13_ciscomaster.ru.jpg
Для передачи данного отрывка клиент его разбивает на сэмплы по 20ms, и далее данные пакетируются в IP packets:
ms_skype_for_business_02._standarty_i_protokoly_14_ciscomaster.ru.jpg

Работа FEC заключается в том, что каждый пакет несет данные предыдущего пакета.
Это конечно увеличивает нагрузку на сеть, но несильно, т.к. размер голосых пакетов невелик и даже сравним с размером заголовков этих пакетов.
ms_skype_for_business_02._standarty_i_protokoly_15_ciscomaster.ru.jpg

В результате, благодаря FEC, часть данных можно восстановить:
ms_skype_for_business_02._standarty_i_protokoly_16_ciscomaster.ru.jpg

Video Codecs

Skype for Business Server 2015 использует видео кодек H264 Advanced Video Coding/Scalable Video Coding (AVC/SVC).

Данный кодек использует многоуровневый подход для передачи данных клиентам. При этом каждый вышестоящий уровень и спользует нижестоящий + добавляет свои детали. Это позволяет передавать множество разрешений без необходимости обработки каждой из них поотдельности.
ms_skype_for_business_02._standarty_i_protokoly_17_ciscomaster.ru.jpg

В дополнение в каждом потоке может быть запрошено различное разрешение, это даёт возможность клиенту запросить несколько потоков с различными разрешениями.
ms_skype_for_business_02._standarty_i_protokoly_18_ciscomaster.ru.jpg

Skype for Business Server 2015 используется сжатие для уменьшения трафика.

Video Codec, как и Аудио, некотииируется через использование SDP.
ms_skype_for_business_02._standarty_i_protokoly_19_ciscomaster.ru.jpg

Работа video codec

Как и в голосе, видео изображение разбивается на сэмплы.
Каждый sample начинается и заканчивается I-frame (Intra-coded picture). I-frame в себе несёт полную картинку изображения, никак не сжимается, и проходит каждые 4 секунды для peer-to-peer video и каждые 3 секунды для конференций.
Между I-frame идет комбинацию других кадров: P-frames (predicted picture) и B-frames (bi-predictive picture) - эти кадры содержат лишь изменения фрагментов картинки.
ms_skype_for_business_02._standarty_i_protokoly_20_ciscomaster.ru.jpg

ms_skype_for_business_02._standarty_i_protokoly_21_ciscomaster.ru.jpg
Потерянные frames игнорируются, но поскольку общая картинка состоит из взаимосвязанных frames, в случае потери мы видим "артифакты".

Desktop Sharing

Desktop Sharing использует Remote Desktop Protocol (RDP) в качестве media stream, и использует SIP как signaling method

Протокол XCCOS

SIP отличный протокол для basic messaging. SIP позволяет нам организовывать voice, video, and desktop sharing.
Skype for Business Server 2015 также использует дополнительный протокол для организации persistent chat - Extensible Chat Control Over SIP (XCCOS).
Аналогично протоколу SDP, XCCOS передаётся внутри SIP messages в XML-формате.

Внешние подключения

При инициализации сессии SIP, SDP передаёт инфорамацию об IP адресе и портах сервера, куда клиент может подключиться. Это прекрасно работает внутри сети LAN, но требует отдельного обсуждения подключений клиентов извне, поскольку на периметре сети установлены брендмауэры.
Решение - это установка Edge server, который работает как SIP proxy server + media relay server. В этом случае клиенты не подключаются друг ко другу непосредственно, а к серверу, используя его как посредник.

Процесс подключение происходит в несколько шагов:
1. Log in to the front-end server using SIP via the Edge server (as a proxy).
2. Request the Media Relay Authentication Service (MRAS) credentials via the front-end server.
3. Request the Edge endpoint details.
4. Send the INVITE to another user, populating the SDP with Edge endpoint details.
5. Negotiate which endpoint to use for media communications.
6. Begin the session.

Клиент может находиться за NAT, в этом случае используются специальные методы для успешного прохода SIP через NAT (STUN и TURN)

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image