Архитектура


Среда распространения

Любое устройство (компьютер, сервер, принтер, накопитель и т. д.), имеющее возможность обмениваться данными с использованием технологии Fibre Channel, называется N_порт (Node port) или просто узел. В настоящее время межузловой обмен происходит по полнодуплексным последовательным соединениям со скоростью 1.0625 GBit/s.

Множество связанных между собой N_портов Fibre Channel образуют среду распространения сигнала. Во избежание смешения с устоявшимися понятиями разработчики данной технологии решили не использовать для ее обозначения слово «network», и предпочли ввести новый термин «fabric». Учитывая, что нам до сих пор ни разу не попадались удачные примеры перевода этого слова на русский язык, предлагаем хотя бы в рамках данной статьи называть такую среду распространения «решеткой».

Понятие решетки аппаратно независимо и не рассматривает топологию физических межсоединений между ее отдельными узлами. Единственное ограничение заключается в максимально допустимом размере адресного пространства 224, т. е. более 16 миллионов узлов (эквивалентно сети класса A).

FC-4 FC-3 FC-2 FC-1 FC-0 Mediann Fibre Channel Clickable Map


Архитектурная модель Fibre Channel в деталях описывает параметры соединений и протоколы обмена между отдельными узлами решетки. Примерно как и в случае сетевых протоколов, эта модель может быть представлена в виде многослойного стека функциональных уровней, хотя и без непосредственного соответствия с OSI. Пять функциональных уровней архитектуры Fibre Channel определяют физический интерфейс, схему кодировки, сигнальный протокол, общие процедуры и связь с приложениями. Нумерация идет от самого низкого аппаратного уровня FC-0, отвечающего за параметры физического соединения до верхнего программного FC-4, взаимодействующего с приложениями более высокого уровня.

Среда передачи и физические интерфейсы (fc-0)

На данном уровне задаются физические параметры полнодуплексного последовательного соединения между портами. В качестве среды передачи может быть использована витая пара, коаксиальный или твинаксиальный кабели, а также многомодовое или одномодовое волокно. Источниками света могут служить как мощные длинноволновые OFC лазеры, так и менее дорогие non-OFC. Для снижения задержек и уменьшения электрических и температурных перепадов по соединению идет постоянная и равномерная передача и прием сигнала. Кроме того, в целях предотвращения низкочастотных токов структура передаваемого сигнала должна быть сбалансирована постоянным чередованием 0 и 1 вне зависимости от присутствия в нем полезных данных, что упрощает точное распознавание сигнала и снижает количество ошибок. Упрощенно говоря, в FC-0 определяется способ передачи полученных с более высокого уровня бинарных последовательностей. Нелишне также отметить, что именно данный уровень позволяет изменять скорости передачи от 250 Mbit/s до 8 Gbit/s, не затрагивая остальные более высокие уровни.

Протокол передачи (fc-1)

Протокол передачи определяет, как «вплести» данные в нижележащие сигналы FC-0, как установить соединения между портами и как, в случае необходимости, исправить обнаруженную ошибку. На этом уровне с помощью кодировки IBM 8b/10b 8-битовые порции данных преобразуются в 10-битовые сбалансированные по количеству 0 и 1 последовательности, что требуется для корректной работы FC-0. Для этого каждый планируемый к передаче байт (любой из 256 символов ASCII) преобразуется в четыре возможных комбинации для 10-битового представления, после чего выбираются две наиболее сбалансированные. Здесь действуют два простых правила — не менее 4 нулей и единиц в 10-битовой последовательности и не более четырех 0 или 1 подряд. В итоге, из двух предложенных ему на выбор 10-битовых последовательностей уровень FC-0 передает ту, первый символ которой отличается от последнего символа предыдущей. Таким образом, кодировка 8b/10b выполняет функцию НЧ фильтра, не пропуская низкочастотную составляющую и существенно облегчая работу приемника.

