понедельник, 4 июля 2016 г.

Что Ethernet-инженеру нужно знать о SDH/PDH

Отложим пока тему IP/MPLS и разбавим её немного технологиями из прошлого (казалось бы...).

Так уж вышло, что я всегда ассоциировал себя с IP/Ethernet инженером. Пришел я в "индустрию" довольно поздно, когда более или менее современный провайдер уже давно отказался от старинностей навроде SDH/PDH и сует везде Ethernet c IP. Конечно, я пересекался порой с чем-то вроде E1-потоков. Но так традиционно складывалось, что данная тематика всегда была вне моей зоны ответственности. Порой коллега (Игорь, привет!) поднимал рядом какие-то потоки, настраивал сигнализацию, и я даже осознавал о чем в принципе идет речь, но понимания, пусть даже поверхностного, у меня не было. Первым серьезным знакомством был GPON, там уже стало понятно, что все не так-то просто (сравнивая с новомодным и милым сердцу Ethernet'ом).

А потом я, по долгу службы, начал знакомиться с сетями других операторов и провайдеров и все начало становится на свои места. SDH/PDH живее всех живых. А причина проста, построив однажды здоровенные транспортные сети на этих технологиях, компании просто не хотят тратить деньги на их модернизацию. Все и так работает. Пусть технология не новая, но почти 40 Гигабит пропихнуть в SDH можно...

Долой прелюдии, перейдем к сути.

В этом посте я хотел бы только прикоснуться к таким вещам как PDH/SDH/SONET. Я вообще не гуру в этой области, так что на правду в последней инстанции не претендую. Более того, я даже оставлю в этом посте открытые вопросы на будущее.

К сожалению, без истории тут не обойтись. Пока я её не знал, я вообще не понимал зачем оно в свое время создавалось. Но мы попробуем быстренько пробежаться по ней. Как известно, передача данных по сети раньше была невозможна. Сетями правили телефонисты. Традиционная телефонная сеть - это сеть с коммутацией каналов, а это значит, что когда один абонент звонил другому, информация передавалась в отдельном канале, который могли занимать только два абонента. Так сложилось традиционно. Сначала этот канал создавали люди (Девушка, соедините...), потом, с увеличением популярности телефонии, стали придумывать как этот процесс автоматизировать и ускорить, начали появляться АТС. Первые экземпляры соединялись проводочками напрямую. Таким образом канал между абонентами ассоциировал реальный кабель, который был проключен от одного телефонного аппарата до другого. Рано или поздно стало понятно, что такая схема абсолютно недееспособна, в результате чего пришли к идеи уплотнения звонков на магистральных линиях между телефонными станциями (АТС). Сама идея заключается в передаче множества каналов используя один кабель.

Первая такая система, на сколько я знаю, соединяла два офиса известной компании Bell и была способна объединиться 24 голосовых телефонных канала в один поток. Как известно, для передачи голоса нужно всего лишь 64 Кбит/с, 24 х 64 = 1536 Кбит/с. Вместе с данными так же шел служебный трафик, который занимал ещё 8 Кбит/с, таким образом первый смультиплексированный поток голосовых данных имел скорость передачи в 1544 Кбит/с. Именно эта скорость и была потом взята при разработке стандартов.

Я вечно забываю, почему голосу нужно ровно 64Кбит/с. Там что-то с теоремой Котельникова и дискретизацией. Возможно, в будущем напишу об этом. А может и нет. Приятно каждый раз узнавать это заново.

Первый мультиплексор Bell брал 24 голосовых канала, сжимал кодеком пришедшие к нему за определенный промежуток времени данные, после чего он мог засунуть все эти данные в тот же самый промежуток времени и передать своему соседу. Тот делал обратную операцию. Это и есть временное мультиплексирование/демультиплексирование (Time Division Multiplexing, TDM). Для того чтобы вся эта концепция работала, мультиплексорам нужно знать в какой момент времени ждать данных, поэтому вся сеть должна быть синхронизированной, что по-простому говоря значит, что у всех устройств в сети должны быть подведены часы. Тема "синхры", на сколько я понимаю, заслуживает отдельного поста. 

PDH (Plesiochronous Digital Hierarchy)

Идея Bell всем понравилась и инженеры стали трудиться над созданием стандартов. Америка взяла за основу опыт своих соотечественников из Bell, Европа решила немного доработать концепцию. В итоге появились технологии называемые в общем (PDH, Plesiochronous Digital Hierarchy).

Речь идет именно о иерархии. Раз уж мы начали с Bell, то с ними и продолжим. 
  • 24 канала (Digital Signal 0, DS0) мультиплексируются в первичный уровень иерархии, мы получаем DS1 (24 x 44 + служебка = 1544 Кбит/с).  
  • 4 DS1 канала мы мультиплексируем в канал высшей иерархии (вторичный) DS2, получаем (1544 х 4 + служебка = 6312 Кбит/с)
  • 7 DS2 объединяем в DS3 (44,7 Мбит/с)
  • 6 DS3 объединяем в DS4 (274,1 Мбит/с)
Каждый DS носит название T в американской системе (T1,T2,T3,T4)

Мне пока непонятно, почему каждый раз мультиплексирование происходило с разным коэффициентом. Наверняка, причина была. Видимо так же подумали европейцы и в своем стандарте попытались исправить ситуацию.
  • 32 канала DS0 пакуется в E1(2 с гаком Мбит/с)
  • 4 E1 в E2 (8 с гаком Мбит/с)
  • 4 E2 в E3 (34 с гаком Мбит/с)
  • 4 E3 в E4 (139 с гаком Мбит/с) 

Мультиплексирование происходит в PDH "каскадно". Представим большой телефонный узел за которым сидит много абонентов. Ну скажем, 400 для ровного счета. На этом узле стоят PDH мультиплексоры, на вход которых подаются аналоговые голосовые потоки. По 32 штуки на каждый мультиплексор. Эти "первичные" мультиплексоры преобразовывают голос в цифровой сигнал, жмут его и засовывают все 32 потока в канал E1. Далее все эти каналы E1 заводятся по 4 штуки на ещё один ряд мультиплексоров, которые на выходе дают каналы E2. Затем из E2 аналогичным образом получается E3. В нашем случае, это будет один мультиплексор и на выходе будет только один поток E3, который может вместить 480 голосовых потоков. Как мы видим, наши 400 голосовых канала легко поместятся в E3 и ещё останется место, которое мультиплексор добьет мусором до ровного счета и отправит в линию. Делает он этого потому что он должен передать определенный поток данных в единицу времени, если данных у него на этот момент недостаточно, он добивает нулей и единиц к ним, чтобы заполнить "фрейм". На другом телефонном узле стоит такой же мультиплексор, который сначала делает из E3 четыре потока E2, следующие мультиплексоры из E2 делают E1, ну и последний ряд достает уже голосовые потоки и передает их в сторону абонентов.
По началу PDH использовался телефонистами и объединял крупные узлы телефонной сети. Для своих нужд он был довольно функционален. Однако, рано или поздно, возникла необходимость передавать данные, к чему PDH изначально был не очень приспособлен. К тому же, в мире существовало 3 стандарта PDH, и европейцы, японцы и американцы не могли передавать трафик между друг-другом. Хотя наверное как-то могли все же... Однако, в общем и целом, технологии не были совместимы.

Основной проблемой PDH обычно обозначается тот факт, что из потока данных нельзя вычленить данные более мелких уровней не демультиплексируя поток до него. Что я имею в виду?

Обратимся к тому же примеру. Допустим вместо одного голосового канала на одной из наших телефонных станций, какой-то крупный и богатый юрик (на тот момент) передает 64 Кбит/с своих данных. Более того, богатый юрик хочет, чтобы этот канал вел не на соседнюю АТС, а был выведен где-то по середине. Для реализации такого простого случая, в промежуточной точке надо сначала разобрать E3 на E2, каждый E2 разобрать на E1, каждый E1 разобрать на DS0 потоки по 64Кбит/с, один из потоков вывести юрику, потом собрать оставшиеся DS0 в E1 (добив мусором пустое место), собрать E2 в E3 и отправить данные в сторону соседней АТС, куда они изначально-то и шли. Заметьте, это нужно только для того чтобы передать данные в одну сторону. Нет никакой возможности глядя на поток данных E3 сразу же выцепить оттуда определенный DS0 или E1. Оборудование просто не знает где оно, на этих потоках просто нет никаких меток. Вычислить где тот или иной поток по времени так же невозможно, потому что всегда в среде есть мусорные данные, которые получаются хотя бы потому, что данные на мультиплексор не могут прийти все одновременно. Какие-то потоки пришли чуть позже, какие-то чуть раньше, мультиплексор вынужден добивать такие данные мусорными последовательностями, чтобы осуществить мультиплексирование и передачу данных.

Факт выше наряду с другими недостатками PDH (низкая скорость передачи, поддержка только топологии точка-точка) привели к ещё одному витку развития транспортных сетей.

SHD (Synchronous Digital Hierarchy)

Новая технология сразу создавалась для передачи любых данных. Она была призвана избавить инженеров от всех проблем, который принес в их жизнь PDH. Стоит сказать, что технология SDH действительно удалась. Мне она очень нравится, даже не смотря на её сложность.

Принцип работы SDH схож с PDH. Все тоже мультиплексирование TDM, однако для того чтобы расширить функционал, сама схема мультиплексирования немножко усложнилась. Сразу обратимся к одной из них. Технология много раз дорабатывалась, в итоге редакций этих схем штуки три точно. Да, забыл упомянуть, что создать одну единственную схему работы опять не получилось, в итоге есть SONET (американцы) и просто SDH (разрабатывался европейским институтом ETSI). Различий не так много, на схеме ниже встретимся с первым из них. Рисовать самому схему мультиплексирования было бы слишком, поэтому я нашел картинку в интернете.
Каюсь, не мой контент... Взято с Wikipedia.org

Пробежимся по этой схеме. Допустим, у нас есть SDH мультиплексор на вход которого приходит поток E1.

1. Мультиплексор сразу же добивает к нему биты для того чтобы выровнять его по времени. После этой процедуры получается некая сущность (контейнер) С-12.
2. Потом добавляется ещё один заголовок POH, в котором содержится маршрутная информация, которая идентифицирует контейнер. Это позволит вытащить этот контейнер на любом мультиплексоре по пути не разбирая весь поток на более элементарные. В результате получается другая сущность (virtual container) VC-12.
3. Далее добавляется ещё один заголовок PTR и получается сущность TU-12 (tributary unit). Среди прочих функций, заголовок PTR позволяет правильно собрать последовательность многих TU в одну группу.
4. Настало время первого мультиплексирования, три TU-12 укладываются в TUG-2 (tributary unit group). Семь таких групп TUG-2 может быть смультиплексировано в VC-3 (по мнению американцев) или в ещё одну группу TUG-3 (по мнения европейских коллег).
5. Далее по европейской нотации три TUG-3 мультиплексируются в VC-4, при этом к TUG-3 добавляется заголовок POH, которая позволит потом идентифицировать контейнер. На VC-4 в свою очередь добавляется PTR и вся эта каша из данных и заголовков теперь называется AU-4 (administrative unit).
6. Все AU собираются в группы AUG-1. На AUG-1 добавляется последний заголовок SOH, который делится на мультиплексную секцию и регенераторную. Внутри просто жесть... Если очень грубо, то в мультиплексной секции имеется маршрутная информация о том куда отправить эту сущность, а в регенераторной секции содержится информация для регенераторов. Они расставлены по сети и их задача просто электрически регенерировать сигнал. Далее AUG пакуется в STM-1. Как-то так ) Интересно, кто-то ещё читает...

