Brocade SAN Часть 4: Соединение на длинных дистанциях
Сегодня мы будем говорить о растягивании FC фабрики на длинные расстояния. Как одна из наиболее часто встречающихся задач — соединение нескольких ЦОДов. Стоит отметить, что у самих коммутаторов нет возможности работать на расстоянии более 25км, а компания Brocade не выпускает оборудования для соединения FC коммутаторов на длинных дистанциях. Но как же соединять ЦОДы, находящиеся в разных городах и даже странах? Надеюсь я вас заинтриговал, поэтому добро пожаловать под кат.
FC Over Dark Fiber. Трафик native Fibre Channel, который обычно идет через E_ Ports или EX_Ports, передается по выделенной оптической линии, соединяющей площадки. Если темная оптика арендуется, то ее владелец не предоставляет сервисов на линии и их должен обеспечить сам клиент. FC через темную оптику (over dark fiber) обеспечивает высокую надежность и производительность, поскольку при применении этого подхода до минимума снижается использование оборудования, которое может отказать, не требуется конверсия протоколов и полоса пропускания используется только приложениями которые относятся к приложениям SAN. Эта технология меньше всего влияет на задержки и на практике этот подход имеет смысл применять когда расстояние не более нескольких сот километров при использовании машрутизаторов Brocade и большинства коммутаторов 4 и 8 Gbit, поскольку у этих устройств много буферных кредитов на порт.
FC Over xWDM. Соединения native Fibre Channel осуществляются с подключением к аппаратуре уплотнения канала по длине волны (DWDM или CWDM). Трафик передается по выделенной длине волны, но по оптике между площадками могут работать и другие сервисы, использующие другую длину волны. По производительности этот подход аналогичен темному волокну и не добавляет задержек кроме тех, что связаны со скоростью света или ограничением пропускной способности и практически также надежен как темное волокно (если не считать риск отказа самого устройства WDM). В то же время он поддерживает передачу на большие расстояния, чем темное волокно, если промежуточные WDM используются как повторители.
FC Over IP. Основное преимущество FCIP – возможность относительно недорого подключаться к практически везде доступным сервисам MAN/WAN. В то же время это самый ненадежный и медленный вариант из-за того, что обычно в IP WAN используется много хопов через оборудование разных операторов (поэтому среду передачи труднее конфигурировать) и в них заложена переподписка. В результате, коэффициенты переполнения и потери пакетов больше, чем у FC SAN. В теории FCIP может использовать коммутируемые сервисы IP/Ethernet или выделенные соединения точка-точка (point-to-point) Gigabit Ethernet.
L0 — к таким портам относятся все локальные порты E-port и EX- port, которые не используются для удаленной передачи данных. Максимальная дистанция до 2 км.
LE — используется на дистанциях до 10 км, независимо от скорости передачи. Этот режим не требует дополнительных лицензий.
LD – режим динамического обнаружения расстояния, является самым удобным режимом. Он автоматически проверяет линк и с помощью сложного алгоритма вычисляет число необходимых кредитов исходя из расстояния и скоростей линка.
LS – это статически конфигурируемый режим. Это самый гибкий режим для более опытных пользователей, который позволяет обеспечить полное самостоятельное управление.
Вернёмся к стенду, который я показывал в предыдущей статье, где у нас было 3 ISL линка. Если мы вспомним одно из обязательных условий для создания транка, то мы поймём, почему порты 0 и 1 у нас не собрались в транк из двух линков. Правильно — разная длина линков. В нашем случае у нас каждая фабрика соединена между ЦОДами линками двух разных провайдеров (в обоих случаях используется DWDM). Т.е. в случае падения одного из провайдеров или обрыва линка мы не лишаемся одной фабрики, а лишь получаем деградацию производительности.
Оба порта 0 и 1 находятся у нас в динамическом режиме.
Порты 4 и 5, соединяющие наш Core коммутатор с Edge коммутатором, стоящем в соседней стойке, оба находятся в режиме L0, т.к. при небольшой длине соединения параметр порта Long Distance выставлен в Off.
То же самое в gui
При работе на длинных дистанциях, у нас появляется ещё одна крайне важная сущность — буферные кредиты. Протокол FC подразумевает передачу трафика без потери пакетов и обеспечивает целостность данных. FC порт не может начать передавать пакеты данных пока порт приёмник не будет готов их принять. Все порты в FC имеют определённое количество буферных кредитов. Возможно, что порт получатель не может передать пакет дальше в данный момент по каким то причинам, поэтому ему нужен буфер, для временного их хранения. Контроль потока (Flow control) используется для того, чтобы никакой порт в цепочке между отправителем и получателем не отбрасывал кадры FC. В FC используется механизм буферных кредитов (buffer to buffer credits, BB_credits). Он гарантирует, что кадры не будут посылаться до тех пор, пока отправитель не получит от получателя подтверждение о наличии свободных буферов. Когда порт устройства первоначально подключается к фабрике, то устройство получатель сообщает отправителю число доступных буферов, а отправитель сообщает получателю, сколько буферов ему нужно.
Устройства согласуют число доступных буферов и выделяют буферные кредиты до начала передачи данных. Когда кадры передаются от узла к коммутатору, они записываются в память коммутатора, и передающее устройство делает отметку об использовании буфера. Передача прекращается, если больше не осталось свободных буферных кредитов. Между тем, получатель пытается освободить буферы, пересылая пакеты дальше, и оповещает отправителя, если ему удастся освободить буферы (командой R_RDY или VC_RDY). Таким образом, кредиты возвращаются узлу максимально быстро и, если нет проблем в фабрике, устройство может постоянно передавать пакеты со скоростью физической линии. Если где то (в сети или на принимающей стороне) возникнет переполнение линии, то, вскоре, все буферные кредиты будут исчерпаны, передающее устройство будет ждать освобождения буферов и возобновит пересылку данных, только когда ему будет предоставлен хотя бы один кредит. Весь этот процесс происходит автоматически и незаметно для администратора сети. На обычный F порт выделяется все всего 8 буферных кредитов, но в случае с Long Distance их количество зависит от расстояния между коммутаторами. И именно на больших дистанциях это имеет особое значение, т.к. с увеличением длинны кабеля увеличивается и время прохождения пакета от точки А к точке Б и пакет занимает определённую длину потока.
Если мы используем порт в режиме LD, то количество необходимых буферов будет рассчитано и установлено автоматически, в случае же с LS, количество кредитов нам необходимо задать самостоятельно. Существует и формула для рассчёта количества кредитов, но можно воспользоваться утилитой portbuffercalc, которая в состоянии рассчитать их количество для конкретного порта учитывая расстояние и скорость.
switch:admin> portbuffercalc 0 -distance 55 -speed 8
239 buffers required for 55km at 8G and framesize of -2bytes
Вернёмся к предыдущему скриншоту и пробежимся по основным параметрам портов.
Buffer Limited — Указывает, ограничен ли порт. Порт с ограниченным буфером может подключаться к сети с меньшим количеством выделенных буферов, чем указано в его настройках, что позволяет ему работать с уменьшенной пропускной способностью, а не отключаться из-за отсутствия буферов.
Buffer Needed — Требуемое количество буферов.
Buffer Allocated — Количество выделенных буферов.
Recommended Buffer — Количество рекомендуемых буферов. Рекомендуемое значение буфера не редактируется. Значение конфигурации порта по умолчанию отображается при первом запуске Extended Fabric. При изменении размера кадра и расстояния рекомендуемое значение буфера изменяется в соответствии с текущей конфигурацией порта.
Remaining Buffer — Количество оставшихся буферов. Оставшееся значение буфера не редактируется. Если значение Buffers Needed превышает оставшееся значение буфера, выводится предупреждающее сообщение.
VC Link Init — «заполняющие слова», используемые для соединения на длинной дистанции. Когда установлен режим IDLE (0), линк использует заполняющие слова IDLE. При установке в режим ARB (1) используется ARB.
Link Distance — Дистанция линка.
Desired Distance — Требуется для портов в режиме LD или LS, требуемое расстояние в километрах для связи. Для канала в режиме LD требуемое расстояние используется как верхний предел расстояния связи для вычисления доступности буфера для других портов в той же группе портов. Если измеренное расстояние больше заданного расстояния, требуемое расстояние используется для выделения буферов. В этом случае порт работает в деградированном режиме, а не отключается из-за недостаточного количества буферов. Для LS фактическое расстояние не измеряется, вместо этого требуемое расстояние используется для расчета буферов, необходимых для порта.
Сделаю небольшое отступление по поводу «заполняющих слов» (Fill Word). На самом деле это опять-таки тема первой, теоретической части, но всплыла она только сейчас. Промежутки между фреймами заполняются специальными «заполняющими словами» — fill word. Как правило, это IDLE, хотя начиная с FC 8G было стандартизовано использование ARB(FF) вместо IDLE, в целях снижения электрических помех в медном оборудовании (но по-умолчанию коммутаторами используется IDLE).
Режимы Fill Word:
Mode 0: Использует IDLE при инициализации линка и IDLE в качестве Fill word
Mode 1: Использует ARB при инициализации линка и ARB в качестве Fill word
Mode 2: Использует IDLE при инициализации линка и ARB в качестве Fill word
Mode 3: Пытается использовать 1 режим, если не получается, пытается использоваться 2 режим.
«Заполняющие слова» не используются на портах 16 Gb/s.
Напосредственная настройка порта выглядит следующим образом: portcfglongdistance port level vc_link_init distance
switch:admin> portcfglongdistance 10 LS 1 30
В данном случае vc_link_init это и есть тот самый режим «заполняющих слов».
Вернёмся ещё к теме sfp, о которых я упоминал в первой части. Это модули необходимые для подключения кабеля к порту. Различаются на коротковолновые (Short Wave, SW) и длинноволновые (Long Wave, LW). LW-трансиверы совместимы с многомодовым и одномодовым волокном. SW-трансиверы — только с многомодовым.
Коротковолновые трансиверы используются для соединение на коротких дистанциях, а длинноволновые, соответственно, на длинные. Современные длинноволновые sfp производства Brocade позволяют создавать соединение до 25 км длинной, но есть и другие вендоры, к примеру CTS или Finisar.
switch:admin> sfpshow
Port 0: id (lw) Vendor: CTS Serial No: MRAM0003 Speed: 2,4,8_Gbps
Port 1: id (lw) Vendor: CTS Serial No: MRAN0023 Speed: 2,4,8_Gbps
Port 2: id (sw) Vendor: BROCADE Serial No: UAF413480000D9C Speed: 2,4,8_Gbps
Port 3: id (sw) Vendor: BROCADE Serial No: UAF413480000DA6 Speed: 2,4,8_Gbps
Port 4: id (sw) Vendor: BROCADE Serial No: UAF4134900005E0 Speed: 2,4,8_Gbps
Port 5: id (sw) Vendor: BROCADE Serial No: UAF4134900005EE Speed: 2,4,8_Gbps
Port 6: id (sw) Vendor: BROCADE Serial No: UAF4134900005DN Speed: 2,4,8_Gbps
Port 7: id (sw) Vendor: BROCADE Serial No: UAF4134900005D2 Speed: 2,4,8_Gbps
Port 8: id (sw) Vendor: BROCADE Serial No: UAF4134900005G3 Speed: 2,4,8_Gbps
Port 9: id (sw) Vendor: BROCADE Serial No: UAF4134900005CW Speed: 2,4,8_Gbps
Port 10: id (sw) Vendor: BROCADE Serial No: UAF4134900005F3 Speed: 2,4,8_Gbps
Port 11: id (sw) Vendor: BROCADE Serial No: UAF4134900005G9 Speed: 2,4,8_Gbps
Как видно из этого примера, для линков между ЦОДами мы используем lw, а для всех остальных подключений sw sfp. В нашем случае установлены CTS SFP-8GFC-L80
switch:admin> sfpshow 0
…
Vendor Name: CTS
Vendor OUI: 00:05:1e
Vendor PN: SFP-8GFC-L80C47
Vendor Rev: A
Wavelength: 1470 (units nm)
…
которые поддерживают передачу данных на расстоянии до 80 км на скорости 8 Gb/s. Из приведённого примера так же можно сделать вывод, что данные sfp поддерживают и более низкие скорости. Это действительно так. SFP обычно поддерживают несколько скоростей, в зависимости от модели. К примеру 16Gb/s sfp могут работать на скоростях 4, 8, 10 и 16 Gb/s.