На этом уровне также используется символ K28.5 (только не спрашивайте нас, что означает K28.5, лучше сразу звоните на IBM :-). Эта 10-битовая последовательность не может быть получена из символов ASCII путем преобразования 8b/10b, поэтому может смело применяться в качестве служебной. Разумеется, для соответствия объявленным правилам передачи и этот символ существует как в виде позитива (1100000101), так и негатива (0011111010). В соответствии с теми же правилами последовательность из пяти 0 или 1 не может встретиться при передаче данных и однозначно определяется, как служебный сигнал.

В результате применяемых на уровнях FC-0/1 алгоритмов вероятность возникновения ошибки на переданный бит (BER — Bit Error Rate) составляет ничтожную величину 10-12, что на три порядка лучше, чем для применяемых в SCSI или Ethernet асинхронных способов передачи.

Сигнальный протокол (fc-2)

Вот мы и дошли до самого интересного, составляющего основное ядро Fibre Channel. Сигнальный протокол определяет иерархическую структуру посылок для установления связей между работающими через FC-AL приложениями. Основными объектами этого уровня являются слова (words), кадры (frames), пакеты (sequences) и обмены (exchanges).

Базовым элементом и минимальной единицей передачи является слово, но пересылка данных между узлами FC-AL требует помещения слов в некий контейнер. Ничего удивительного, что такой контейнер назван кадром.

Один или несколько последовательных кадров, несущих помещенную в них связанную информацию в виде файла данных, графики, программы или же IP-пакета, называются пакетом, который представляет из себя однонаправленную посылку от передающего узла принимающему.

Набор пакетов, которыми обмениваются узлы для обслуживания работающего через них приложения, называется обменом. Обмен, понимаемый как диалог между двумя приложениями высокого уровня, является двунаправленным, и после своего начала может оставаться открытым сколь угодно долго. Такая синтаксическая конструкция является отличительной чертой Fibre Channel и позволяет ему поддерживать огромное количество протоколов одновременно.
Здесь нужно обратить внимание, что сама решетка Fiber Channel умеет работает исключительно с кадрами, доставляя их между отправляющим и получающим узлами. Она даже не подозревает о более сложных синтаксических конструкциях в виде пакетов или обменов, которые создаются и разбираются самими узлами.

Слова (words)

Передача в Fibre Channel идет строго 4-байтовыми словами, т. е. 40-битовыми последовательностями на уровне FC-0. Слова идут слитно и постоянно вне зависимости от наличия информации для передачи, когда передающий порт генерирует слова-пустышки (IDLE) в соответствии с требованиями уровня FC-0.

Для пересылки данных все байты представлены в виде символов ASCI. Если первый байт слова, вернее даже, его первые 10 бит на уровне FC-1 замещаются на служебный символ K28.5, то оно распознается, как служебное (ordered set) и, в зависимости от содержимого трех остальных байт, приобретает различную смысловую нагрузку. Примерами служебных слов могут быть IDLE (постоянная передача, когда все равно больше нечем заняться), ARB (запрос на арбитраж в петле), SOF (начало кадра) и EOF (конец кадра).

Кадры (frames)

Служат «транспортными контейнерами» для пересылок между отдельными узлами решетки. Начало кадра определяется служебным словом SOF (Start Of Frame), структуру которого мы рассматривали ранее. Непосредственно за SOF располагаются шесть слов заголовка и от 0 до 528 смысловых слов. Кадр завершается контрольным словом CRC (Cyclic Redundancy Check) и EOF (End Of Frame). Другими словами, размер каждого кадра может варьировать от 9 до 537 слов, что позволяет его гибко подстраивать под объем передаваемой информации.

Следующее сразу за SOF первое слово заголовка (header word 0) содержит адрес маршрутизации по решетке Fibre Channel. Остальные пять слов заголовка содержат уникальные идентификаторы последовательностей (header word 1), обменов (header word 2), определяют номер кадра в этих конструкциях (header word 3), относительное смещение в оперативной памяти (header word 4) и тип сообщений (header word 5) — SCSI, IP, AV, VI etc.