STM - это базовый модуль в SDH, он определяет сколько данных можно передать. STM так же имеют иерархическую структуру.
  • STM-1 = ~155 Мбит/с
  • STM-4 = ~622 Мбит/с
  • STM-16 = ~2,5 Гбит/с
  • STM-64 = ~10 Гбит/с
  • STM-256 = ~40 Гбит/с

Соответственно AUG-1 из примера можно
  • запихнуть в STM-1
  • смултиплексировать (х4) в AUG-4 и положить в STM-4
  • смултиплексировать (х4) в AUG-4 и затем смультиплексировать (х4) в AUG-16 и положить в STM-16
  • и так далее...

Protection

В заголовке POH, который добавляется на уровне VC присутствует так же информация, которая позволяет организовать запасные пути для каналов.

Они могут быть:
На уровне Client Trail. В нашем примере это уровень VC-12, когда появился первый заголовок POH. Это уровень наиболее близкий к абоненту, по сути это и есть абонентский канал.

На уровне Server Trail. Здесь так же можно организовать protection. В нашем случае это уровень, в котором добавляется второй заголовок POH, а именно уровень VC-4. Один Server trail передает много Client Trail, соответственно, на этом уровне защита организуется сразу для нескольких клиентских потоков.

Обычно SDH сеть представляет собой кольцо, соответственно строиться два канала по двум сторонам кольца. Один из них рабочий, другой запасной.

