На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

Программная реализация протокола Ethernet-через-RapidiO

Статья опубликована в выпуске журнала № 3 за 2007 год.
Аннотация:
Abstract:
Автор: Павлов А.Н. () -
Ключевое слово:
Ключевое слово:
Количество просмотров: 14603
Версия для печати
Выпуск в формате PDF (2.31Мб)

Размер шрифта:       Шрифт:

В статье описана реализация протокола Ethernet-через-RapidIO (далее – rionet), обсуждаются его достоинства и недостатки. Протокол разработан в компании MontaVista; поддержка протокола входит в ядро ОС Linux, начиная с версии 2.6.15-git6 (http://lwn.net/Articles/139118/), драйвер протокола распространяется на условиях лицензии GNU GPL версии 2.

Интерфейс RapidIO представляет собой пакетную коммутируемую шину типа «точка-точка». Стандарт RapidIO охватывает физический, канальный, сетевой и транспортный уровни модели OSI [1]. Узлы шины RapidIO ведут обмен через среду передачи данных, сформированную коммутаторами; каждый узел RapidIO (в частности процессор), подключен к коммутатору, коммутаторы соединены между собой. Каждый узел RapidIO может посылать сообщения размером до 4 КБ любому другому узлу RapidIO.

Узлы шины идентифицируются с помощью числового идентификатора (ID), который может принимать значения 0–255 (для малых систем) или 0–65535 (для больших систем). Перечисленные свойства шины RapidIO позволяют использовать пакеты RapidIO для передачи кадров Ethernet. На некоторых узлах RapidIO может быть запущено программное обеспечение (драйвер), реализующее протокол rionet. В дальнейшем такие узлы будем называть узлами сети rionet, или просто узлами rionet.

Драйвер для обмена по шине RapidIO rionet использует вызовы драйвера контроллера RapidIO и не привязан к аппаратуре.

Подпись:  
Рис. 1
Для передачи сообщений стандарт предусматривает два типа транзакций:

·     DOORBELL (type 10) – позволяет передать сообщение длиной 2 байта;

·     MESSAGE (type 11) – позволяет передать сообщение длиной до 4 КБ.

Предполагается, что перед активацией драйвера rionet была произведена инициализация шины RapidIO, всем узлам шины RapidIO были назначены ID; в памяти каждого узла rionet хранится конфигурация шины RapidIO (в частности, узлу известны ID всех остальных узлов шины RapidIO).

Для поддержания на каждом узле корректной информации о состоянии сети rionet используются транзакции типа DOORBELL. На каждом узле rionet драйвер ведет таблицу активных узлов rionetact. При старте драйвера, производится рассылка пакетов типа DOORBELL, содержащих признак присоединения к сети (RIONET_DOORBELL_JOIN), всем узлам шины RapidIO. Узел, на котором работает драйвер rionet, получив такой пакет, отмечает в своей таблице rionetact отправителя пакета как активный узел rionet и посылает ответный пакет типа DOORBELL, содержащий признак RIONET_DOORBELL_JOIN.

Желающий прекратить свою работу в сети rionet узел посылает всем узлам, содержащимся в таблице rionetact, пакет типа DOORBELL, содержащий признак отсоединения от сети RIONET_DOORBELL_ LEAVE. Узел, на котором работает драйвер rionet, получив такой пакет, исключает отправителя из своей таблицы rionetact.

Поля пакета типа DOORBELL показаны на рисунке 1. На этом и всех последующих рисунках показаны форматы пакетов шины RapidIO, построенной на основе физического интерфейса 8/16 LP-LVDS. Предполагается, что используется шина RapidIO c малым (до 256) числом узлов (поле пакета tt имеет значение 00, узлы шины RapidIO адресуются с помощью однобайтовых ID).

Процесс передачи пакета типа DOORBELL по шине RapidIO происходит следующим образом: на первом шаге узел-отправитель (Requestor) посылает пакет узлу-получателю (Destination); на втором шаге, узел-получатель отсылает подтверждение приема пакета (пакет типа 13), содержащий признак успешной/неуспешной передачи. Такая процедура гарантирует доставку пакетов типа DOORBELL.

Драйвер rionet использует транзакции типа MESSAGE для передачи кадров Ethernet. Кадр Ethernet передается в пакете RapidIO в формате big-endian. Сообщения, размер которых превышает 256 байтов, фрагментируются передающим контроллером RapidIO на пакеты, содержащие не более 256 байтов, и в таком виде пересылаются по шине. Контроллер-получатель пакетов формирует из фрагментов исходное сообщение на основании содержимого полей msglen и msgseg.

Фрагментация пакетов абсолютно прозрачна для драйвера контроллера RapidIO. Таким образом, максимальный размер кадра Ethernet может достигать 4096 байтов, а размер упакованной в такой кадр дейтаграммы IP (MTU) – 4082 байта.

На рисунке 2 показана инкапсуляция кадров Ethernet в пакеты типа MESSAGE при MTU=4082 байта (при этом один кадр Ethernet размером 4096 байтов передается с помощью 16 пакетов RapidIO).

Процесс передачи сообщения по шине RapidIO происходит следующим образом: на первом шаге узел-отправитель Requestor посылает пакет узлу-по­лучателю Destination; на втором шаге, узел-получа­тель отсылает подтверждение приема пакета (пакет типа 13), содержащий признак успешной/неуспеш­ной передачи.

Если при отсылке производилась фрагментация сообщения, то для каждого фрагмента отсылается отдельное подтверждение. Такая процедура гарантирует доставку сообщений через шину RapidIO.

Эмуляция интерфейса Ethernet означает, что необходимо эмулировать и MAC-адреса, используемые в Ethernet. По умолчанию, байты MAC-адреса назначаются так, как указано в таблице 1.

Таблица 1

Строение MAC-адреса rionet

Номер байта

0

1

2

3

4

5

Содержимое

00

01

00

01

id[15:8]

id[7:0]

Примечание: id[15:0] — ID узла.

В момент передачи IP-дейтаграммы через rionet, встает задача определения MAC-адреса узла-получа­теля на основании его IP-адреса.

В таких сетях, как Ethernet, для решения этой задачи используется протокол ARP. Узел, который готов направить пакет через сеть Ethernet, желая определить MAC-адрес получателя на основе его IP-адреса, посылает ARP-запрос, используя широковещательный MAC-адрес, и ожидает ответ, содержащий искомый MAC-адрес.

Базовая реализация RapidIO не имеет средств для организации широковещательных рассылок. Протокол rionet решает данную проблему следующим образом: драйвер ведет таблицу rionetact, в которой хранятся ID всех активных узлов rionet.

При поступлении от ARP-протокола запроса на широковещательную передачу пакета драйвер rionet имитирует широковещательную рассылку – индивидуально посылает указанный пакет каждому активному узлу rionet.

Подпись:  
Рис. 2
Для того чтобы снизить нагрузку на шину со стороны многочисленных ARP-запросов, необходимо обеспечить эффективный механизм кэширования ARP-запросов. Другим способом снижения нагрузки на шину может быть использование многоадресного расширения шины RapidIO.

В таблице 2 приведен расчет размера одного фрагмента шестнадцатифрагментного сообщения шины RapidIO Smp, инкапсулирующего кадр Ethernet размером 4096 байтов (размер IP-дейтаграммы, содержащейся в кадре Ethernet MTU=4082 байта).

Таблица 2

Расчет размера фрагмента сообщения (пакет типа 11)

Уровень; поля пакета

Размер, байт

Физический:

- заголовок

- предварительная контрольная сумма (КС)*

- КС

2

2

2

Транспортный

2

Логический:

- поля типа 11

- данные – фрагмент кадра Ethernet

2

256

Итого, Smp

266

* предварительная КС рассчитывается для всех пакетов, размер которых превышает 80 байтов.

Всего таких фрагментов n будет передано 16 (n=16), после приема сообщения будет выслан пакет-подтверждение, расчет размера которого Sres приведен в таблице 3.

Таблица 3

Расчет размера пакета-подтверждения (пакет типа 13)

Уровень; поля пакета

Размер, байт

Физический:

- заголовок

- КС

2

2

Транспортный

2

Логический

2

Итого, Sres

8

Таким образом, для передачи IP-дейтаграммы размером MTU=4082 байта через rionet необходимо передать по шине RapidIO Srio байтов:

Эффективность использования шины ε:

Описанный протокол rionet обладает следующими достоинствами:

·          прозрачность для программного обеспечения: для пользователя сетевые интерфейсы rionet выглядят так же, как привычные Ethernet-интерфейсы;

·          простота развертывания: для создания сети rionet на основе существующей инфраструктуры RapidIO достаточно установить драйвер rionet.

Инкапсуляция кадров Ethernet в пакеты шины RapidIO имеет ряд недостатков, связанных с принципиальными различиями RapidIO и Ethernet:

·         Ethernet может терять пакеты, RapidIO – нет;

·         Ethernet позволяет подключать и отключать абонентов в любой момент, RapidIO – нет;

·         организация широковещательной рассылки в RapidIO не так проста, как в Ethernet.

На первый взгляд, масштабируемость rionet целиком определяется возможностями масштабирования шины RapidIO. Параллельный интерфейс 8/16 LP-LVDS позволяет соединить несколько десятков узлов RapidIO в рамках одного крейта. Применение последовательного интерфейса 1x/4x LP-Serial позволяет соединить между собой отдельные крейты, удаленные друг от друга на несколько десятков метров, в единую шину RapidIO, содержащую несколько десятков тысяч узлов.

Однако если количество абонентов rionet велико, то при старте системы произойдет всплеск трафика на шине RapidIO, связанный с тем, что каждый узел сети будет пытаться оповестить остальных о своем существовании. При количестве узлов rionet, равном n, будет послано 2n2 пакетов типа DOORBELL.

Использование протокола ARP в сети rionet нерационально. В сети Ethernet при запросе MAC-адресу будет передано два пакета: широковещательный пакет-запрос и пакет-отклик. В сети rionet, состоящей из n узлов, будет передано n+1 пакетов: n пакетов-запросов (соответствующих широковещательному пакету-запросу Ethernet) и один пакет-отклик.

В rionet используется прямое соответствие между ID RapidIO и MAC-адресами Ethernet, однако в каждом пакете RapidIO одновременно передаются как ID, так и MAC-адреса, указанную избыточную передачу сетевых идентификационных кодов следует отнести к недостаткам протокола. Протокол rionet подходит для передачи кадров протокола Ethernet между процессорами, соединенными шиной RapidIO, однако область применения rionet ограничена системами, содержащими около десятка процессоров.

Для создания эффективной сетевой среды на базе шины RapidIO необходима доработка имеющегося протокола или разработка нового.

Литература

1. RapidIO(TM) Interconnect Specification [Электронный ресурс].- Электрон. текстовые, граф. дан.- RapidIO Trade Association, 2005.- Ч. 1-4, 11; приложение 1.- http://www.rapi­dio.org


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=327
Версия для печати
Выпуск в формате PDF (2.31Мб)
Статья опубликована в выпуске журнала № 3 за 2007 год.

Возможно, Вас заинтересуют следующие статьи схожих тематик: