Как автоматически протестировать скорость на нескольких wan-интерфейсах, не теряя соединение ssh?

May 13, 2020 11:28

В системе имеется несколько wan-интерфейсов (до десятка). При чём некоторые могут быть не подключены. Существует поднятый обратный ssh, который автоматически поднимается при разрыве.
Так же есть шанс, что в любой момент wan-соединение может быт отсоединено.

На данный момент я тестирую скорость следующим образом (python+bash)


Read more... )

Вопрос

Leave a comment

Comments 18

casamusa May 13 2020, 09:12:14 UTC
У меня нет понимания зачём ты дергаешь интерфейсы ( down/up ). Что бы чистить счетчики? А модуль почему из ядра не удаляешь?
Это какая-то внутренняя магия, которую ты здесь не описал или это нужно для тестирования скорости?
Если второе, то не делай так.

Есть много вариантов.
То, что ты называешь скоростью, называется иначе. Потому что скорость интерфейса - это та скорость, которая выставлена для его работы ( 10/100/1000/10000 ).
Итак, если я правильно понял, то тебе нужно измерить текущую загрузку сетевого интерфейса.

Давай сделаем это топором и двумя скриптами:

#!/bin/bash

cat /proc/net/dev | grep наш_интерфейс | awk что-там-надо > /tmp/наш_интерфейс_раз

и второй:

#!/bin/bash

oldThroughput=$( cat /tmp/наш_интерфейс_раз )
currThroughput=$( cat /proc/net/dev | grep наш_интерфейс | awk что-там-надо )
...здесь магия вычисления...
Вариант иного топора примерно такой же, только используем ( ... )

Reply

dlinyj May 13 2020, 09:33:27 UTC
Так, ты не совсем понял проблему.

Смотри, скорости передачи данных корректно измеряются, сюда можно не лезть. Списки сетевых карточек я получаю и тут проблем нет.

Проблема в маршрутизации, тут я лихо плаваю и нифига не понимаю. Вот представь, у нас воткнуто n-модемов. У них абсолютно одинаковый ip-адрес, и назначает из DHCP одинаковый адрес каждому интерфейсу (тут моё изнасилование мозга). Итого у нас n интерфейсов с ip-адресом 192.168.8.100 . При чём есть шанс, что на модеме, например, кончились деньги.

Есть функция тестирования скорости, она работает и мы её не трогаем. Задача:
1. На живом интерфейсе оставить "вечный" ssh. Если он отвалился, перевесить на другой.
2. Запускать спидтест на конкретном интерфейсе (он гоняет трафик тудым-сюдым с удалённым сервером и измеряет скорости и пинги).

Поскольку я не знал как разрешить проблему одинаковых ip, маршрутизации всего этого добра, то тупо гасил интерфейсы и поднимал.

Reply

dlinyj May 13 2020, 10:12:04 UTC
Спасибо, думаю как мне может помочь.

Reply


t_mike May 13 2020, 09:13:19 UTC
попробуй ssh over sctp

Reply


arush_damage May 13 2020, 23:25:15 UTC
Я думаю что без более детального описания конфигурации сети никто помочь не сможет.
Слишком много вопросов.
Например:
1) Почему у всех модемов один адрес?
2) ссш соединение идет вроде как через впн? А впн через модем что-ли? Или чего оно рвется? Ты вообще все интерфейсы тушишь или только ван?
3) зачем тебе переменная ЦМД? Главное ж есть и без ЦМД вызов %))) Сори, не в качестве наезда, просто глаза режет %)))

Reply

dlinyj May 14 2020, 07:02:43 UTC
1. https://dlinyj.livejournal.com/806920.html?thread=10806536#t10806536
2. Забудь про vpn. Либо ssh либо vpn. Я тушу все интерфейсы по очереди, и тестирую скорость через каждый в отдельности. Покуда идёт тест ssh должно восстановиться, но не успевает.
3. Потому что я ещё логирую использованные команды. В данном примере опущено.

Reply

arush_damage May 14 2020, 11:46:47 UTC
1) Это только часть конфигурации. По хорошему надо хотя бы вывод 'ip route' и 'ip addr' смотреть что бы понять как что работает.
2) Еще раз: там что других интерфейсов кроме модемов нет? Даже локальной сети нет? Если локальная сеть есть - зачем ты ее отключаешь?

Reply

dlinyj May 14 2020, 13:04:57 UTC
1. Я не знаю что ты там надеешься увидеть. Есть модемы, которые по dhcp каждый пытается настроить под себя и конкурируют. Ручками назначаю их вид.
2. Считай что нет. Я отключаю только интерфейсы модема.

Reply


Leave a comment

Up