Далее размещаются смысловые слова, ради которых все это и затевалось. Их количество в кадре может варьировать от 0 до 528 и определяется передающим портом с учетом собственных возможностей и возможностей остальных портов, информацию о чем он получает во время процедуры подключения (log-in).

Служебное слово CRC является всегда предпоследним в кадре и служит для проверки правильности передачи заголовка и смысловых слов на основе содержащихся в нем контрольных 4 байт (32 бит).

Как уже все догадались, кадр закрывается с помощью слова EOF. И только после получения EOF порт опознает предыдущее слово, как CRC, ведь в нем все 4 байта являются контрольными и служебному символу K28.5 попросту не хватило места.

После столь детального разбора структуры кадра пришло время рассказать про одну маленькую деталь, о которой обычно умалчивают разработчики Fibre Channel в публикациях, рассчитанных на массовую аудиторию потенциальных пользователей. Ее некоторая скандальность заключается в том, что после завершения кадра N_порт обязан также передать не меньше 6 слов IDLE.

В основе требования передачи шести слов IDLE между кадрами заложена та же самая идея, что и при выборе кодировки 8b/10b — пожертвовать некоторой частью полосы канала для получения простого, недорогого и вместе с тем надежного механизма передачи. Кодировка 8b/10b «съедает» 20% пропускной способности канала в обмен на простой и надежный механизм распознавания слов. Шесть слов IDLE между кадрами делают примерно то же самое для обработки самих кадров. Дело в том, что в процессе передвижения кадра по решетке все встречающиеся ему на пути узлы имеют слегка отличающиеся собственные опорные частоты. В итоге, узел с несколько меньшей собственной частотой посылает кадры несколько медленнее, чем принимает, поэтому во избежание «наползания» кадров друг на друга он просто время от времени выкидывает слова IDLE между ними. C той же целью более «быстрый» узел также время от времени может вставлять недостающие IDLE, чтобы «не наступать на пятки» своему соседу.

Надеемся, что читатели специализированного издания поймут всю красоту такого подхода, когда можно не предъявлять высокие требования к кварцевым резонаторам разных производителей, к тому же работающим в разных температурных условиях.

Здесь сразу уместен вопрос о реальной пропускной способности Fibre Channel. Уже на ранних этапах разработки стандарта стало очевидным, что производители и пользователи вкладывают в это определение различный смысл, поэтому во избежание путаницы было принято соломоново решение. В настоящее время производители оборудования должны указывать аппаратную скорость компонентов в мегабитах или гигабитах в секунду, в то время как пользователи должны руководствоваться реальной скоростью передачи данных, измеряемой мегабайтами в секунду.

Если вспомнить о 20% избыточности 8b/10b, то в данном случае 1 Gbit/s = 100 MBytes/s. А чтобы иметь возможность обеспечить поток пользовательских данных 100 MBytes/s с учетом избыточности CRC, адресных заголовков и других служебных слов, сейчас на уровне FC-0 используется скорость аппаратной передачи 1.0625 Gbit/s.

Таким образом, учитывая полнодуплексную реализацию Fibre Channel, можно говорить о представлении пользователю 200 MBytes/s в случае симметичности потоков данных, т. е. в контексте технологии FC-AL 1.0625 Gbit/s = 200 MBytes/s.

Пакеты (sequences)

Синтаксическая конструкция пакетов FC-AL определяется как серия из одного или нескольких кадров, несущих отдельные порции единого блока информации. К примеру, SCSI команда вполне помещается в один кадр и, в данном случае, рассматривается, как пакет. Совершенно такая же ситуация и с 2 GB блоком данных, только пакет в этом случае будет состоять из 960 млн кадров. Блок данных всегда передается последовательно, что определяется протоколами более высокого уровня. Тем не менее, если при движении по решетке некоторые кадры будут задержаны, принимающий порт способен корректно собрать принятые кадры в блок данных на основании содержащихся в заголовке SEQ_ID (идентификатор последовательности) и SEQ_CNT (порядковый номер кадра в последовательности).