Много всего осталось за пределами поста, может в будущем исправлюсь. Стоит, как минимум, поговорить о конкатенации, схемах резервирования, заголовках... но это как-нибудь потом. Так же для меня остается открытым вопрос, почему PDH - почти синхронная иерархия, а SDH - уже совсем синхронная. )

Ну что же, в следующих постах возвращаемся в MPLS. Поговорим о такой штуке как VLL.

Update: Подумал, что нужно продолжить серию "Что Ethernet-инженеру нужно знать о...". В следующих постах напишу про ATM и DSL, далее, наверное, будет PON.

5 комментариев:

  1. Спасибо за статью!
    По поводу элементарного канала цифровых телефонных сетей (который 64Кбит/с) хорошо объяснено у Олиферов, процитирую (с. 78, 5-е издание):
    Для качественной передачи голоса используется частота квантования амплитуды звуковых колебаний в 8000 Гц (дискретизация по времени с интервалом 125 мкс). Для представления амплитуды одного замера чаще всего используется 8 бит кода, что дает 256 градаций звукового сигнала (дискретизация по значениям). В этом случае для передачи одного голосового канала необходима пропусная способность 64 Кбит/с: 8000 Гц х 8 бит.

    ОтветитьУдалить
    Ответы
    1. Рад, что статья оказалась полезной. Спасибо за уточнение!

      Удалить
  2. А молодец, хорошая статья.

    ОтветитьУдалить
  3. По теореме Котельникова - любой непрерывный сигнал можно представить в виде дискретных отсчетов (соответственно преобразовать обратно) при условии Fд => 2Fв, где Fд - частота дискретизации (8кГц), Fв - верхняя частота спектра сигнала. В телефонных сетях спектр передаваемого сигнала 300-3400 Гц. Т.о. Fд должна быть не менее 6,8кГц. Выбрали 8кГц, т.к. это необходимо и достаточно для четкого распознавания речи. Как указал выше Михаил Чистяков, дискретные отсчеты квантуются по 256-ти уровням, а затем кодируются в 8 бит двоичного кода. Процесс называется импульсно-кодовой модуляцией ИКМ. На отечественных АТС использовались системы ИКМ-30/32 (30 каналов тональной частоты + 1 служебный канал + 1 канал синхронизации) - на выходе получаем 2Мбитный поток Е1

    ОтветитьУдалить