TRACEROUTE

24
TRACEROUTE

description

TRACEROUTE. Программа Traceroute , написанная Van Jacobson, - отладочное средство, которое позволяет лучше понять устройство протоколов TCP/IP. Обычно две последовательные датаграммы отправленные от одного и того же источника к одному и тому же пункту назначения - PowerPoint PPT Presentation

Transcript of TRACEROUTE

Page 1: TRACEROUTE

TRACEROUTE

Page 2: TRACEROUTE

Программа Traceroute, написанная Van Jacobson, - отладочноесредство, которое позволяет лучше понять устройство протоколовTCP/IP. Обычно две последовательные датаграммы отправленныеот одного и того же источника к одному и тому же пункту назначенияпроходят по одному и тому же маршруту, однако гарантироватьэтого невозможно. Traceroute позволяет нам посмотретьмаршрут, по которому двигаются IP датаграммы от одного хоста кдругому. С помощью Traceroute можно воспользоваться IP опциеймаршрутизации от источника.

Page 3: TRACEROUTE

Функционирование программы Traceroute

Уже описана IP опция записи маршрута(например, программа ping).

Тогда возникает вопрос: «Зачем писать новое приложение?» Есть три

причины.• Во-первых, исторически не все маршрутизаторы поддерживают

опцию записи маршрута, из чего следует, что некоторые маршруты

становятся неиспользуемыми. (Traceroute не требует каких-либо

специальных характеристик на промежуточных маршрутизаторах).• Во-вторых, запись маршрута обычно осуществляется в одном

направлении. Отправитель включает опцию, а получатель должен

вставить все значения из принятого IP заголовка и каким-либо образом

вернуть их отправителю. Traceroute требует только того, чтобы на

пункте назначения присутствовал работающий UDP модуль – никаких

специальных серверных приложений не требуется.

Page 4: TRACEROUTE

• Третья и основная причина заключается в том, что размер, предоставляемый для опций в IP заголовке, недостаточен для того, чтобы обработать большинство маршрутов. В поле опций IP заголовкавходит всего 9 IP адресов. На сегодняшний день этого слишком мало. Traceroute использует ICMP и поле TTL в IP заголовке. Поле TTL (время жизни) это 8-битное поле, которое отправитель устанавливает в какое-либо значение. Рекомендуемое исходное значение указано в Assigned Numbers RFC и в настоящее время равно 64. Каждый маршрутизатор, который обрабатывает датаграмму, уменьшает значение TTL на единицу или на количество секунд, в течение которых маршрутизатор обрабатывал датаграмму. Так как большинство маршрутизаторов задерживает датаграмму меньше чем секунду, поле TTL, как правило, уменьшается на единицу и довольно точно соответствует количеству пересылок.

Page 5: TRACEROUTE

С помощью поля TTL предотвращается зацикливание датаграммы в петлях маршрутизации. Например, если маршрутизатор вышел из строя или соединение между 2 маршрутизаторамипотеряно, может потребоваться некоторое время (от несколькихсекунд до нескольких минут), для того чтобы определить, чтомаршрут потерян и что его необходимо обойти. В это времясуществует вероятность, что датаграмма будет уничтожена впетле маршрутизации. Чтобы предотвратить потерю датаграммы,поле TTL устанавливается в максимальную величину.

Page 6: TRACEROUTE

Когда маршрутизатор получает IP датаграмму с TTL равным либо 0,либо 1, он не должен отправлять эту датаграмму дальше. (Хостприемник должен доставить подобную датаграмму в приложение, таккак датаграмма не может быть смаршрутизировна. Как правило,системы не должны получать датаграммы с TTL равным 0.) Если такуюдатаграмму получает маршрутизатор, он уничтожает ее и посылаетхосту, который ее отправил ICMP сообщение "время истекло" (timeexceeded). Принцип работы Traceroute заключается в том, что IPдатаграмма, содержащая это ICMP сообщение, имеет в качествеадреса источника IP адрес маршрутизатора.

Page 7: TRACEROUTE

Теперь мы можем понять, как работает Traceroute.

