681453830 1 Осипов В.С. Описание программного интерфейса между модулями MG и DETH (версия №1 от 29.01.06) 1. Сигналы передачи пакетов 1.1. Информация из MG в DETH В модуль DETH из модуля MG передается IP-(или ARP-)пакет для выдачи в кадре Ethernet. Информация передается в виде сигнала MADR_nt со следующими параметрами: - DA (6 байт) - МАС-адрес назначения; PR_VID (2 байта) – запрашиваемый приоритет передачи (PR) (3бита) и идентификатор VLAN (VID) (12 бит); - Protocol (1 байт) – тип протокола: 0 – IP, 1 – ARP; - L (2 байта) – длина поля данных пользователя кадра Ethernet; - IP_packet – данные пользователя (IP- или ARP-пакет). На рис.1 приведен формат параметров сигнала MADR_nt, на рис.2 – формат параметра PR_VID. Рис.1. Формат параметров сигнала MADR_nt DA PR_VID Protocol L IP_packet Рис.2. Формат параметра PR_VID Биты 15 14 13 12 11 10 PR 9 8 7 0 6 5 4 3 2 1 0 VID Если значение параметра PR_VID равно нулю, то для выдачи в сеть Ethernet IP-(ARP-)пакета, поступившего в сигнале MADR_nt, должен использоваться формат Ethernet-кадра, приведенный на рис.3, где DA – MAC-адрес назначения, SA – МАС-адрес источника - собственный МАС-адрес брикета шлюза, TYPE – код типа протокола, равный 0x0800 для IP-пакета и 0x0806 для ARP-пакета, вложенного в Ethernet-кадр, DATA - IP-пакет и, если требуется, октеты заполнения для обеспечения минимальной длины поля DATA в 46 октетов, FCS – контрольная сумма. Рис. 3. Нетегированный кадр DA SA TYPE= 0x0800 (0x0806) DATA FCS 6 байт 6 байт 2 байта 46-1500 байт 4 байта Если значение параметра PR_VID не равно нулю, то для выдачи в сеть Ethernet IP-(ARP-)пакета, поступившего в сигнале MADR_nt, должен использоваться формат Ethernet-кадра с тэгом (см. п.3.5 стандарта IEEE Std 802.3), приведенный на рис.4. 681453830 2 Рис. 4. Тегированный кадр 1.2. DA SA Tag Type= 0x8100 PR_VID TYPE= 0x0800 (0x0806) DATA FCS 6 байт 6 байт 2 байта 2 байта 2 байта 42-1496 байт 4 байта Информация из DETH в MG В модуль MG из модуля DETH передается IP-(или ARP-)пакет, принятый в кадре Ethernet. Информация передается в виде сигнала MADI_nt со следующими параметрами: - PR_VID (2 байта) – приоритет передачи (PR) (3бита) и идентификатор VLAN (VID) (12 бит). Если принятый кадр Ethernet не содержит тэга, то передается нулевое значение PR_VID; - Protocol (1 байт) – тип протокола: 0 – IP, 1 – ARP; - L (2 байта) – длина поля данных пользователя кадра Ethernet; - MAC_data – данные пользователя (поле DATA Ethernet-кадра, состоящее из IP-(ARP-)пакета и, если требуется, октетов заполнения для обеспечения минимальной длины поля DATA в 46 октетов). На рис.5 приведен формат параметров сигнала MADI_nt. Рис.5. Формат параметров сигнала MADI_nt PR_VID Protocol 1.3. L MAC_data Описание сигналов MADR_nt и MADI_nt на языке SDL в модуле MG Ниже приведено описание на языке SDL сигналов модуля MG - выходного сигнала MADR_nt и входного сигнала MADI_nt. Параметр DA имеет тип MAC, параметры PR_VID и L – тип integer, параметр Protocol – тип octet. Данные пользователя передаются в параметрах IP_packet и MAC_data начиная с первых октетов и могут занимать не все поле параметра. SIGNAL MADR_nt (MAC, integer, octet, integer,IP_packet), /* Передача IP- или ARP-пакета для выдачи в кадре Ethernet в IP-сеть. Параметры: ( DA, PR_VID, тип протокола (0 - IP, 1 - ARP), L, IP-пакет ) */ MADI_nt (integer, octet, integer, MAC_data); /* Передача IP- или ARP-пакета, поступивщего в кадре Ethernet из IP-сети. Параметры: ( PR_VID, тип протокола (0 - IP, 1 - ARP), L, MAC_data ) */ NEWTYPE MAC /* MAC ADDRESS */ array(Index_m,octet) ENDNEWTYPE; SYNTYPE Index_m=integer constants 1:6 ENDSYNTYPE; 681453830 3 /*** IP-пакет для отправки UDP-дейтаграмм и TCP-сегментов ***/ NEWTYPE IP_packet struct header IP_header; data IP_data; ENDNEWTYPE; /* Общее количество октетов в IP_packet – не более 576 (RFC 791, 3.1, "Total Length"). Определения IP_header и IP_data даны в пакете MG_declarations */ /*** Массив данных принятого Ethernet-кадра ***/ NEWTYPE MAC_data array (MAC_data_index,octet) ENDNEWTYPE; SYNTYPE MAC_data_index=integer constants 0:MAC_DATA_LEN -1 ENDSYNTYPE; /* Максимальный размер массива данных */ SYNONYM MAC_DATA_LEN Integer = 1500; 2. Служебные сигналы 2.1. Сигнал оповещения о переполнении При переполнении буфера временного хранения данных, поступающих в сигналах MADR_nt и MADR (см. интерфейс I_DETH_MLLC), модулем DETH выдается сигнал DRVFF (см. интерфейс I_DETH_MLLC). 2.2. Сигнал MG_Start - используется функцией интеграции SDL-системы. Ниже приведено описание сигнала на языке SDL. SIGNAL /* из MG в DETH */ MG_Start; /* Служебный сигнал, выдается при старте процесса */ 3. Программная реализация интерфейса Программная реализация интерфейса определяется Певзнером совместно с Лаптевым. 4. Форматы сигналов могут уточняться в ходе разработки ПО.