Fibre Channel

Fibre Channel (FC) ( — волоконный канал) — семейство протоколов для высокоскоростной передачи данных. Стандартизацией протоколов занимается Технический комитет T11, входящий в состав  (INCITS), аккредитованного Американским национальным институтом стандартов (ANSI). Изначальное применение FC в области суперкомпьютеров впоследствии практически полностью перешло в сферу сетей хранения данных, где FC используется как стандартный способ подключения к системам хранения данных уровня предприятия.

Fibre Channel Protocol (FCP) — транспортный протокол (как TCP в IP-сетях), инкапсулирующий протокол SCSI по сетям Fibre Channel. Является основой построения сетей хранения данных.
В русскоязычной литературе термин используется без перевода.

История 
История Fibre Channel началась в 1988 году, а в 1994 году был утверждён ANSI как стандарт, упрощавший интерфейс HIPPI, для которого применялся массивный 50-парный кабель с громоздкими разъёмами. Первоначально интерфейс Fibre Channel должен был повысить дальность и упростить подключение линий передачи, а не увеличить скорость.

Топологии Fibre Channel 
Топологии FC определяют взаимное подключение устройств, а именно передатчиков (трансмиттеров) и приёмников (ресиверов) устройств. Существует три типа топологии FC:
 Точка-Точка (point-to-point)
Устройства соединены напрямую — трансмиттер одного устройства соединён с ресивером второго, и наоборот. Все отправленные одним устройством кадры предназначены для второго устройства.
 Управляемая петля (arbitrated loop)
Устройства объединены в петлю — трансмиттер каждого устройства соединён с ресивером следующего. Перед тем, как петля сможет служить для передачи данных, устройства договариваются об адресах. Для передачи данных по петле устройство должно завладеть «эстафетой» (token). Добавление устройства в петлю приводит к приостановке передачи данных и пересобиранию петли. Для построения управляемой петли используют концентраторы, которые способны размыкать или замыкать петлю при добавлении нового устройства или выходе устройства из петли.
 Коммутируемая связная архитектура (switched fabric)
Основана на применении коммутаторов. Позволяет подключать большее количество устройств, чем в управляемой петле, при этом добавление новых устройств не влияет на передачу данных между уже подключёнными устройствами. Так как на основе коммутаторов можно строить сложные сети, на коммутаторах поддерживаются распределённые службы управления сетью (fabric services), отвечающие за маршруты передачи данных, регистрацию в сети и присвоение сетевых адресов и проч.
Fibre Channel изначально разрабатывался как высокоскоростная сеть, пригодная для работы в реальном времени. В транспорте Fibre Channel заложены механизмы регулирования потока (flow control), синхронизации портов по времени и возможность повтора сбойной информации без обращения к протоколу верхнего уровня. Упрощенно, без подробностей зонирования и виртуализации, в Fibre Channel при подключении порта обязательным является выполнение login, так что коммутатор о всех портах сети всегда знает, какой порт где находится и что может. Когда в коммутатор Fibre Channel приходит кадр данных, то коммутатор уже знает, где находится адресат и куда этот кадр маршрутизировать (в отличие от Ethernet, в котором коммутатор после прихода кадра сначала ищет, где находится адресат, и только после его ответа посылает ему этот кадр, и, если истекло время старения, коммутатор Ethernet вновь будет искать маршрут для другого кадра данных от того же источника к тому же адресату, хотя оба порта были online). Очевидно, что подход Fibre Channel требует больше ресурсов, поэтому коммутаторы по этой технологии значительно дороже, чем для Ethernet.

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

Уровни 
Fibre Channel состоит из пяти уровней:

 FC-0 Физический. Описывает среду передачи, трансиверы, разъёмы и типы используемых кабелей. Включает определение электрических и оптических характеристик, скоростей передачи данных и других физических компонентов. Поддерживается как оптическая, так и электрическая среда (витая пара, коаксиальный или твинаксиальный кабели, а также многомодовое или одномодовое волокно), со скоростью передачи данных от 133 мегабит/с до 10 гигабит/с на расстояния до 50 километров.
 FC-1 Кодирование. Описывает процесс 8b/10b Кодирования (каждые 8 бит данных кодируются в 10-битовый символ (Transmission Character)), специальные символы и контроль ошибок. Для 10GFC используется кодирование 64b/66b, вследствие этого 10GFC несовместим с 1/2/4/8GFC.
 FC-2 Кадрирование и сигнализация. Описывает сигнальные протоколы. На этом уровне происходит определение слов, разбиение потока данных на кадры. Определяет правила передачи данных между двумя портами, классы служб.
 FC-3 Общих для узла служб. Определяет базовые и расширенные службы для транспортного уровня, а также такие особенности, как: расщепление потока данных (striping) (Возможность передачи потока данных через несколько соединений (маршрутов), отображение множества портов на одно устройство.
 FC-4 Отображения протоколов. Предоставляет возможность инкапсуляции других протоколов (SCSI, ATM, IP, HIPPI , AV, VIA, IBM SBCCS и многих других.)

Логические типы портов 

В зависимости от поддерживаемой топологии и типа устройства порты разделяются на несколько типов:

 Порты узлов:
 N_Port (Node port), порт устройства с поддержкой топологии FC-P2P («Точка-Точка») или FC-SW (с коммутатором).
 NL_Port (Node Loop port), порт устройства с поддержкой топологии FC-AL (arbitrated loop — управляемая петля).

 Порты коммутатора/маршрутизатора (только для топологии FC-SW):
 F_Port (Fabric port), порт «фабрики» (switched fabric — коммутируемая связная архитектура). Используется для подключения портов типа N_Port к коммутатору. Не поддерживает топологию петли.
 FL_Port (Fabric Loop port), порт «фабрики» с поддержкой петли. Используется для подключения портов типа NL_Port к коммутатору.
 E_Port (Expansion port), порт расширения. Используется для соединения коммутаторов. Может быть соединён только с портом типа E_Port.
 EX_port порт для соединения FC-маршрутизатора и FC-коммутатора. Со стороны коммутатора он выглядит как обычный E_port, а со стороны маршрутизатора это EX_port.
 TE_port (Trunking Expansion port (E_port)) внесён в Fibre Channel компанией CISCO, сейчас принят как стандарт. Это расширенный ISL или EISL. TE_port предоставляет, помимо стандартных возможностей E_port, маршрутизацию множественных VSANs (Virtual SANs). Это реализовано применением нестандартного кадра Fibre Channel (vsan-тегирование).

 Общий случай:
 L_Port (Loop port), любой порт устройства с поддержкой топологии «Петля» — NL_port или FL_port.
 G_port (Generic port), порт с автоопределением. Автоматически может определяться как порт типа E_Port, A_Port, или F_Port..

Варианты оптической среды передачи данных

Инфраструктура Fibre Channel 
Оборудование для инфраструктуры Fibre Channel подразделяется на несколько классов.

 Директоры — многопортовые модульные коммутаторы с высокой степенью доступности.
 Выделенные коммутаторы (standalone switches) — коммутаторы с фиксированным количеством портов.
 Стэкируемые коммутаторы (stackable switches) — коммутаторы, имеющие дополнительные высокопроизводительные порты для связи независимых шасси между собой.
 Встраиваемые коммутаторы (embedded switches) — коммутаторы, встраиваемые в блейд-корзину (blade enclosure), где есть разделение портов на функции (порты, предназначенные для подключения blade-серверов, не могут быть использованы для межкоммутаторных соединений).
 Концентраторы (hubs) — устройства, обеспечивающие связь в управляемой петле (Arbitrated Loop).
 Концентраторы-коммутаторы (loop-switches) — коммутаторы, обеспечивающие связь в управляемой петле (Arbitrated Loop). Концентраторы и концентраторы-коммутаторы практически не используются для подключения оконечных устройств; используются для подключения дисков к контроллерам в дисковых массивах.

Для увеличения дальности соединения используют дополнительное трансмиссионное оборудование, такое, как мультиплексоры на основе WDM и др.

Основные производители оборудования для инфраструктуры Fibre Channel: Brocade, Cisco, QLogic, Emulex.

Логические элементы потока данных 
При передаче данных выделяют следующие логические последовательности:

Упорядоченные наборы (Ordered Sets) 
Четырёхбайтные слова (Transmission Words), содержащие данные и специальные символы. Разбиение потока данных на упорядоченные наборы позволяет сохранять синхронизацию между передатчиком и ресивером на уровне битов и слов. Упорядоченные наборы всегда начинаются с символа K28.5. Основные типы наборов определяются сигнальным протоколом.

Разделители кадров 
Разделители кадров используются для отделения одного кадра от другого. Существует два таких набора:

 Начало кадра (Start Of Frame, SOF)
 Конец кадра (End Of Frame, EOF)

Базовые сигналы 
 Сигнал бездействия (Idle). Передаётся для обозначения готовности принимать и отправлять кадры.
 Сигнал готовности ресивера (Receiver Ready, R_RDY). Используется при управлении потоком данных (см. Классы Обслуживания) для индикации наличия места в буфере ресивера.
 Базовые последовательности. Передаются для оповещения о нестандартном состоянии порта. При получении такой последовательности в ответ посылается соответствующая последовательность или сигнал бездействия. Стандарт поддерживает четыре последовательности:
 Offline (OLS)
 Not Operational (NOS)
 Link Reset (LR)
 Link Reset Response (LRR)

Протоколы (Protocols) 
В сетях хранения данных используются низкоуровневые протоколы:

 Fibre Channel Protocol (FCP), транспорт SCSI через Fibre Channel. Наиболее часто используемый на данный момент протокол. Существует в вариантах 1 Gbit/s, 2 Gbit/s, 4 Gbit/s, 8 Gbit/s и 10 Gbit/s.
 iSCSI, транспорт SCSI через TCP/IP.
 FCoE, транспортировка FCP/SCSI поверх «чистого» Ethernet.
 FCIP и iFCP, инкапсуляция и передача FCP/SCSI в пакетах IP.
 HyperSCSI, транспорт SCSI через Ethernet.
 FICON транспорт через Fibre Channel (используется только мейнфреймами).
 ATA over Ethernet, транспорт ATA через Ethernet.
 SCSI и/или TCP/IP транспорт через InfiniBand (IB).

Адресация

Уникальный адрес устройства 
Каждое устройство имеет уникальный 8-байтовый адрес, называемый NWWN (Node World Wide Name), состоящий из нескольких компонентов:
 A0:00:BB:BB:BB:CC:CC:CC
 | |   |        |
 | |   |        ±------ Назначаются производителем устройства.
 | |   ±--------------- Назначаются IEEE для каждого производителя.
 | ±------------------- Всегда 0:00 (Зарезервировано стандартом)
 ±--------------------- Число произвольно выбирается производителем.

Классы служб (CoS) 
Fibre Channel поддерживает следующие классы служб (Classes of service, CoS).

Стандарт FC-PH определяет Классы 1-3, Класс 4 определён в стандарте FC-PH-2 (в FC-FS-2 установлен устаревшим), Класс 5 предложен для изохронного режима, но недостаточно стандартизирован, Класс 6 определён в стандарте FC-PH-3, Класс F — в стандартах FC-SW и FC-SW2.
 Класс 1 — Acknowledged Connection Service (выделенные каналы с подтверждением). Между двумя устройствами через коммутатор или фабрику устанавливается выделенное соединение. Принимающее устройство отправляет на передающее устройство подтверждения приёма каждого кадра. Соединение остаётся открытым до тех пор, пока передача данных не будет завершена. Время установления соединения составляет несколько микросекунд. Предоставляемый канал обычно дуплексный, хотя по необходимости возможна организация симплексного (например, если необходимо одновременно передавать данные одному узлу и принимать от другого). Устройствам доступна вся его пропускная способность. Используется сквозное управление потоком. Гарантируется высокая скорость обмена и правильный порядок приёма кадров. Идеально подходит для приложений, работающих с большими объёмами данных — например, системы моделирования или обработки видео. Если пропускная способность не используется полностью данным приложением, она всё равно недоступна для других приложений, пока соединение не будет закрыто, так как попытки соединения с таким портом будут отвергаться с выдачей сигнала «занято». Поэтому в стандарте рекомендуется закрывать соединения в отсутствие данных для передачи. В этом случае доступна максимальная пропускная способность. Основной недостаток — невозможность работы между собой портов с разной скоростью работы. Стандартизованные в FC-PH-2 однонаправленная передача, буферизация класса 1 и Camp on, начиная с FC-FS, считаются устаревшими.
 Класс 2 — Acknowledged Connectionless Service (передачи без организации соединения с подтверждением). Каждый кадр коммутируется независимо от остальных, конечный порт может одновременно передавать и принимать данные от нескольких узлов, при этом канал между двумя взаимодействующими не выделяется (по сути, происходит мультиплексирование коммутатором трафика). Каждый кадр подтверждается принимающим устройством. Кадры могут доставляться по различным маршрутам, то есть упорядоченная доставка кадров в данном классе не гарантирована, упорядочивание последовательности кадров осуществляется на уровне FC-2. Утилизация доступной полосы пропускания ниже, чем в Классе 1, поскольку включаются механизмы регулирования потока на покадровой основе.
 Класс 3 — Unacknowledged Connectionless Service, иногда называется Datagram Connectionless Service (передачи без организации соединения и без подтверждения). Аналогичен классу 2, за исключением того, что нет подтверждения доставки. Пропускная способность в отсутствие ошибок, из-за отсутствия подтверждений, незначительно (от 0 % в большинстве случаев до 3 % в худшем для класса 2 случае) увеличивается по сравнению с классом 2, но гарантий доставки нет, упорядоченная доставка кадров не гарантирована. Упорядочивание последовательности кадров осуществляется на уровне FC-2, а запрос на повторную передачу потерянных кадров осуществляется протоколами верхних уровней. Соответственно, в случае ошибок передачи, а также если кадр отклоняется или ресурс занят, то кадр теряется, и подключаются протоколы верхних уровней. Пропускная способность падает, поскольку у протоколов верхних уровней время реакции и тайм-ауты существенно выше, чем на уровне FC-2. При этом для протоколов реального времени задержка с повтором может быть такой, что передаваемая информация уже устарела. Используется для организации многоадресных и широковещательных рассылок, применяется также в системах массовой памяти. Наиболее распространённый класс коммутируемых FC-сетей, поскольку более прост в реализации и распространённые протоколы верхних уровней SCSI и IP работают именно в этом классе.
 Класс 4 — Fractional Bandwidth Connection-oriented Service (соединение с дробной полосой пропускания) между N_Ports. Сходен с Классом 1, так как тоже предполагает установление соединения, подтверждение доставки, фиксированную задержку, соблюдение порядка кадров. Соединение между портами устанавливается в виде виртуального канала с полосой пропускания, достаточной для предоставления услуг с предсказуемым качеством (QoS, включающий гарантированные полосу пропускания и максимальную задержку). Такой виртуальный двунаправленный канал состоит из двух однонаправленных виртуальных соединений (Virtual Circuit, VC), причём на каждом VC могут обеспечиваться различные QoS. Каждый N_port может устанавливать несколько таких соединений (до 254). Используется для критичных ко времени доставки данных — например, видео- и аудиопотоков.
 Класс 5 — Isochronous Service (изохронное соединение). Не стандартизован. Предназначен для приложений, требующих немедленной доставки данных без промежуточной буферизации.
 Класс 6 — Unidirectional Connection Service (однонаправленное соединение). Аналогичен Классу 1, но является исключительно однонаправленным. Используется для широковещательных и многоадресных рассылок через соответствующий сервер. N_port может затребовать соединения Класса 6 на одно или несколько устройств (портов). Установленное соединение существует, пока инициатор в явном виде не закроет его. Разработан для доставки трафика реального времени (например, аудио и видео).
 Смешанный класс — Intermix — является подвидом класса 1. Позволяет передавать кадры класса 2 или 3 в те моменты, когда приложение первого класса не занимает канал, причём кадры классов 2 или 3 необязательно должны быть адресованы тому же получателю, что и у класса 1. Был специально разработан с целью частично устранить блокировку фабрики передачами первого класса.
 Класс F — используется коммутаторами для управления и передачи служебной информации, передача идёт без установления соединения по Inter Switch Links (ISL) между E_ports.

Сферы применения Fibre Channel 

Fibre Channel широко применяется для создания сетей хранения данных (Storage Area Networks).
Благодаря высокой скорости передачи данных, малой задержке и расширяемости практически не имеет аналогов в этой области. Однако, в последние годы, область его применения постепенно перемещается в сегмент высокопроизводительных систем и решений, а бюджетный сегмент с успехом осваивается недорогими решениями iSCSI на базе Gigabit Ethernet и 10G Ethernet. Наметилась также тенденция к переносу транспортного уровня протокола FC в тот же Gigabit и 10G Ethernet при помощи протоколов FCoE и FCIP.

См. также 
 HBA
 SCSI
 iSCSI
 Thunderbolt
 Сетевая плата

Ссылки 
 Fibre Channel Industry Association
 Technical Committee T11
 Jon Tate, Brian Cartwright, John Cronin, Christian Dapprich. IBM SAN Survival Guide. IBM RedBooks, SG24-6143-01, August 2003
 Онлайн-книга «Сети хранения данных Fibre channel»

Примечания 

Протоколы транспортного уровня
Fibre Channel