На хост назначения отправляется IP датаграмма с TTL,установленным в единицу. Первыймаршрутизатор, который долженобработать датаграмму, уничтожаетее (так как TTL равно 1) и отправляет ICMP сообщение об истечении времени.Таким образом, определяется первый маршрутизатор в маршруте.Затем Traceroute отправляет датаграмму с TTL равным 2, чтопозволяет получить IP адрес второго маршрутизатора. Этопродолжается до тех пор, пока датаграмма не достигнет хостаназначения. Однако, если датаграмма прибыла именно на хостназначения, он не уничтожит ее и не сгенерирует ICMP сообщение обистечении времени, так как датаграмма достигла своего конечногоназначения. Как можно определить, что датаграмма достиглаконечного пункта назначения?

Page 8: TRACEROUTE

В UDP датаграммах, которые посылает Traceroute, устанавливается

несуществующий номер UDP порта (больше чем 30000), что делает

невозможным обработку этой датаграммы каким-либо приложением.

Поэтому, когда прибывает подобная датаграмма, UDP модуль хоста

назначения генерирует ICMP сообщение "порт недоступен" (port

unreachable). В этом случае Traceroute необходимо определить тип

принятого ICMP сообщения - либо об истечении времени, либо о

недоступности порта. Именно таким образом мы узнаем, доставлена ли

датаграмма в пункт назначения.

Page 9: TRACEROUTE

Работа в локальной сетиЗапустим traceroute. Пройдем по маршруту от svr4 к slip черезмаршрутизатор bsdi. Выделенный SLIP канал между bsdi и slip имеетскорость 9000 бит/с.

svr4 % traceroute sliptraceroute to slip (140.252.13.65), 30 hops max, 40 byte packets1 bsdi (140.252.13.35) 20 ms 10 ms 10 ms2 slip (140.252.13.65) 120 ms 120 ms 120 ms

Первая строка, без номера, содержит имя и IP адрес пунктаназначения и указывает на то, что величина TTL не может бытьбольше 30. Размер датаграммы установлен в 40 байт, из которых 20байт отводится на IP заголовок, 8 байт на UDP заголовок и 12 байт напользовательские данные. (В 12 байтах пользовательских данныхсодержится номер последовательности, который увеличивается наединицу при отправке каждой следующей датаграммы, копияисходящего TTL и время, когда датаграмма была отправлена.)

Page 10: TRACEROUTE

Следующие две строки вывода начинаются с TTL, после чего следуетимя хоста или маршрутизатора и их IP адреса. Для каждого значенияTTL отправляются 3 датаграммы. Для каждого возвращенного ICMPсообщения рассчитывается и печатается время возврата (round-trip).Если ответ не получен в течение пяти секунд на любую из трехдатаграмм, печатается звездочка, после чего отправляется следующаядатаграмма. В нашем примере первые три датаграммы имели TTL,установленный в единицу, а ICMP сообщения вернулись через 20, 10 и10 миллисекунд. Следующие три датаграммы были отправлены с TTLравным 2, а ICMP сообщения вернулись с задержкой 120 миллисекунд.Так как TTL со значением 2 достигло конечного пункта назначения,программа прекратила свою работу. Время возврата (round-trip) рассчитывается программой traceroute нахосте отправителе. Оно представляет из себя полное времявозврата от программы traceroute к маршрутизатору. Если необходиморассчитать время, затраченное на каждую пересылку, мы должнывычесть значение, полученное как TTL N, из значения, полученного какTTL N+1.

Page 11: TRACEROUTE

1 0.0 arp who-has bsdi tell svr42 0.000586 (0.0006) arp reply bsdi is-at 0:0:c0:6f:2d:40

3 0.003067 (0.0025) svr4.42804>slip.33435: udp 12 [ttl 1]4 0.004325 (0.0013) bsdi>svr4: icmp: time exceeded in-transit

5 0.069810 (0.0655) svr4.42804>slip.33436: udp 12 [ttl 1]6 0.071149 (0.0013) bsdi>svr4: icmp: time exceeded in-transit

7 0.085162 (0.0140) svr4.42804>slip.33437: udp 12 [ttl 1]8 0.086375 (0.0012) bsdi>svr4: icmp: time exceeded in-transit

9 0.118608 (0.0322) svr4.42804>slip.33438: udp 1210 0.226464 (0.1079) slip>svr4: icmp: slip udp port 33438 unreachable

11 0.287296 (0.0608) svr4.42804>slip.33439: udp 1212 0.395230 (0.1079) slip>svr4: icmp: slip udp port 33439 unreachable

13 0.409504 (0.0143) svr4.42804>slip.33440: udp 1214 0.517430 (0.1079) slip>svr4: icmp: slip udp port 33440 unreachable

