Новые возможности и изменения в версии 8.1.1 1. Добавлена возможность замены адресов в пакете вызова (CALL). Введены параметры SUBST_DST, SUBST_SRC в команду S R PR:IN/OUT. 2. Добавлена команда P C (Probe Call) для тестирования таблиц маршрутизации и фильтрации X.25. 3. Добавлено новое значение SUBST для параметра CONT команды "S R". 4. Добавлен новый параметр ECHO в описание IP интерфеса типа PPP. 5. Добавлена команда просмотра статуса XOT соединений (D S XOT:n). 6. Добавлена возможность загрузки по TFTP программного обеспечения (ПО) с сохранением текущей конфигурации. 7. Добавлена возможность приема/передачи IP-мултикаст пакетов. ---------------------------------------------------------------------- 1. Добавлена возможность замены адресов в пакете вызова (CALL). Введены параметры SUBST_DST, SUBST_SRC в команду S R PR:IN/OUT. В команду установки фильтров X.25 добавлены два параметра, позволяющие производить замену вызываемого (called) и/или вызывающего (calling) адреса по образцу. SUBST_DST: - заменить вызываемый (called) адрес. SUBST_SRC: - заменить вызывающий (calling) адрес. где - образец, по которому проходит замена. Образец может содержать цифры от 0 до 9 и специальные символы (escapes) \0, от \1 до \9 и от \A до \E. В алгоритме получения "нового" вызываемого (called) адреса используются параметры DST, SUBST_DST и "старый" вызываемый адрес. В алгоритме получения "нового" вызывающего (calling) адреса используются параметры SRC, SUBST_SRC и "старый" вызывающий адрес. При формировании "нового" адреса цифры от 0 до 9 означают сами себя, \0 означает вхождение "старого" адреса целиком, \1 ... \9 , \A ... \E означают цифры в старом адресе, маскируемые соответственно 1-ым ... 9-ым, 10-ым ... 14-ым символом X или * в маске адреса (параметры SRC или DST). Последовательность символов $, которая может встретиться только в конце маски адреса, интерпретируется в алгоритме замены, как один символ *. Пример: Имеем фильтр с параметрами DST=XX77X99$$$ SUBST_DST=33\377\1\28\4 Данному фильтру удовлетворяет пакет с вызываемым адресом длиной от 7 до 10 цифр, где третья и четвертая цифра семерки, а шестая и седьмая - девятки. Например получен пакет с адресом 127759900. Рассматриваем три символа $ в маске как один * (DST=XX77X99*). Тогда в "старом" адресе соответствуют: первому X - цифра 1 второму X - цифра 2 третьему X - цифра 5 четвертому * - последовательность цифр 00 Соответственно для спецсимволов в образце (SUBST_DST) устанавливаются следующие значения: \0 = 127759900 \1 = 1 \2 = 2 \3 = 5 \4 = 00 \5 = <пусто> ... \e = <пусто> Получаем новый адрес: 3357712800 Другие примеры: DST=* SUBST_DST=99\1 oldaddr=1234567 newaddr=991234567 DST=99* SUBST_DST=\1 oldaddr=9912345 newaddr=12345 DST=99* SUBST_DST=00\1 oldaddr=9912345 newaddr=0012345 DST=99* SUBST_DST=00\0 oldaddr=9912345 newaddr=009912345 DST=XXXX SUBST_DST=\0\4\3\2\1 oldaddr=6789 newaddr=67899876 DST=XXXX SUBST_DST=\1\2\3\4\5 oldaddr=6789 newaddr=6789 DST=123* SUBST_DST=0987654321 oldaddr=12345678 newaddr=0987654321 2. Добавлена команда P C (Probe Call) для тестирования таблиц маршрутизации и фильтрации X.25. Команда "P C" предназначена для тестирования таблиц фильтрации и маршрутизации X.25. С ее помощью можно задать некоторые поля пакета вызова (CALL packet) и распечатать результаты обработки этого пакета при выполнении алгоритмов фильтрации и маршрутизации. Команда является только информационной, реально пакет никуда не посылается. Синтаксис: P C <параметр>:<значение> имеются следующие параметры: DST:<адрес> - определяет вызываемый (called) адрес пакета вызова (обязательный параметр); SRC:<адрес> - определяет вызывающий (calling) адрес пакета вызова; FROM:<объект> - определяет объект, с которого пришел пакет вызова, <объект> может принимать те же значения, что и в параметре TO - PO.x, ST.x, IP.x и т.п. (обязательный параметр). Команда выводит данные в следующем формате: in: dst=xxxxxxxxxxxxxxx src=xxxxxxxxxxxxxxx from XX.X in filter: dst=xxxxxxxxxxxxxxx src=xxxxxxxxxxxxxxx route: TO:XX.X out filter: dst=xxxxxxxxxxxxxxx src=xxxxxxxxxxxxxxx alt route: TO:XX.X out filter: dst=xxxxxxxxxxxxxxx src=xxxxxxxxxxxxxxx alt route: TO:XX.X out filter: dst=xxxxxxxxxxxxxxx src=xxxxxxxxxxxxxxx ... Строка in: распечатывает поля исходного пакета (фактически повторяет заданные в команде "P C" параметры). Строка in filter: распечатывает поля пакета после прохождения входного фильтра. Если фильтр заменяет адреса, то будут показаны новые значения. Если фильтр не пропускает пакет, то в этой строке будет указано CLEARED и дальнейший вывод прекратится. Строка route: показывает основной (первый) маршрут для данного пакета. Если ни одна строка в таблице маршрутизации не подходит для данного пакета, то в этой строке будет указано CLEARED и дальнейший вывод прекратится. Строка out filter: распечатывает поля пакета после прохождения выходного фильтра. Если фильтр заменяет адреса, то будут показаны новые значения. Если фильтр не пропускает пакет, то в этой строке будет указано CLEARED. Строка alt route: показывает альтернативный маршрут для данного пакета. Команда "P C" покажет все возможные альтернативные маршруты. Естественно, реальный пакет будет уходить по альтернативному маршруту если только не удается установить соединение по основному маршруту или предыдущему альтернативному. Например, имеем следующую таблицу маршрутизации: PR:IN PO:PO.4 SRC:* DST:* ACCS:YES SUBST_SRC:4444444 SUBST_DST:\0 PR:00 ID:D RT:77 TO:MN CONT:NO PR:01 ID:D RT:12345* TO:PO.1 CONT:YES PR:02 ID:D RT:12345* TO:PO.2 CONT:YES PR:03 ID:D RT:12345* TO:MN CONT:NO PR:OUT PO:PO.1 SRC:* DST:* ACCS:YES SUBST_SRC:1111111 SUBST_DST:\0 PR:OUT PO:PO.2 SRC:99* DST:* ACCS:YES PR:OUT PO:MN SRC:* DST:* ACCS:YES SUBST_SRC:\000 SUBST_DST:77 Тогда результатом выполнения команды p c from=po.4 src=98765 dst=1234567 будет следующий вывод: in: dst=1234567 src=98765 from PO.4 in filter: dst=1234567 src=4444444 route: TO:PO.1 out filter: dst=1234567 src=1111111 alt route: TO:PO.2 out filter: CLEARED alt route: TO:MN out filter: dst=77 src=444444400 Результатом выполнения команды p c from=po.1 dst=55 будет следующий вывод: in: dst=55 src= from PO.1 in filter: dst=55 src= route: CLEARED 3. Добавлено новое значение SUBST для параметра CONT команды "S R". Параметр CONT теперь имеет 3 значения: CONT:NO - не продолжать поиск альтернативных маршрутов; CONT:YES - продолжить поиск альтернативного маршрута в случае неуспешного соединения; CONT:SUBST - то же, что и CONT:YES, только поиск будет продолжаться с новыми адресами, которые могут быть получены при выполнении выходного фильтра. Например, необходимо устанавливать соединение с одним из трех абонентов (с любым свободным). Адреса абонентов соответственно 101, 102 и 103. Все адреса достигаются через порт 4. Создаем следующую таблицу маршрутизации: PR:01 ID:D RT:101 TO:PO.4 CONT:SUBST PR:02 ID:D RT:102 TO:PO.4 CONT:SUBST PR:03 ID:D RT:103 TO:PO.4 CONT:NO PR:OUT PO:PO.4 SRC:* DST:101 ACCS:YES SUBST_SRC:\0 SUBST_DST:102 PR:OUT PO:PO.4 SRC:* DST:102 ACCS:YES SUBST_SRC:\0 SUBST_DST:103 PR:OUT PO:PO.4 SRC:* DST:103 ACCS:YES SUBST_SRC:\0 SUBST_DST:101 Если приходит вызов с адресом 101, то он будет направлен в порт 4. Согласно выходному фильтру адрес будет изменен на 102. Таким образом вызов реально пойдет к абоненту 102. Если абонент 102 занят и возвращается пакет CLEAR, будет продолжен поиск альтернативного маршрута. Так как CONT=SUBST, то в дальнейшем поиске участвует пакет вызова с измененными выходным фильтром адресами. В данном случае с вызывающим (called) адресом 102. Этому пакету удовлетворяет следующая строка (PR:02). И т.д. Результат команды "Probe Call" pc from=1 dst=101 src=99999999 покажет нам все возможные варианты: in: dst=101 src=99999999 from PO.1 in filter: dst=101 src=99999999 route: PR:01 TO:PO.4 out filter: dst=102 src=99999999 alt route: PR:02 TO:PO.4 out filter: dst=103 src=99999999 alt route: PR:03 TO:PO.4 out filter: dst=101 src=99999999 Заметим, что если бы в первых двух строках маршрутизации стояло CONT:YES, то для пакета с адресом 101 был бы возможен только один маршрут (PR:1). Дальнейший поиск в этом случае проводится с неизменными значениями полей пакета CALL, т.е. с вызывающим (called) адресом 101. 4. Добавлен новый параметр ECHO в описание IP интерфеса типа PPP. Параметр управляет посылкой пакетов эхо-запрос (LCP Echo Request). Эти пакеты служат для проверки целостности линии и посылаются при отсутствии данных на приеме. Синтаксис: ECHO:n где n - интервал времени в секундах между посылками пакетов эхо-запрос (LCP Echo Request). Если ECHO:0, то эти пакеты никогда не посылаются. 5. Добавлена команда просмотра статуса XOT соединений (D S XOT:n). Команда D S XOT:0 выдает статус всех установленных XOT соединений. Команда D S XOT:n выдает более подробную информацию о конкретном соединении. Пример: d s xot=0 XOT:1 tcb = 2 Connect to Port 5 Channel 1, src=, dst=6666, tm=0:00:04.13 XOT:2 tcb = 4 Connect to XOT(10.0.10.17), src=, dst=5555, tm=0:00:04.14 XOT:63 tcb = 5 Connect to Manager, src=, dst=5555, tm=0:00:04.14 XOT:64 tcb = 3 Connect to XOT(10.0.10.17), src=, dst=6666, tm=0:00:04.14 Здесь: XOT:n - номер XOT соединения, tcb = n - номер TCB, который описывает установленное TCP соединение. Вторая строка описывает X.25 соединение (то же, что и в команде "D C"). d s xot=1 XOT:1 tcb = 2 Connect to Port 5 Channel 1, src=, dst=6666, tm=0:01:53.09 TCB 2: type is CONNECTION, state is ESTABLISHED Local host: 10.0.10.17, Local port: 65474 Remote host: 10.0.10.17, Remote port: 1998 iss: 3071795200 snduna: 3071795715 sndnxt: 3071795715 sndwnd: 4096 irs: 3071795200 rcvnxt: 3071796212 rcvwnd: 4089 Datagrams(rmss: 1460 smss: 1420): Rcvd: 135, with data: 66, total data bytes: 1011 Sent: 135(retransmit: 0), with data: 67, total data bytes: 514 Здесь добавлена информация о TCP соединении (то же, что и в команде D S TCB=n). 6. Добавлена возможность загрузки по TFTP программного обеспечения (ПО) с сохранением текущей конфигурации. !!!ВНИМАНИЕ При загрузке ПО версий ниже 8.1.0 конфигурация не сохраняется, и для возобновления работы необходимо выполнить команду "F S" в режиме "холодного старта". Введена команда L F, позволяющая загрузить программное обеспечение (ПО) по протоколу TFTP: L F IADR: [SIZE:] [FILE:] [SADR:] [PORT:] [REXMT:] [WAIT:] IADR - обязательный параметр, задает IP адрес или имя TFTP-сервера, на котором находится загружаемое ПО; SIZE - размер образа в байтах (по умолчанию берется максимально возможный для данной модели); FILE - имя файла ПО (по умолчанию берется имя файла для данной модели); SADR - задает исходящий IP-адрес/имя (требуется в случае, когда загрузка идет через интерфейс, IP адрес которого неизвестен TFTP-серверу); PORT - задает UDP-порт TFTP-сервера (по умолчанию 69); REXMT - задает время ожидания перед повтором неподтвержденного пакета (по умолчанию 5 сек); WAIT - задает общее время ожидания подтверждения пакета, по истечении которого операция будет прервана (по умолчанию 25 сек). Пример: Manager: l f iadr:11.0.0.1 Getting from 11.0.0.1:69:NSG800_4wl.bin 1048576 data bytes RRQ sent Receiving started Image received. Checking...OK Label: === NSG-800 Version 1.0 === === Software: Version 8.1.1(Jun 30 2003) === === Copyright (C) by Network Systems Group Ltd. === NSG-800/4wl/Network Systems Group *** ATTENTION *** Now image will be writing into non-volatile memory Old image will be erasing! Are you sure[yes\no] ? yes *** ATTENTION: Do not power off or reset until image updating finished *** WRITING...OK l f iadr:11.0.0.1 ^ Software updating successfully finished. Manager: В данном примере выполняется загрузка ПО с сервера 11.0.0.1. По умолчанию для модели NSG-800/4wl берется файл NSG800_4wl.bin. После получения сообщения "Receiving started" необходимо дождаться "Image received". Файл сначала принимается в память, выделяемую из области HEAP. По умолчанию для этой модели под прием файла из области HEAP запрашивается фрагмент памяти размером 1048576. После того, как образ получен, проверяется контрольная сумма. Если проверка прошла успешно ("Checking...OK"), предлагается записать образ во флеш-память. Если задан ответ yes, начинается запись (WRITING...), необходимо дождаться сообщения (OK) об успешном завершении операции. При этом конфигурация не стирается, и в случае выполнения W S PO:A в действие вступит новая версия ПО с прежней конфигурацией. !!!ВАЖНО Следует отметить, что размер запрашиваемого по умолчанию фрагмента памяти может быть больше максимального из существующих в данный момент в области HEAP фрагментов памяти. Размер максимального фрагмента памяти в области HEAP можно посмотреть командой: Manager: d s sy:0 Number of reboots = 62 0 days 0 hours 49 minutes 26.78 seconds since last boot Number of buffers = 11979, minimum free buffers = 11788, free buffers = 11797(98%) Heap size = 4000000, free = 3595372(89%), max = 3467384 Stack size = 4063232, free = 2192032(53%) CPU utilization = 0% Он показывается в поле max в строке Heap size = ???, free = ???, max = <размер максимального фрагмента>. Eсли при выполнении команды L F появляется сообщение "No memory", рекомендуются следующие действия. Первым делом в команде "L F" надо задать параметр SIZE, равный размеру загружаемого файла; если это не помогло, значит значение поля max, выводимое по команде D S SY:0, меньше значения параметра SIZE. Чтобы в области HEAP появился фрагмент памяти необходимого размера (т.е. не меньше заданного параметром SIZE), нужно последовательно пробовать отключать "ненужные" (которые не требуются для загрузки ПО) в данный момент ресурсы. Например, поставить в NOCONF все порты, IP-интерфейсы, Телнет-станции, которые не задействованы в данный момент для выполнения загрузки ПО, сделать их рестарт и посмотреть max командой D S SY:0. Или записать новую конфигурацию во флеш и сделать рестарт всего устройства для дефрагментации области HEAP, поскольку область HEAP может быть разбита на большое количество мелких фрагментов в результате предыдущей работы. Если и это не помогло, надо перераспределить (уменьшить) размеры области STACK в пользу размеров области HEAP командой S W HS: SS:. Затем надо выполнить "W F" и "W S PO:A". !!!ВАЖНО Перераспределение памяти нужно выполнять очень аккуратно, основываясь на данных, выдаваемых командой D S SY:0. Необходимо, чтобы из размера области STACK не было перераспределено больше, чем значение поля free в строке Stack size = ???, free = ???. Иначе при перезагрузке некоторые задачи не смогут запуститься и устройство будет постоянно рестартовать. Проблемы с нехваткой памяти для загрузки ПО по TFTP наиболее актуальны для устройств серий NPS-7e и NSG-5xx. В меньшей степени эти проблемы возникают для устройств серии NX-300, вероятнее всего можно столкнуться с нехваткой памяти при загрузке ПО в устройства NX-300/7WL, NX-300/8W, NX-300/8a, NX-300/16a, NX-300 с интерфейсным модулем IM-CE1. При загрузке ПО в устройства серии NSG-800 как правило проблем с нехваткой памяти не возникает. Список сообщений, которые могут появляться при выполнении команды "L F": "No memory" - нет свободного фрагмента в области HEAP, достаточного для приема файла. "Name not resolved" - не удалось определить IP-адрес, соответствующий имени, заданному параметром IADR. "Source name not resolved" - не удалось определить IP-адрес, соответствующий имени, заданному параметром SADR. "File is too big" - размер принимаемого файла оказался больше заданного параметром SIZE. "No free udp port" - не удалось открыть UDP-сокет. "Transfer timed out" - выполнение было прекрашено по тайм-ауту. "Transfer interrupted" - выполнение было прервано пользователем. 7. Добавлена возможность приема/передачи IP-мултикаст пакетов. Теперь можно организовать проброс IP-мултикаст пакетов из одной LAN в другую.