3.9.2. Сообщения типа Response
Сообщение Response может быть получено в следующих случаях.
Ответ на конкретный запрос.
Регулярный update.
Triggered update, вызванный изменением таблицы маршрутизации.
Независимо от того, чем вызван Response, механизм его обработки остается одним и тем же.
Поскольку в результате обработки Response’а существует возможность изменения таблицы маршрутизации, сам Response должен быть тщательно проверен на корректность. Если в качестве UDP-порта назначения пакета используется не RIP-порт, сообщение должно игнорироваться. Проверяется IP-адрес источника: если источник пакета находится не на непосредственно подключенной сети, то такой пакет игнорируется. Кроме того, производится проверка на то, является ли адрес источника одним из собственных адресов маршрутизатора — это возможно, если несколько интерфейсов маршрутизатора подключены к одной broadcast-сети.
После проверки Response на корректность RTE пакета обрабатываются запись за записью. Каждая RTE проверяется на корректность. В случае некорректности какой-либо записи она должна игнорироваться. Сообщение о том, что была получена некорректная запись, должно быть внесено в лог-файл (log file) маршрутизатора. Базовые проверки должны содержать:
Корректность адреса назначения — поле IP-адреса. Адрес должен быть unicast’ным, не быть нулевым или 127-ым.
Корректность метрики. Метрика должна находиться в диапазоне от 1 до 16, включительно.
В том случае, если RTE не прошла какую-либо проверку, она должна игнорироваться, известие об этом должно помещаться в лог-файл.
Итак, все проверки для RTE пройдены. Теперь для дальнейшей обработки необходимо добавить к метрике cost той сети, с которой RTE была получена. Если результат получается больше, чем 16, использовать в качестве результата 16 (infinity). То есть:
metric = MIN (metric + cost, infinity)