Рис.1. Вывод tcpdump для примера traceroute от svr4 к slip

Строки с 9-й по 14-ю соответствуют трем датаграммам, которыепосылаются с TTL равным 2. Они достигают конечного пунктаназначения, при этом генерируется ICMP сообщение о недоступностипорта.

Page 12: TRACEROUTE

То что первый пробный пакет к bsdi имел RTT равное 20 млс, аследующие два имели RTT равное 10 млс объясняется тем, что былосуществлен ARP обмен.

Значение, которое выбирается как номер UDP порта назначения,начинается с величины 33435 и увеличивается на единицу каждый раз,когда отправляется следующая датаграмма. Номер порта может бытьизменен с использованием опции командной строки. UDP датаграммасодержит 12 байт пользовательских данных, в том случае, если ввыводе traceroute отправляются датаграммы размером в 40 байт.

Когда IP датаграмма имеет TTL равное единице, tcpdump печатаеткомментарий [ttl 1]. Подобное сообщение печатается, когда TTL равно 0или 1, чтобы предупредить нас о том, что в датаграмме что-то не впорядке. В данном случае мы ожидаем увидеть TTL равное 1, однаконекоторые другие приложения получат предупреждение о том, чтодатаграмма скорее всего не достигла своего конечного пунктаназначения. Скорее всего мы никогда не увидим датаграммы с TTLравным 0, если только маршрутизатор, который отправил ее в кабель,не вышел из строя.

Page 13: TRACEROUTE

ICMP cообщение "время истекло при передаче " (time exceeded in transit)

это то, что мы ожидаем увидеть от маршрутизатора bsdi, в том случае

если он уменьшит на единицу TTL, и оно станет равным нулю. ICMP

сообщение придет от маршрутизатора даже в том случае, если IP

датаграмма, которая была уничтожена, направлялась на slip.

Существуют два различных ICMP сообщения об истечении времени, в

каждом из них содержится различное поле code.

Рис. 2. ICMP сообщение об истечении времени ("time exceeded")

Page 14: TRACEROUTE

Существует возможность, что хост пошлет ICMP сообщение "время

истекло в течении повторной сборки" (time exceeded during reassembly)

в том случае, если время истекло в течении повторной сборки

фрагментированной датаграммы. В этом случае поле code

устанавливается в единицу.

Page 15: TRACEROUTE

Работа в глобальной сетиsun % traceroute nic.ddn.miltraceroute to nic.ddn.mil (192.112.36.5), 30 hops max, 40 byte packets

1 netb.tuc.noao.edu (140.252.1.183) 218 ms 227 ms 233 ms2 gateway.tuc.noao.edu (140.252.1.4) 233 ms 229 ms 204 ms

3 butch.telcom.arizona.edu (140.252.104.2) 204 ms 228 ms 234 ms4 Gabby.Telcom.Arizona.EDU (128.196.128.1) 234 ms 228 ms 204 ms5 NSIgate.Telcom.Arizona.EDU (192.80.43.3) 233 ms 228 ms 234 ms

6 JPL1.NSN.NASA.GOV (128.161.88.2) 234 ms 590 ms 262 ms7 JPL3.NSN.NASA.GOV (192.100.15.3) 238 ms 223 ms 234 ms8 GSFC3.NSN.NASA.GOV (128.161.3.33) 293 ms 318 ms 324 ms9 GSFC8.NSN.NASA.GOV (192.100.13.8) 294 ms 318 ms 294 ms10 SURA2.NSN.NASA.GOV (128.161.166.2) 323 ms 319 ms 294 ms11 nsn-FIX-pe.sura.net (192.80.214.253) 294 ms 318 ms 294 ms12 GSI.NSN.NASA.GOV (128.161.252.2) 293 ms 318 ms 324 ms

13 NIC.DDN.MIL (192.112.36.5) 324 ms 321 ms 324 ms

Рис.3. Запрос от sun к сетевому информационному центру (NIC – NetworkInformation Center)

Page 16: TRACEROUTE

