wiki:EndpointR232

Канальное окончание R232

Канальное окончание R232 предназначено для передачи данных интерфейса RS-232 (TIA/EIA-232) через сеть IP. Канальное окончание R232 создается автоматически при наличии в плате VE-02 (или блоке MC04-DSL-VIP) модуля R232.

Строго говоря, R232 в плате VE-02 (блоке MC04-DSL-VIP) не работает с каналами TDM, поэтому не является канальным окончанием в том же смысле, что и другие канальные окончания, например FXS или FXO. Окончание R232 по сути является просто конвертером интерфейса. Однако для простоты и единообразия мы будем называть его канальным окончанием.

Описание работы канального окончания

Канальное окончание R232 транслирует данные, приходящие через интерфейс RS-232, в сеть IP по протоколу TCP, а данные, приходящие из сети по протоколу TCP, передает в интерфейс RS-232. Канальное окончание работает в одном из двух режимов - "клиент" или "сервер". Эти режимы определяют, как канальное окончание устанавливает соединение TCP. В режиме "сервер" канальное окончание ожидает установки входящего соединения от другого хоста в сети, в режиме "клиент" канальное окончание само делает попытки подключения к удаленному хосту.

Установка соединения в режиме Сервер

При работе в режиме "сервер" канальное окончание R232 создает TCP сокет, привязывает его к порту TCP, номер которого установлен конфигурационный параметром "Порт", переходит в состояние Listen и ожидает входящее соединение от клиента. В данном состоянии обмен данными через интерфейс RS-232 не производится: данные на выход TxD не передаются, а данные, принимаемые по входу TxD, игнорируются (отбрасываются).

При установке соединения с клиентом канальное окончание закрывает ранее открытый сокет и переходит в состояние Connected. В этом состоянии канальное окончание не принимает новые входящие соединения, пока уже установленное соединение не будет разорвано. В состоянии Connected канальное окончание R232 передает данные данными между линиями RS-232 и удаленным хостом. Подробно этот процесс описан в разделе "Передача данных через установленное соединение" ниже.

При разрыве соединения TCP канальное окончание снова создает серверный сокет, переходит в состояние Listen и ожидает новое входящее соединение, как это было описано выше.

Установка соединения в режиме Клиент

При работе в режиме "клиент" канальное окончание R232 само устанавливает соединение TCP с удаленным сервером, имя (адрес) и номер порта которого заданы конфигурационными параметрами "Сервер" и "Порт" соответственно. Установка соединения начинается с перехода канального окончания в состояние Resolving. В этом состоянии канальное окончание резолвит имя сервера, указанное в конфигурационном параметре "Сервер", в адреса IP. При успешном резолвинге канальное окончание создает сокет TCP, начинает процесс подключения к серверу и переходит в состояние Connecting. При успешном подключении канальное окончание переходит в состояние Connected. В состоянии Connected канальное окончание R232 передает данные данными между интерфейсом RS-232 и удаленным хостом. Подробно этот процесс описан в разделе "Передача данных через установленное соединение" ниже. В случае, если установка соединения не удалась, и у сервера имеются другие IP адреса, канальное окончание пытается установить соединение с другим адресом.

В случае, если попытки установки соединения со всеми имеющимися адресами IP сервера закончились ошибками, или ошибка возникла при резолвинге имени сервера, канальное окончание переходит в состояние Error. В состоянии Error канальное окончание выдерживает паузу 30 секунд, после чего описанный выше процесс подключения начинается с начала (с резолвинга имени сервера).

В случае, если по любым причинам разрывается уже успешно установленное соединение TCP (то есть канальное окончание находится в состоянии Connected), канальное окончание сразу приступает к повторной установке соединения (начиная с резолвинга имени сервера).

Передача данных через установленное соединение

В состоянии Connected канальное окончание осуществляет обмен данными между интерфейсом RS-232 и удаленным хостом через установленное соединение TCP.

Данные, поступающие от удаленного хоста, передаются на выход RxD интерфейса RS-232.