Обмены (exchanges)

Каждое взаимодействие между приложениями через Fibre Channel происходит в контексте обмена. Каждый обмен имеет инициатора (originator) и ответчика (responder). Для начала обмена инциатор посылает первый кадр первого пакета обмена ответчику. Содержимое кадра может составлять, к примеру, SCSI команду. В заголовке этого кадра инициатор присваивает значение OX_ID (exchange originator identification). После этого все кадры данного обмена будут возвращаться от ответчика с этим же OX_ID, что позволит инициатору получать контекстную информацию о приложениях и протоколах более высокого уровня из собственной таблицы соответствий. Одновременно с этим ответчик приваивает собственное значение RX_ID (exchange responder identification) в первом кадре своего первого пакета в пределах данного обмена. После получения этого кадра инициатором все дальнейшие кадры содержат уникальные идентификаторы сторон в контексте данного обмена, что позволяет точно установить принадлежность кадров при нескольких одновременных обменах. К примеру, кадры пакетов обмена SCSI командами могут приходить вперемешку с кадрами пакетов обмена IP, но порт сможет рассортировать их «на лету», отделив мух от котлет. Когда обмен завершен, соответствующие значения OX_ID и RX_ID освобождаются для использования в будущих обменах. Таким образом N_порт FC-AL может рассматриваться, как многопротокольный маршрутизатор.

Каждый порт способен начать и поддерживать до 64 тыс. конкурентных обменов. Одновременно с этим он способен отвечать еще на 64 тыс. обменов с их поддержкой.

Оригинальность синтаксической структуры Fiber Channel, поддерживаемая словами 1-5 заголовка, разительно отличает его от остальных протоколов передачи. Во-первых, порт имеет возможность конкурентной поддержки различных протоколов высокого уровня. Во-вторых, управление типами передачи выполняется на аппаратном уровне с минимальными микросекундными задержками. И, самое главное, все это происходит без участия системной шины, центрального процессора и операционной системы, т. е. не создавая потенциально узкие места.

Общие процедуры (fc-3)

Этот уровень зарезервирован под описание общих процедур при наличии двух или более N_портов в хосте. Одним из примеров такой процедуры является образование «группы захвата» (hunt group), когда два или более N_портов объединяются под единым адресом, что позволяет увеличить пропускную способность канала от порта до Fibre Channel решетки.

Отображение протоколов (fc-4)

Как и все предыдущие уровни, FC-4 также является чисто аппаратным и отвечает за преобразование различных протоколов в сигнальный протокол FC-AL и обратно. На основании заголовка пришедшего кадра содержащиеся в нем данные преобразуются и помещаются в область оперативной памяти, выделенную для приложения. Понятно, что вряд-ли эта функция может быть реализована программно при скоростях обмена 200 Mbytes/s, вследствие чего на этом уровне хранится аппаратный набор логических матриц (profiles), определяющих бинарное соответствие FC-AL и наследуемых протоколов высокого уровня.

По нашему глубокому убеждению, именно качество стандартизации логических матриц данного уровня будет определять коммерческий успех технологии Fibre Channel в целом. Дело в том, что преобразование одного протокола в другой может производиться различными методами и на первых порах производителям не всегда удавалось договориться, чей же метод эффективнее и быстрее, особенно когда каждый из них уже потратил деньги на разработку собственного набора микросхем. Тем не менее, на сегодняшний день методы преобразования SCSI (для жестких дисков) и IP уже определены и приняты в виде стандарта. В ближайшее время будет завершена работа по принятию таких же единых методов преобразования для недисковых устройств SCSI, а также FDDI, Token Ring, ATM, AV, VI, IBM SBCCS, HIPPI и многих других. После того, как метод преобразования конкретного протокола принимается, его алгоритм становится доступным для любого производителя, что делает бессмысленным использование собственного метода и гарантирует совместимость различных устройств.





Компания «Медианн»





Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.