Когда датаграмма выходит из сети tuc.noao.edu, она попадает в сетьtelcom.arizona.edu. Затем она попадает в сеть Национального агентствапо аэронавтике США (NASA Science Internet), nsn.nasa.gov.Маршрутизаторы с TTL равным 6 и 7 находятся в лаборатории JetPropulsion (JPL). Сеть sura.net (в выводе TTL равно 11) это сетьИсследовательской ассоциации университетов (SoutheasternUniversities Research Association Network). GSI (TTL равно 12) этоGovernment Systems, Inc., оператор для NIC. RTT для TTL равного 6 (590) почти в два раза больше, чем два другиеRTT (234 и 262). Это показывает динамику IP маршрутизации.Подобное может произойти где-нибудь по пути от источника кмаршрутизатору если какой-нибудь промежуточный маршрутизаторзадержал датаграмму. Однако мы не можем сказать, была лизадержена исходящая датаграмма или возвращающееся ICMPсообщение. RTT для первой попытки с TTL равным 3 (204) меньше, чем RTT дляпервой попытки с TTL равной 2 (233). Так как каждое полученное RTTявляется полным временем прохода от посылающего хоста кмаршрутизатору.

Page 17: TRACEROUTE

Опция IP маршрутизации от источникаОбычно IP маршрутизация осуществляется динамически, т.е. каждыймаршрутизатор принимает решение о том, на какой маршрутизаторследующей пересылки необходимо отправить датаграмму.Приложения не могут управлять этим процессом, поэтому приходитсяиспользовать средства, такие как Traceroute, чтобы проследить, как вдействительности происходит маршрутизация. Идея, заложенная в маршрутизации от источника, заключается в том,что отправитель сам указывает маршрут по которому пройдетдатаграмма. Существует две формы: • Жесткая (strict) маршрутизация от источника. Отправитель

указывает точный путь, по которому должна пройти IP датаграмма. Если маршрутизатор обнаруживает, что следующая пересылка, указанная в маршрутизации от источника, не является непосредственно подключенной сетью, возвращается ICMP ошибка "маршрутизация от источника невозможна" (source route failed).

• Свободная (loose) маршрутизация от источника. Отправитель указывает список IP адресов, через который должна пройти IP датаграмма, однако датаграмма может также пройти через другие маршрутизаторы между любыми двумя адресами, указанными в списке.

Page 18: TRACEROUTE

Traceroute позволяет использовать маршрутизацию от источника.

Рис.4. Общий формат опции маршрутизации от источника в IP заголовке

В случае маршрутизации от источника мы должны заполнить список IP

адресов, перед тем как будет отправлена IP датаграмма, выделяемобласть для заполнения и инициализируем определенное количествотребуемых IP адресов, обычно их количество меньше чем 9.Опции маршрутизации от источника обычно называются"маршрутизацией от источника с записью" (source and record route)(LSRR - свободная и SSRR - жесткая), так как список IP адресовобновляется в процессе того, как датаграмма проходит по маршруту.

Page 19: TRACEROUTE

Происходит следующее: • Отправляющий хост берет из приложения маршрут от источника,удаляет первый пункт (он становится адресом назначения длядатаграммы), перемещает все оставшиеся пункты влево на один пункти помещает исходный адрес назначения на место последнего пункта всписке. Указатель все еще указывает на первый пункт списка (значениеуказателя равно 4). • Каждый маршрутизатор, который обрабатывает датаграмму,проверяет, является ли этот адрес адресом назначения. Если нет,датаграмма обрабатывается как обычная. В этом случае должна бытьиспользована свободная маршрутизация от источника, иначе мы неполучим датаграмму. • Если маршрутизатор является пунктом назначения и указатель небольше чем длина, в этом случае (1) следующий адрес в списке (кудауказывает ptr) становится адресом назначения датаграммы, (2) IPадрес, соответствующий исходящему интерфейсу, замещает собойтолько что использованный адрес источника, и (3) указательувеличивается на 4.

Page 20: TRACEROUTE

Пример traceroute с использованием свободной маршрутизации от источника

sun % traceroute -g 192.31.39.21 nic.ddn.miltraceroute to nic.ddn.mil (192.112.36.5), 30 hops max, 40 byte packets1 netb.tuc.noao.edu (140.252.1.183) 256 ms 256 ms 235 ms

2 butch.telcom.arizona.edu (140.252.104.2) 234 ms 228 ms 234 ms3 Gabby.Telcom.Arizona.EDU (128.196.128.1) 234 ms 257 ms 233 ms

4 enss142.UT.westnet.net (192.31.39.21) 294 ms 288 ms 295 ms