Данные, принимаемые по входу TxD интерфейса RS-232, передаются удаленному хосту. Алгоритм этой передачи зависит от значения конфигурационного параметра "Таймаут передачи". При нулевом значении параметра принятые из интерфейса RS-232 данные немедленно передаются в сеть удаленному хосту (записываются в сокет). При ненулевом значении параметра при приеме из интерфейса RS-232 первого октета данных принятый октет помещается во временный буфер, при этом запускается таймер передачи на значение таймаута, установленное конфигурационным параметром. До истечения заданного таймаута все принимаемые из интерфейса RS-232 данные дописываются во временный буфер. При истечении заданного таймаута все накопленные во временном буфере данные передаются в сеть удаленному хосту. Таким образом, установка ненулевого значения таймаута передачи позволяет снизить частоту передаваемых через соединение TCP сегментов данных и тем самым сократить накладные расходы и уменьшить общий объем данных, передаваемых по сети, ценой некоторого увеличения задержки передачи. Это может быть полезно, например, в случае передачи через широкополосный канал с оплатой по объему трафика.

Обратите внимание, что установка нулевого значения конфигурационного параметра "Таймаут передачи" не гарантирует, что принятые из интерфейса RS-232 данные будут немедленно отправлены в сеть. Отправка сегмента данных может быть задержана алгоритмами протокола TCP, например при наличии потерь из-за узкой полосы или низкого качества канала связи.

При накоплении во временном буфере большого количества принятых из интерфейса RS-232 данных (около 1200 байт) накопленные данные будут отправлены канальным окончанием в сеть не дожидаясь истечения таймаута передачи, так как при дальнейшем накоплении данных накопленные данные не поместятся в один пакет TCP и будут разбиты на несколько, и, таким образом, дальнейшее накопление не имеет смысла.

Аппаратное управление потоком

Если конфигурационный параметр "Управление потоком" установлен в значение "вкл", канальное окончание R232 использует сигналы RTS и CTS для аппаратного управления потоком.

Если при передаче данных на выход RxD интерфейса RS-232 вход RTS переходит в неактивное состояние (низкий уровень), канальное окончание R232 заканчивает передачу текущего символа после чего приостанавливает дальнейшую передачу данных. На выходе RxD при этом держится низкий уровень (стоп-бит). Передача данных на выход RxD возобновляется при появлении активного (высокого) уровня на входе RTS.

Если буфер, в который поступают данные, принимаемые по входу TxD интерфейса RS-232, заполняется более чем на 90% (например вследствие неготовности удаленного хоста к приему или низкой пропускной способности сети), канальное окончание R232 переводит выход CTS в неактивное состояние (низкий уровень), сигнализируя устройству на противоположной стороне линии о необходимости приостановить передачу. При уменьшении заполнения буфера (после передачи порции данных через сеть удаленному хосту) окончание R232 переводит выход CTS в активное состояние (высокий уровень), сигнализируя устройству на противоположной стороне о готовности к приему новых данных.

Если конфигурационный параметр "Управление потоком" установлен в значение "выкл", канальное окончание R232 игнорирует состояние входа RTS, всегда передавая данные, поступающие от удаленного хоста, на выход RxD интерфейса RS-232. Выход CTS интерфейса RS-232 при этом всегда имеет высокий уровень.

TCP keep-alive и таймаут неактивности

Функции TCP keep-alive и таймаут неактивности позволяют канальному окончанию распознавать "мертвые" соединения TCP.

Примером мертвого соединения может быть соединение, в котором пакеты IP проходят через один или несколько маршрутизаторов с функцией NAT (трансляцией сетевых адресов). Трансляция адресов требует хранения таблицы трансляции. Для освобождения ресурсов маршрутизатор может периодически "чистить" таблицу, удаляя из нее записи о старых соединениях. Если через установленное соединение TCP ничего не передается в течение длительного времени, запись об этом соединении может оказаться удаленной из таблицы трансляции адресов, в результате чего последующие пакеты TCP перестанут проходить от одного хоста к другому.

