Авто
«Авто» держит соединение на сервере выбранной подписки и переключает его, только если текущий сервер перестал отвечать. Если появился сервер побыстрее, это ещё не повод переключаться: пока текущий отвечает, приложение остаётся на нём.
«Авто» можно включить только в одной подписке за раз. При включении приложение выбирает сервер с лучшим баллом (о нём ниже) и, если VPN подключён, переподключается на него.
Балл сервера
Чтобы выбрать сервер, «Авто» ставит каждому балл по его последним замерам. Балл складывается из трёх частей:
- обычный пинг сервера;
- насколько сильно пинг скачет от замера к замеру;
- 1000 за каждый замер, на который сервер не ответил.
Выбирается сервер с наименьшим баллом. Балл не говорит, работает сервер или нет, он задаёт очередь: все серверы подписки выстраиваются по баллу, и «Авто» берёт первый.
Например, у трёх серверов есть по три последних замера:
| Сервер | Замеры, мс | Обычный пинг | Скачет на | Не ответил | Балл |
|---|---|---|---|---|---|
| Финляндия | 60, 61, 62 | 61 | 2 | 0 раз | 63 |
| Германия | 20, 25, 300 | 25 | 280 | 0 раз | 305 |
| Нидерланды | 15, 18, нет ответа | 18 | 3 | 1 раз | 1021 |
«Авто» выберет Финляндию. У Германии лучший замер быстрее, но пинг сильно скачет. Нидерланды быстрее всех, но один раз не ответили.
Серверы без пинга встают в очередь после серверов с баллом: сначала те, у кого есть замер скорости (от быстрых к медленным), потом ни разу не проверенные, а в самом конце те, чей последний замер остался без ответа. При равном балле сохраняется порядок из подписки.
Точное определение
У сервера хранятся последние 5 замеров. В балл идут те, что сделаны тем же способом, что и последний (TCP, URL или ICMP), и не старше 24 часов. Пусть
где
Когда начинается проверка
Пока VPN включён, приложение следит за трафиком. Проверка начинается, если:
- данные уходят, а в ответ 2 секунды подряд ничего не приходит (на компьютере – 5 секунд);
- ядро не смогло подключиться к серверу;
- за 30 секунд ничего не пришло, хотя что-то отправлялось;
- с прошлой плановой проверки прошло 5 минут и за это время был трафик. Пока устройством не пользуются, «Авто» серверы не трогает.
На Android проверка не начинается, если у телефона сейчас нет ни одной сети.
Как проходит проверка
Приложение проверяет текущий сервер и до 9 серверов той же подписки с лучшим баллом – так же, как это делает HTTP-пинг. Плановая проверка смотрит меньше серверов: текущий, сервер для возврата и пару лучших.
- Текущий ответил – приложение остаётся на нём, даже если кто-то ответил быстрее.
- Текущий не ответил, а другие ответили – приложение переходит на ответивший сервер с лучшим баллом.
- Не ответил никто – приложение спрашивает соседние подписки, об этом ниже.
При переходе балл считается так же, только вместо обычного пинга берётся пинг из этой проверки. Поэтому сервер, который сейчас ответил быстро, но весь день скакал, всё равно уступит стабильному.
Точное определение
Пусть
Если выбранный сервер пропал из подписки после обновления, «Авто» сразу ставит вместо него лучший из оставшихся и переподключается.
Если молчит вся подписка
По одной подписке не понять, упали её серверы или пропала сеть. Поэтому приложение спрашивает соседей: по 2 лучших сервера из ближайшей подписки выше и из ближайшей подписки ниже в списке.
Соседи тоже молчат. Значит, пропала сеть. Приложение остаётся на сервере и не записывает эти замеры в историю, иначе после поездки в лифте лучшие серверы целые сутки ходили бы со штрафом. Следующая попытка будет через
где
Соседи отвечают. Значит, сеть есть, а упала своя подписка. Следующая проверка захватит её шире, до 30 серверов. Если подписка снова молчит (эта проверка будет не позже чем через 5 минут), «Авто» переходит на лучший сервер соседней подписки.
Возвращение
Уходя с сервера, приложение запоминает его. Плановая проверка смотрит и его, и если он ответил два раза подряд, «Авто» на него возвращается.
Пока вы на сервере соседней подписки, своя подписка проверяется раз в минуту. После 5 неудач подряд такие проверки останавливаются на 15 минут, чтобы не мерить серверы всю дорогу в метро.
Ограничения
- Не больше 3 переключений за 3 минуты. Если серверы падают один за другим, приложение не прыгает по кругу, а ждёт.
- После переключения 5 секунд, а после обычной проверки 15 секунд новая проверка не запускается: само переподключение на пару секунд выглядит как сбой.
Серверы, которые «Авто» не берёт
Если зажать кнопку «Авто», можно отметить серверы, на которые «Авто» переходить не будет. На Android TV для этого зажмите OK на пульте, а мышью нажмите правую кнопку.
- Последний неотмеченный сервер отметить нельзя.
- Если после обновления в подписке остались только отмеченные серверы, «Авто» выбирает из них.
- Если отметить сервер, к которому вы сейчас подключены, после «Готово» приложение перейдёт на лучший из остальных.
Отметки сохраняются при обновлении подписки.