Комплексные Решения ЦОС |
Прикладные Материалы | |||||
|
AN-ru-202 AN
#202
Rev.A
(2020-12-24) Особенности конфигурирования TCP/IP стека для 1GbE портов АМС-модулей TORNADO-AxxxВсе АМС-модули
TORNADO-Axxx фирмы МикроЛАБ Системс (далее TAxxx) с процессорами общего назначения и
процессорами ЦОС имеют два гигабитных порта (1GbE) AMC интерфейса (АМС порт #0 и #1), предназначеныe для внешнего управления
АМС-модулями через IP
сети LAN/WAN от ПК и Android-устройств. В зависимости от требований приложения
пользователя, эти порты могут быть подключены к общей или разным IP сетям и сконфигурированы для работы с динамическими
или статическими IP адресами. В зависимости от типа подключения, могут потребоваться дополнительные настройки TCP/IP стека используемой операционной системы (ОС) в зависимости от модели хоста ОС (End System или Host Model) в соответствии с RFC1122:
При использовании
ОС со слабой моделью хоста (ОС Linux) возможны проблемы при одновременном
подключении обоих гигабитных портов АМС-модулей TAxxx к одной IP сети. В данной статье будут рассмотрены особенности настройки 1GbE-портов АМС-модулей TAxxx при подключении к IP сетям при использовании разных ОС и приведены примеры использования библиотеки функций сетевой коммуникации TASDK_DTE, входящей в состав среды разработки ПО TASDK (Среда разработки ПО для AMC модулей TORNADO-Axxx). Подключение сетевых гигабитных интерфейсов АМС-модулей TAxxx к разным IP сетямПри отсутствии дополнительных требований, наиболее простым и рекомендуемым способом одновременного подключения обеих 1GbE-портов АМС-модулей TAxxx является их подключение к отдельным IP сетям, например:
Это способ одновременного подключения двух 1GbE-портов АМС-модулей TAxxx не требует никаких дополнительных настроек При этом нет необходимости выполнять дополнительную настройку TCP/IP стека используемой ОС (ОС Linux, операционные системы реального времени (ОСРВ) FreeRTOS и Azure RTOS ThreadX), все сетевые интерфейсы устройства будут функционировать одновременно и независимо друг от друга. В случае, если сетевые интерфейсы настроены на получение динамического IP адреса, то DHCP сервер, работающий в соответствующей IP сети, обеспечивает выдачу уникального IP адреса автоматически. При использовании статической IP адресации необходимо сначала убедиться, что выбранные статические IP адреса не конфликтуют с уже существующими в IP сети. Это можно сделать, например, при помощи команды «ping». Подключение сетевых гигабитных интерфейсов АМС-модулей TAxxx к общей IP сетиСуществует целый ряд приложений и аппаратуры, которые могут потребовать безусловного подключения обеих 1GbE-портов АМС-модулей TAxxx к общей IP сети, причем неважно какой конкретно - физической или логической. Одним из таких примеров является аппаратура с резервированием логических каналов коммуникации. При простоте аппаратной реализации, программная поддержка такого подключения оказывается не очевидной и зависящей от типа ОС, используемой при написании приложения для процессора АМС-модулей TAxxx. Рассмотрим пример, когда оба АМС порты #0 и #1 (сетевые интерфейсы «eth0» и «eth1») подключаются к общей IP сети с базовым адресом 192.168.0.0 и маской 255.255.255.0. Варианты последующей настройки будут отличаться в зависимости от используемой на устройстве ОС. Использование ОС LinuxПри использовании ОС Linux возможны проблемы при одновременном подключении обоих 1GbE-портов АМС-модулей TAxxx к одной IP сети. Например, если для обоих 1GbE-портов были назначены IP адреса из одной IP сети и в дальнейшем пропадает соединение по одному из них (обычно первому), то устройство может быть недоступно при обращении к другому порту. Такое поведение TCP/IP стека является особенностью ОС Linux. По умолчанию, Linux использует слабую модель хоста (Weak Host Model). В соответствии с RFC1122 – TCP/IP стек принимает IP пакет, если IP адрес назначения совпадает с одним из адресов, который присвоен сетевым интерфейсам на данной системе. Включение усиленной модели хоста в Linux не является стандартным действием и требует изменения целого ряда настроек TCP/IP стека и правил маршрутизации, что может привести к нестабильной работе TCP/IP стека ОС Linux. В настоящий момент не существует стандартного общепринятого решения для включения усиленной модели хоста в ОС Linux. В связи с этим, предлагается настройка и подключение 1GbE-портов АМС-модулей TAxxx в разные IP сети при их одновременном использовании. Вариантом решения данной проблемы является использование либо системного вызова setsockopt() BSD-сокетов ОС Linux, либо API функции TASDK_DTE_set_socket_option() библиотеки TASDK_DTE_LINUX.LIB среды TASDK с параметром SO_BINDTODEVICE. Данный параметр позволяет связать сокет с конкретным сетевым интерфейсом с именем «eth0» или «eth1». Пример использования:
После этого пакеты, принятые только этим сетевым интерфейсом, будут обработаны данным сокетом. Следует отметить, что вызов bind() с локальным IP адресом сетевого интерфейса не приводит к такому же поведению. Использование ОСРВ FreeRTOS и TCP/IP стека lwIPTCP/IP стек lwIP позволяет использовать одновременное подключение нескольких сетевых интерфейсов устройства к общей IP сети без дополнительных настроек. Для этого, при создании сокета и его привязки к локальному адресу необходимо передать локальный IP адрес сетевого интерфейса либо в функцию bind() стека lwIP, либо в API функции TASDK_DTE_server_open_connection() и TASDK_DTE_client_open_connection() библиотеки TASDK_DTE_FREERTOS.LIB среды TASDK. Пример использования:
Еще одним вариантом привязки сокета к сетевому интерфейсу является использование либо системного вызова setsockopt(), либо API функции TASDK_DTE_set_socket_option() библиотеки TASDK_DTE_FREERTOS.LIB среды TASDK с параметром SO_BINDTODEVICE. Данный параметр позволяет связать сокет с конкретным сетевым интерфейсом, который по умолчанию имеет имя «en0» и «en1». Использование ОСРВ Azure RTOS ThreadX и TCP/IP стеков NetX и NetX DuoTCP/IP стеки NetX и NetX Duo для ОСРВ Azure RTOS ThreadX (Microsoft) позволяют использовать одновременное подключение нескольких сетевых интерфейсов устройства к общей IP сети без дополнительных настроек. Для этого, при создании сокета и его привязки к локальному адресу необходимо передать локальный IP адрес сетевого интерфейса либо в функцию bind() опции BSD-сокетов для стеков NetX и NetX Duo, либо в API функции TASDK_DTE_server_open_connection() и TASDK_DTE_client_open_connection() библиотеки TASDK_DTE_THREADX.LIB среды TASDK. Локальный IP адрес сетевого интерфейса можно получить при помощи системного вызова nx_ip_interface_address_get() стеков NetX и NetX Duo. Пример использования:
Использование ОСРВ TI SYS/BIOS и TCP/IP стека NDK для процессоров ЦОС TMS320C6678 AMC-модулей TORNADO-A6678xxTCP/IP стек NDK для ОСРВ TI DSP SYS/BIOS фирмы Texas Instruments для процессоров ЦОС TMS320C6678 стандартно не поддерживает одновременное подключение нескольких сетевых интерфейсов устройства к общей IP сети. В связи с этим, он был существенно доработан фирмой МикроЛАБ Системс и уже в составе среды ПО TASDK полностью поддерживает несколько сетевых интерфейсов устройства в общей IP сети. Для этого, при создании сокета и привязки его к локальному адресу необходимо передать локальный IP адрес сетевого интерфейса либо в функцию bind() стека NDK, либо в API функции TASDK_DTE_server_open_connection() и TASDK_DTE_client_open_connection() библиотеки TASDK_DTE_SYSBIOS.LIB среды TASDK. Пример использования:
Фирма «МикроЛАБ Системс»
Дубнинская ул, д. 83, оф. 612, г.Москва, 127591,
Российская Федерация
|
|||||
(C) МикроЛАБ Системс,
1992-2024 последнее обновление: 22 Jul 2024 12:56 |