Давно уже использую в скрипте, рулящем маршрутами на несколько ISP, проверку доступности канала через ping несколькими пакетами на 8.8.8.8. Основной канал частенько переподключался без видимых на то причин. При этом пускал отдельно свой ping – там потерь пакетов вообще не было. Дошли руки подебажить. Если из 5 проверочных пингов пролазят только 2 – то ping -q отдает false. При 3 нормально. Вероятно, граница проходит по половине заданного числа попыток. В man’е вроде ничего на этот счет.
Переделал логику; теперь канал считается мертвым при полной потере пакетов на интерфейсе. Пока полет нормальный.