10.4. Обработка пакетов
10.4.1. Перехват пакетов для мобильного узла
Когда узел служит мобильному узлу домашним агентом, он должен (MUST) прилагать усилия по перехвату на домашнем линке пакетов, которые адресованы мобильному узлу.
Чтобы это сделать, в начале службы домашним агентом узел должен (MUST) от имени мобильного узла выполнить по домашнему линку групповую рассылку (multicast) сообщения Neighbor Advertisement [12]. Для домашнего адреса, указанного в сообщении Binding Update, домашний агент посылает сообщение Neighbor Advertisement [12] на групповой адрес всех узлов на домашнем линке (all-nodes multicast address), чтобы от имени мобильного узла объявить для этого IP-адреса собственный канальный адрес домашнего агента. Если в сообщении Binding Update был указан флаг Link-Layer Address Compatibility (L), домашний агент должен (MUST) делать то же самое для «локального для линка» адреса мобильного узла.
Все поля в каждом сообщении Neighbor Advertisement должны (SHOULD) быть установлены точно такими же, какими они были бы установлены мобильным узлом, если бы он, находясь дома, посылал это сообщение Neighbor Advertisement [12], со следующими исключениями:
- Целевой адрес (Target Address) в сообщении Neighbor Advertisement должен (MUST) быть установлен равным конкретному IP-адресу мобильного узла.
- Объявление должно включать опцию Target Link-layer Address, определяющую канальный адрес домашнего агента.
- Бит Router (R) в объявлении должен (MUST) быть установлен в ноль.
- Флаг Solicited Flag (S) в объявлении не должен (MUST NOT) быть установленным, поскольку никаким сообщением Neighbor Solicitation оно не было запрошено.
- Флаг Override Flag (O) в объявлении должен (MUST) быть установлен, указывая на то, что это объявление должно (SHOULD) в любом получившим его узле аннулировать любой существующий элемент в кэше соседей (Neighbor Cache).
- Адрес источника (Source Address) в заголовке IPv6 должен (MUST) быть установлен равным IP-адресу домашнего агента на интерфейсе, используемом для посылки объявления.
Любой узел на домашнем линке, который получит одно из (описанных выше) сообщений Neighbor Advertisement, обновит свой кэш соседей так, чтобы связать адрес мобильного узла с канальным адресом домашнего агента, что послужит причиной передачи любых будущих пакетов, в обычном случае предназначенных мобильному узлу, домашнему агенту этого мобильного узла.
Поскольку групповое вещание на локальном линке (например, Ethernet) обычно не дает гарантии надежности, домашний агент для повышения надежности может (MAY) повторно передавать это сообщение Neighbor Advertisement до MAX_NEIGHBOR_ADVERTISEMENT раз (см. [12]). Однако имеется вероятность того, что некоторые узлы на домашнем линке так и не получат ни одного сообщения Neighbor Advertisement. Но эти узлы, в конечном счете, с помощью механизма определения недостижимости соседей (Neighbor Unreachability Detection) [12] будут способны обнаружить изменение канального адреса для адреса мобильного узла.
Когда узел служит некоторому мобильному узлу домашним агентом, для перехвата на домашнем линке индивидуальных пакетов, адресованных мобильному узлу, домашний агент использует протокол IPv6 Neighbor Discovery [12]. Чтобы перехватывать пакеты таким способом, домашний агент должен (MUST) действовать для этого мобильного узла как агент-посредник (proxy) и отвечать на каждое полученное для него сообщение Neighbor Solicitation. Когда домашний агент получает сообщение Neighbor Solicitation, он должен (MUST) проверить, соответствует ли целевой адрес (Target Address), указанный в сообщении, адресу любого мобильного узла, для которого он имеет элемент кэша привязок, помеченный признаком регистрации в домашнем агенте.
Если в кэше привязок домашнего агента такой элемент существует, то домашний агент должен (MUST) ответить на сообщение Neighbor Solicitation сообщением Neighbor Advertisement, передавая собственный канальный адрес домашнего агента вместо канального адреса указанного целевого адреса. Кроме того, бит Router (R) в объявлении должен (MUST) быть установлен в ноль. Таким образом, работа домашнего агента в качестве агента-посредника дает возможность другим узлам на домашнем линке мобильного узла разрешить (определить) адрес мобильного узла, а домашнему агенту — защитить эти адреса на домашнем линке процедурой определения дублированного адреса [12].