Я работаю на поставщика услуг VoIP, и я работаю над проблемой с клиентом, у которого есть кабельное подключение к интернету, которое бросает меня в тупик.
У него есть один блок, который мы будем притворяться 70.141.15.0/29, со шлюзом в .1 и маршрутизаторами в .2 и .3. Оба маршрутизатора подключены к его кабельному модему, который, насколько нам известно, настроен на то, что провайдеры кабельных сетей представляют «мостовой режим».
Я пингую оба этих маршрутизатора одновременно из одной и той же системы, которая представляет собой систему Linux, подключенную к оптоволокну с (вероятно) уровня (3). Излишне говорить, что никто на планете не знает, сколько узлов существует между здесь и там. Но проверьте результаты пинга.
К первому роутеру:
64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms
Со второго:
64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms
Проверьте значения TTL. Имеет ли это смысл? Эти устройства находятся рядом друг с другом и подключены к этому модему через отдельные порты коммутатора. Как может появиться еще около 200 прыжков? От пинга других сайтов у меня складывается впечатление, что TTL просто не реализован так, как я думаю. Я сомневаюсь, что между мной и 4.2.2.2, или woot.com, есть 200 прыжков, но я получаю менее 50 результатов TTL от обоих.
Один из этих маршрутизаторов (с более высоким TTL) от Fortinet, а другой - пользовательское устройство на основе Linux. Я почти уверен, что у Forti есть домашний сетевой стек, в то время как Linux-бокс использует все, что поставляется с исходным архивом, загруженным разработчиками аппаратного обеспечения. Вполне вероятно, что эхо ICMP реализовано в причудливой форме на одном из них и намеренно отправляет все ответы с TTL 50?
Я также замечаю, что один из немногих сайтов, которые я могу найти, который отвечает здравомыслящим TTL, это slashdot, и я могу предположить, что их серверы и маршрутизаторы могут быть немного меньше «того, что мы нашли в гараже», чем обычный веб-сайт, который вроде как заставляет меня чувствовать, что я могу быть на правильном пути с этим последним предположением.
Подводя итог: означает ли TTL для ping что-нибудь надежное?