Имеется Linux-сервер с atftpd и два коммутатора DES-3028 с соседними IP (*.30 и *.31).
Прошивка одинаковая - 2.00.B27
С одного конфигурация по TFTP сохраняется нормально, со второго не хочет.
Команда сохранения:
upload c 10.20.30.40 /writable/sw3028.cfg
Сниффер показывает, что сервер отправляет ответы с одного порта, а коммутатор шлёт данные на другой:
Код:
08:39:12.405031 IP sw3028.50001 > linbox.tftp: 37 WRQ "/writable/sw3028.cfg" octet
08:39:12.405305 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:12.406528 IP sw3028.50001 > linbox.34596: UDP, length 516
08:39:17.403820 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:17.431267 IP sw3028.50001 > linbox.34596: UDP, length 516
08:39:22.403818 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:22.632013 IP sw3028.50001 > linbox.34596: UDP, length 21
08:39:27.403855 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:32.403820 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:37.403827 IP linbox.44500 > sw3028.50001: UDP, length 4
08:39:47.408930 IP sw3028.50001 > linbox.tftp: 37 WRQ "/writable/sw3028.cfg" octet
08:39:47.409457 IP linbox.44413 > sw3028.50001: UDP, length 4
08:39:47.410572 IP sw3028.50001 > linbox.44500: UDP, length 516
08:39:52.407879 IP linbox.44413 > sw3028.50001: UDP, length 4
08:39:52.433233 IP sw3028.50001 > linbox.44500: UDP, length 516
08:39:57.407844 IP linbox.44413 > sw3028.50001: UDP, length 4
08:39:57.633690 IP sw3028.50001 > linbox.44500: UDP, length 21
08:40:02.430466 IP linbox.44413 > sw3028.50001: UDP, length 4
08:40:07.427932 IP linbox.44413 > sw3028.50001: UDP, length 4
08:40:12.428234 IP linbox.44413 > sw3028.50001: UDP, length 4
08:43:24.616972 IP sw3028.50001 > linbox.tftp: 37 WRQ "/writable/sw3028.cfg" octet
08:43:24.617552 IP linbox.37268 > sw3028.50001: UDP, length 4 сервер отвечает Ack, block 0
08:43:24.618619 IP sw3028.50001 > linbox.44413: UDP, length 516 коммутатор отправляет block 1 не на тот порт
08:43:29.615853 IP linbox.37268 > sw3028.50001: UDP, length 4 сервер снова отвечает Ack, block 0
08:43:29.645285 IP sw3028.50001 > linbox.44413: UDP, length 516 коммутатор снова отправляет block 1 не на тот порт
08:43:34.615829 IP linbox.37268 > sw3028.50001: UDP, length 4
08:43:34.845152 IP sw3028.50001 > linbox.44413: UDP, length 21 коммутатор отсылает error, access violation
08:43:39.615844 IP linbox.37268 > sw3028.50001: UDP, length 4
08:43:44.615881 IP linbox.37268 > sw3028.50001: UDP, length 4
08:43:49.615840 IP linbox.37268 > sw3028.50001: UDP, length 4
Видно, что коммутатор отвечает на тот порт, который использовался сервером при предыдущей попытке:
34596 вместо 44500, 44500 вместо 44413, 44413 вместо 37268.
В aftpd.log при этом повторяются сообщения sendack/timeout:
Код:
Creating new socket: 10.20.30.40:44500
Fetching from 10.90.90.30 to /writable/sw3028.cfg
received WRQ <filename: /writable/sw3028.cfg, mode: octet, >
sent ACK <block: 0>
timeout: retrying...
sent ACK <block: 0>
timeout: retrying...
...
client (10.90.90.30) not responding
Server thread exiting
Проблеме подвержены исключительно 3028 (примерно 20% от протестированных) и 3052, на остальных DES-3xxx её вроде бы нет.