Я очень озадачен и сбит с толку определением количества переходов, особенно в отношении метрики RIP. Должно ли количество переходов отражать количество ссылок или количество маршрутизаторов? Вот две возможности:
Заявление А:
. количество переходов = количество пересеченных маршрутизаторов
. количество переходов к хосту в той же подсети = 0
. Показатель RIPv1 = количество переходов + 1 (при условии, что стоимость сети = 1)
Заявление B:
. количество переходов = количество пересеченных маршрутизаторов + 1
. количество переходов к узлу в той же подсети = 1
. Показатель RIPv1 = количество переходов (при условии, что стоимость сети = 1)
Какое из утверждений верно ?
Вот моя топология сети:
(192.168.2.0/24)--Router2--(192.168.1.0/24)--Router1--(192.168.0.0/24)--InternetGateway--z--
Похоже, существует двусмысленность в отношении количества переходов: количество пересекаемых маршрутизаторов и количество используемых ссылок.
Цитата из Википедии: «В компьютерных сетях прыжок - это часть пути между источником и местом назначения. Пакеты данных проходят через маршрутизаторы и шлюзы по пути. Каждый раз, когда пакеты передаются следующему устройству, происходит скачок. Чтобы узнать, сколько переходов требуется для перехода от одного хоста к другому, можно использовать команды ping или traceroute / tracepath. «
Считается ли конечный получатель «следующим устройством», что подразумевает переход?
Вот локальный traceroute от хоста 192.168.2.30 через два маршрутизатора:
test@ubuntu:~$ sudo traceroute -I 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 60 byte packets
1 192.168.2.1 (192.168.2.1) 0.868 ms 0.831 ms 2.565 ms
2 192.168.1.1 (192.168.1.1) 3.451 ms 3.450 ms 3.438 ms
3 Gateway (192.168.0.1) 5.213 ms 5.219 ms 5.945 ms
test@ubuntu:~$
1,2,3 .. это 3 прыжка? Формат traceroute меня озадачивает.
подробнее, вот моя таблица маршрутизации подсети 2 (включая записи RIP):
test@ubuntu:~$ ip -4 route show
default via 192.168.2.1 dev eth0 proto zebra metric 2
192.168.0.0/24 via 192.168.2.1 dev eth0 proto zebra metric 3
192.168.0.1 via 192.168.2.1 dev eth0 proto zebra metric 3
192.168.1.0/24 via 192.168.2.1 dev eth0 proto zebra metric 2
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.201 metric 1
192.168.3.0/24 dev eth2 proto kernel scope link src 192.168.3.201 metric 1
test@ubuntu:~$
У нас есть показатель 3 для подсети 0 (то есть пересечение двух маршрутизаторов).
С этой стороны у нас изначально есть понятие количества переходов = количество ссылок.
С другой стороны, страница википедии отображает встроенное изображение двух маршрутизаторов с таким комментарием: «Иллюстрация переходов в сети. Число переходов между компьютерами в данном случае равно 2».
Более того, он ссылается на страницу, в которой четко указано, что мы должны подсчитывать переходы по маршрутизаторам, а не по ссылкам:
Здесь у нас явно есть понятие количества переходов = количество пересекаемых маршрутизаторов.
Как правильно подсчитать количество прыжков? Как это связано с метрикой RIP?
источники:
http://en.wikipedia.org/wiki/Hop(networking
http://www.infocellar.com/networks/ip/hop-count.htm
Примечания: соответствующие цитаты в RFC 1058 (RIPv1 RFC):
В простых сетях обычно используется показатель, который просто подсчитывает, через сколько шлюзов должно пройти сообщение.
...
Основное требование состоит в том, чтобы метрику можно было представить как сумму «затрат» для отдельных переходов.
Формально, если возможно перейти от объекта i к объекту j напрямую (т. Е. Без прохождения через другой шлюз между ними), то стоимость d (i, j) связана с переходом между i и j. В нормальном случае, когда все объекты в данной сети считаются одинаковыми, d (i, j) одинаков для всех пунктов назначения в данной сети и представляет собой стоимость использования этой сети.
Чтобы получить метрику полного маршрута, нужно просто сложить стоимость отдельных переходов, составляющих маршрут. В этом документе мы предполагаем, что затраты являются положительными целыми числами.
...
A-----B
\ / \
\ / |
C / all networks have cost 1, except
| / for the direct link from C to D, which
|/ has cost 10
D
|<=== target network
У каждого шлюза будет таблица, показывающая маршрут к каждой сети.
Однако для целей этой иллюстрации мы показываем только маршруты от каждого шлюза к сети, отмеченные внизу диаграммы.
D: directly connected, metric 1
B: route via D, metric 2
C: route via B, metric 3
A: route via B, metric 3
...
Метрика сети - это целое число от 1 до 15 включительно. Он установлен каким-либо образом, не указанным в этом протоколе. В большинстве существующих реализаций всегда используется показатель 1. ...
Предполагается, что каждый хост, реализующий RIP, имеет таблицу маршрутизации. В этой таблице есть одна запись для каждого пункта назначения, доступного через систему, описываемую RIP. Каждая запись содержит как минимум следующую информацию:
- The IP address of the destination.
- A metric, which represents the total cost of getting a
datagram from the host to that destination. This metric is
the sum of the costs associated with the networks that
would be traversed in getting to the destination.
...
Метрика для сети с прямым подключением устанавливается равной стоимости этой сети. В существующих реализациях RIP всегда используется 1 для стоимости. В этом случае метрика RIP сводится к простому подсчету переходов.
Когда вы цитируете википедию, вы должны были заметить эту подсказку:
Чтобы узнать, сколько переходов требуется для перехода от одного хоста к другому, можно использовать команды ping или traceroute / tracepath.
Traceroute обычно отправляет пакеты UDP, TCP или ICMP (важно только то, что используемый протокол инкапсулируется в дейтаграмму IP и что ответ по этому же протоколу может быть доставлен на IP-адрес назначения) с полем TTL в заголовок IP равен 1 и затем увеличивается на единицу после каждой попытки, пока полученный ответ не будет отличаться от пакета ICMP типа 11 с кодом 0 (тип ICMP 11 = Время истекло, код 0 = Срок действия TTL истек при передаче).
Для этого используется эта часть RFC 1812:
Поле времени жизни (TTL) заголовка IP определяется как
таймер, ограничивающий время жизни дейтаграммы. Это 8-битное поле и
единицы - секунды. Каждый маршрутизатор (или другой модуль), обрабатывающий
пакет ДОЛЖЕН уменьшить TTL как минимум на единицу, даже если
время было намного меньше секунды. Поскольку это очень часто бывает,
TTL - это фактически ограничение количества переходов, определяющее, насколько далеко может датаграмма
распространяются через Интернет.[...]
Если TTL уменьшается до нуля (или меньше), пакет ДОЛЖЕН быть
отброшен, и если пункт назначения не является адресом многоадресной рассылки,
маршрутизатор ДОЛЖЕН отправить ICMP сообщение о превышении времени, код 0 (TTL
in Transit) сообщение источнику
Почти все реализации интерпретируют уменьшить TTL как минимум на один так как уменьшить TTL на единицу а измерение прыжков в глобальном масштабе учитывается как количество отправленных вами пакетов маршрутизатора, которые пройдут до тех пор, пока не достигнут пункта назначения.