5 t3-2.Denver-cnss97.t3.ans.net (140.222.97.3) 294 ms 286 ms 293 ms6 t3-3.Denver-cnss96.t3.ans.net (140.222.96.4) 293 ms 288 ms 294 ms7 t3-1.St-Louis-cnss80.t3.ans.net (140.222.80.2) 294 ms 318 ms 294 ms8 * t3-1.Chicago-cnss24.t3.ans.net (140.222.24.2) 318 ms 295 ms9 t3-2.Cleveland-cnss40.t3.ans.net (140.222.40.3) 319 ms 318 ms 324 ms10 t3-1.New-York-cnss32.t3.ans.net (140.222.32.2) 324 ms 318 ms 324 ms11 t3-1.Washington-DC-cnss56.t3.ans.net (140.222.56.2) 353 ms 348 ms 325 ms12 t3-0.Washington-DC-cnss58.t3.ans.net (140.222.58.1) 348 ms 347 ms 325 ms13 t3-0.enss145.t3.ans.net (140.222.145.1) 353 ms 348 ms 325 ms

14 nsn-FIX-pe.sura.net (192.80.214.253) 353 ms 348 ms 325 ms15 GSI.NSN.NASA.GOV (128.161.252.2) 353 ms 348 ms 354 ms16 NIC.DDN.MIL (192.112.36.5) 354 ms 347 ms 354 ms

Рис.5. traceroute на nic.ddn.mil со свободной маршрутизацией от источника через NSFNET

Page 21: TRACEROUTE

Опция -g программы traceroute позволяет нам указать промежуточныемаршрутизаторы, которые должны быть использованы при свободноймаршрутизации от источника. Эта опция может быть указана до 8 раз.В командной строке мы должны указать IP адрес маршрутизаторавместо его имени. Это происходит потому, что процедураопределяющая соответствие между именем и адресом илинаоборот, когда задается имя, а возвращается IP адрес, не работает.Функции определения адреса по имени и имени по адресу используютдва различных файла в системе DNS (Domain Name System).

Вместо первого RTT для TTL равного 8 мы видим в выводе звездочку(*). Это указывает на то, что был отработан тайм-аут и на первуюпосылку в течении пяти секунд не был получен отклик.

Page 22: TRACEROUTE

Пример traceroute при использовании жесткой маршрутизации от источника

Опция -G в нашей версии traceroute идентична опции -g,описанной ранее, однако она определяет жесткую маршрутизацию отисточника вместо свободной. Посмотрим что произойдет, если указанневерный жесткий маршрут от источника.

sun % traceroute -G netb -G gateway -G gabby westgatetraceroute to westgate (192.80.43.2), 30 hops max, 40 byte packets1 netb (140.252.1.183) 272 ms 257 ms 261 ms2 gateway (140.252.1.4) 263 ms 259 ms 234 ms3 gateway (140.252.1.4) 263 ms !S * 235 ms !S

Рис.6.traceroute с жесткой маршрутизацией от источника, который не работает

Здесь необходимо обратить внимание на выражение !S, следующее заRTT для TTL равного 3. Это означает, что программа tracerouteполучила ICMP сообщение "маршрутизация от источника несработала«(source route failed). Звездочка во втором RTT для TTLравного 3 указывает на то, что на эту посылку не был получен ответ.Это как раз то что мы ожидали, так как для gateway не существуетвозможности послать датаграмму непосредственно к gabby.

Page 23: TRACEROUTE

Причина того, что датаграммы с TTL 2 и 3 пришли именно от gateway,

заключается в том, что TTL с номером 2 отправлялась из gateway,

когда он получил входящую датаграмму с TTL равным 1. Он

определяет, что время жизни (TTL) истекло перед тем, как был

обнаружен жесткий маршрут от источника (кстати, неправильный),

поэтому и было отправлено ICMP сообщение об истечении времени.

Строка с TTL равным 3 получена gateway с входящим TTL равным 2, он

просмотрел жесткий маршрут от источника, определил, что он неверен,

после чего послал ICMP сообщение о том, что маршрутизация от

источника не может быть осуществлена.

Page 24: TRACEROUTE

Литература:

1. Синди Фейт «TCP/IP»

2. Русский перевод с книги Ричарда Стивенсона «TCP/IP Illustrated»

3. Статьи из Интернета

Выполнила: ст-ка гр. СУ-61 Пасека Г.В.