Поддерживаемые протоколы и настройка сети
Настройка сети
Работа по сети осуществляется в RK7 библиотекой NetKern.DLL (DOS и WIN). Библиотека использует errors32.dll, dllman.dll, thread32.dll (разные для DOS, WIN), borlndmm.dll (разные для DOS, WIN) и одну или несколько библиотек протоколов: tcpsoc.dll(WIN), nbhdup.dll(разные для DOS, WIN), spxsoc.dll(WIN), localnet.dll(DOS и WIN), tcpdos.dll(DOS), spx_dos.dll(DOS).
Типичная проблема сети – не работает динамическое разрешение имён. В этом случае надо явно прописывать соответствие адреса имени (для TCP/IP в секции [TCPDNS])
Описание секций в INI-файле
Секция [NETKERN]
Основные настройки сети лежат в секции [NETKERN] инициализационного INI-файла, (в скобках значения по умолчанию):
CANCELONDISCONNECT = 1 – При 0 ждёт реконнекта на клиенте и пытается достучаться к клиенту с сервера в случае дисконнекта после получения (отправки) RPC запроса.
CRYPT = 1 – шифрование при отправке
FILEMANAGERPATH = u: – Базовый путь для функций работы с файлами (всегда прибавляется к имени файла). Отдельно обрабатывается путь * - все диски.
IGNOREERRORSFROMSERVER = 1 – При значении 0, стек кодов ошибок, переданный с сервера в случае ошибки выполнения на сервере, будет сохраняться в файле ошибок.
LOADALLPROTOCOLS = 1 – При 0 выходит из RPCInitEx при первом загруженном протоколе, остальные загружаются асинхронно в процессе работы. При 1 не выходит, пока не загрузит все протоколы.
MAXSENDRETRYS (2-CANCELONDISCONNECT) – Количество попыток отправки блока данных
MAXBLOCKSIZE = 20000000 – Максимальный размер пакета (например, возвращаемых данных RPC процедуры). Должен быть одинаковым и на клиенте и на сервере.
MINPACKSIZE = 15000 – минимальный размер блока для упаковки. В случае SLOWCONNECT=1 в настройках протокола с одной из сторон, используется значение в 10 раз меньше.
MINPACKDELTA = 1000 – минимальное уменьшение размера при упаковке. В случае SLOWCONNECT=1 в настройках протокола с одной из сторон, используется значение в 10 раз меньше.
PROTOCOLS = PROTOCOL\*.DLL – Маски поиска файлов DLL драйверов через «;». Если необходимо обращаться к самому себе(например, сервер на кассе), необходимо использовать протокол localnet.dll.
RETRYRECEIVE = not CANCELONDISCONNECT – Ждать от клиента реконнекта для продолжения получения пакета данных.
ROUTERCOUNT = 2 – Количество задач, занимающихся роутингом.
TESTMESSAGES = 0 – При 1 выводит в файл отладки журнал с сетевыми операциями
ALLSENDLOG = "" – Если значение не пустое, то это должен быть каталог (с завершающим «\»), куда будут складываться файлы с отсылаемыми данными.
TIMEOUT = (30000/180000) – мс. – таймаут ожидания handshake и таймаут ожидания очереди на отправку по соединению (в очереди между разные задачи, использующие одно соединение). Если в настройках протокола задан SLOWCONNECT=1, то таймаут ожидания очереди будет не меньше 180000, даже если задать меньшее значение.
Секция [TCPSOC] – настройка драйвера TCP для Windows
Драйвер считывает из ini файла раздел [TCPSOC] записи (в скобках значения по умолчанию):
ASYNCHCONNECT = 1 – выполнять попытку подключения асинхронно
CHECKSELFNAME = 0 – попытаться найти собственное имя при инициализации (чтобы исключить дублирование).
KEEPALIVE = 1 – посылать запросы keepalive
LISTEN = 1 – Ждать подключения от других
MAXBUFFER = 65280 – максимальный размер отсылаемых одной командой данных
SLOWCONNECT = 0 – при значении 1 изменяет значения по умолчанию для MAXBUFFER (4096), TIMEOUT (20000). Кроме того, устанавливается флаг типа драйвера pfSlowConnect, по которому используются другие тайм-ауты внутри NetKern.
DNSFILE = tcpdns.txt – имя файла расшифровки имён.
Формат записи в файле расшифровки имён:
Имя адрес[:порт]
Адрес – разделённый точками Internet адрес или имя компьютера в локальной сети или DNS имя
Порт - либо десятичный, либо шестнадцатеричный (предваряемый знаком $). По умолчанию, порт = PORT.
Например, для имён АА и CC:
AA 198.154.196.105:5150 CC COMPUTER1:5155
DNSSECTION (TCPDNS) – секция в том же файле, содержащая расшифровки имён.
Формат записи в секции расшифровки имён:
Имя = адрес[:порт]
Например, для имён АА и CC:
[TCPDNS] AA=198.154.196.105:5150 CC=198.154.196.105:5155
PORT = 5150 – номер порта для входящих соединений. Если порт=5150 и будет ошибка, что порт занят, номер увеличится на 1 и т.д.
PRIORITY = 50 – приоритет драйвера по сравнению с остальными (меньшие номера просматриваются первыми)
TIMEOUT = 4000 – таймаут на операцию отправки/получения блока размером MAXBUFFER или коннекта при ASYNCHCONNECT=1
USEINTERNETDNS =0 – при 1 драйвер будет пытаться найти имя в интернетном DNS, при 1 игнорируется SENDTO255IP
RECEIVELOG = "name" – имя файла для журналирования поступлений
SENDLOG = "name" – имя файла для журналирования отправлений
UDP_BROADCAST_PORT = 5160 – номер порта для обмена сообщениями (в том числе широковещательными) для определения адреса по имени, должен быть одинаковым по всей сети
Примечание: Для отключения широковещательных (broadcast) сообщений от любого сервера необходимо установить UDP_BROADCAST_PORT = 0
SERVERNODELAY = 0 – при значении 1 для входящих соединений отключает работу алгоритма Nagle, что приводит к ускорению отклика, но может привести к сужению канала.
CLIENTNODELAY = 0 – то же, что SERVERNODELAY, но для исходящих соединений
WAITBEFORECLOSE = 0 – при 1 будет ждать завершения сетевых операций при программном разрыве соединения.
SENDTO255IP = 0 – при 1 при невозможности узнать адрес по имени пытается достучаться до всех 254 адресов подсети (USEINTERNETDNS должен быть 0)
Секция [TCPDOS] – настройка драйвера TCP для DOS32
Драйвер считывает из ini файла раздел [TCPDOS], записи (в скобках значения по умолчанию):
ASYNCHCONNECT = 1 – выполнять попытку подключения асинхронно
CHECKSELFNAME = 0 – попытаться найти собственное имя при инициализации (чтобы исключить дублирование).
LISTEN = 1 – Ждать подключения от других
DOSBUFFERSIZE = 8192 – размер памяти, выделяемой в нижней памяти DOS, и использующейся как для отправки данных, так и для получения.
MAXBUFFER = DOSBUFFERSIZE – максимальный размер отсылаемых одной командой данных, не больше DOSBUFFERSIZE
SLOWCONNECT = 0 – при значении 1 изменяет значения по умолчанию для MAXBUFFER (4096), TIMEOUT (20000). Кроме того, устанавливается флаг типа драйвера pfSlowConnect, по которому используются другие тайм-ауты внутри NetKern.
DNSFILE = tcpdns.txt – см. DNSFILE
DNSSECTION (TCPDNS) – см. DNSSECTION
PORT = 5150 – номер порта для входящих соединений
PRIORITY = 50 – приоритет драйвера по сравнению с остальными (меньшие номера просматриваются первыми)
UDP_BROADCAST_PORT = 5160 – номер порта для обмена сообщениями (в том числе широковещательными) для определения адреса по имени, должен быть одинаковым по всей сети
SENDTO255IP = 0 – при 1 при невозможности узнать адрес по имени пытается достучаться до всех 255 адресов подсети
TIMEOUT = 4000 – таймаут на операцию отправки/получения блока размером MAXBUFFER или коннекта при ASYNCHCONNECT=1
Секция [TCPDNS]
См. TCPSOC
Секция [NB] – настройки драйвера NetBIOS (nb.dll, nbhdup.dll)
Драйверы существует в двух версиях – для DOS и для Win32.
Драйвер считывает из ini файла раздел [NB], записи (в скобках значения по умолчанию):
TIMEOUT=15000 – таймаут сетевых операций в миллисекундах
Listen=1 – надо ли «слушать» - ждать подключения. Только для nb.dll
Рекомендации при использовании медленного канала связи
Если используется низкоскоростной канал связи, то следует настроить следующие параметры: ShortTimeout, LongTimeout и для сервера справочников (REFSERVER – основная секция) и для менеджерской станции (REFEDIT – основная секция).
CollFileCache для менеджерской станции, для хранения справочников в файлах и синхронизации лишь измененных коллекций (REFEDIT – основная секция).