Другим примером "мертвого" соединения TCP может быть соединение клиента с сервером, после установления которого на стороне сервера было отключено питание устройства. После включения питания на стороне сервера соединение TCP отсутствует, однако клиент будет по-прежнему считать, что соединение установлено, так как не получал от сервера пакетов, свидетельствующих о разрыве соединения.

Одним из способов предотвращения "умирания" соединений TCP является TCP keep-alive. При установке ненулевого значения конфигурационного параметра "TCP keep-alive" при неактивности соединения TCP в течение заданного параметром времени канальное окончание передает удаленной стороне TCP ACK пакет и ожидает ответный ACK. Таким образом, при установке ненулевого значения параметра "TCP keep-alive" пакеты TCP соединения передаются не реже заданного параметром значения времени, что позволяет, например, предотвратить удаление записи об этом соединении из таблицы NAT. При отсутствии ответа TCP АСK передается повторно с интервалом 2 секунды. Если после передачи четырех таких пакетов ответ так и не был получен, канальное окончание разрывает TCP соединение. При нулевом значении параметра "TCP keep-alive" пакеты keep-alive не отправляются.

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

Параметры конфигурации канального окончания

Пример конфигурации канального окончания R232:

Скорость
Параметр определяет скорость в бит/с передачи и приема данных через интерфейс RS-232. Допустимые значения: 150, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600 и 115200. Значение по умолчанию - 9600.
Контроль четности
Параметр определяет наличие и значение бита четности/нечетности в символах интерфейса RS-232. Допустимые значения: "нет" (бит четности/нечетности отсутствует), "четность" (передается бит четности), "нечетность" (передается бит нечетности).
Число стоповых бит
Параметр определяет число стоповых бит в символах интерфейса RS-232. Допустимые значения: 1 (один стоповый бит), 2 (два стоповых бита).
Управление потоком
Параметр определяет, использует ли интерфейс сигналы аппаратного управления потоком. Допустимые значения: "вкл" (аппаратное управление потоком включено) и "выкл" (аппаратное управление потоком выключено). Значение по умолчанию - "вкл".
Режим работы
Параметр определяет режим работы канального окончания. Допустимые значения: "клиент" (канальное окончание устанавливает соединение с удаленным сервером), "сервер" (канальное окончание ожидает подключения от удаленного клиента).
Сервер
Параметр устанавливает имя или адрес IP сервера, с которым будет устанавливать соединение канальное окончание, работающее в режиме "клиент". При работе канального окончания в режиме "сервер" данный параметр не используется.
Порт
Параметр устанавливает номер порта TCP, на который канальное окончание R232 будет принимать соединение в режиме "сервер" или на который канальное окончание R232 будет устанавливать соединение в режиме "клиент".
Таймаут неактивности
Параметр устанавливает время, при отсутствии в течение которого данных, принимаемых из соединения TCP, канальное окончание разрывает соединение. Значение 0 означает отключение функции разъединения по таймауту.
TCP keep-alive
Параметр устанавливает время, при отсутствии в течение которого активности соединения канальное окончание отправляет TCP ACK. Значение 0 означает отключение функции TCP keep-alive.
Таймаут передачи
Параметр устанавливает время, в течение которого принимаемые из интерфейса RS-232 данные накапливаются во временном буфере. При установке значения 0 накопление данных во временном буфере не производится.

Состояния канального окончания

Далее описаны состояния, в которых может находиться канальное окончание R232, и их краткое описание.

Initial
Начальное состояние канального окончания.
Listen
Канальное окончание ожидает входящее соединение.
Resolving
Канальное окончание резолвит имя сервера.
Connecting
Канальное окончание подключается к серверу.
Connected
Соединение TCP установлено.
Error
Ошибка соединения.

См. также

окончание R422, окончание R485.

Last modified 3 years ago Last modified on Mar 23, 2022, 11:38:17 AM

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.