11.5.4. Возвращение домой
С помощью используемого алгоритма определения перемещения (разд. 11.5.1) мобильный узел определяет, что он вернулся на свой домашний линк, когда он обнаруживает, что его домашний префикс снова «на линке». Тогда мобильный узел должен (SHOULD) послать своему домашнему агенту сообщение Binding Update, чтобы проинструктировать его больше не перехватывать или не туннелировать для него пакеты. В этой регистрации в домашнем агенте мобильный узел должен (MUST) установить биты Acknowledge (A) и Home Registration (H), установить поле времени жизни в ноль и установить временный адрес для привязки, равным собственному домашнему адресу мобильного узла. В сообщении Binding Update мобильный узел должен (MUST) использовать свой домашний адрес в качестве адреса источника.
Когда мобильный узел посылает своему домашнему агенту это сообщение Binding Update, он должен быть внимательным в том, как он использует запрос Neighbor Solicitation [12] (если таковой необходим) для того, чтобы узнать канальный адрес домашнего агента, поскольку домашний агент в текущий момент времени сконфигурирован для перехвата пакетов на домашний адрес мобильного узла с помощью процедуры определения дублирования адреса (DAD — Duplicate Address Detection). В частности, мобильный узел не может использовать свой домашний адрес в качестве адреса источника в запросе соседей до тех пор, пока домашний агент не прекратит защищать домашний адрес.
Обычно запрос мобильным узлом соседей для выяснения адреса домашнего агента не нужен, поскольку мобильный узел уже узнал канальный адрес домашнего агента из опции Source Link-Layer Address в сообщении Router Advertisement. Однако, если имеется несколько домашних агентов, то может быть еще необходимо послать запрос. В этом специальном случае возвращения мобильного узла домой, мобильный узел должен (MUST) групповым способом (multicast) разослать пакет и дополнительно установить поле Source Address этого сообщения Neighbor Solicitation в значение неспецифицированного адреса (0:0:0:0:0:0:0:0). Целевой адрес сообщения Neighbor Solicitation должен быть (MUST) установлен в значение адреса Solicited-Node multicast address [3]. Домашний агент пошлет обратно мобильному узлу групповое сообщение Neighbor Advertisement с установленным в ноль флагом Solicited flag (S). В любом случае мобильный узел должен (SHOULD) записать информацию из опции Source Link-Layer Address или из объявления, и установить состояние элемента кэша соседей для домашнего агента в состояние REACHABLE.
Затем мобильный узел посылает свое сообщение Binding Update на канальный адрес домашнего агента, инструктируя своего домашнего агента больше не служить ему домашним агентом. При обработке этого сообщения Binding Update домашний агент прекратит защищать домашний адрес мобильного узла процедурой определения дублированного адреса, и не будет больше отвечать на сообщения Neighbor Solicitation с этим домашним адресом мобильного узла. Тогда мобильный узел станет единственным узлом на линке, принимающим пакеты на этот домашний адрес мобильного узла. Кроме того, при возвращении домой до истечения времени текущей привязки для своего домашнего адреса, и конфигурировании своего домашнего адреса на своем сетевом интерфейсе на своем домашнем линке, мобильный узел не должен (MUST) выполнять для своего собственного домашнего адреса процедуру определения дублирования адреса, чтобы избежать путаницы или конфликта с использованием того же самого адреса своим домашним агентом. Это правило применяется также и к производному «локальному для линка» адресу мобильного узла, если бит Link Local Address Compatibility (L) был установлен, когда создавалась привязка. Если мобильный узел возвращается домой после того, как истекли времена привязки для всех его временных адресов, то он должен (SHOULD) выполнять процедуру DAD.
После посылки мобильным узлом сообщения Binding Update, он должен (MUST) подготовиться к ответам на сообщения Neighbor Solicitation для своего домашнего адреса. Эти ответы должны (MUST) посылаться на канальный адрес отправителя, используя индивидуальное сообщение Neighbor Advertisement. Отвечать необходимо, поскольку посылка сообщения Binding Acknowledgement от домашнего агента может потребовать выполнения протокола Neighbor Discovery, и мобильный узел может оказаться не в состоянии различить сообщения Neighbor Solicitation, поступившие от домашнего агента, от других сообщений Neighbor Solicitation. Заметим, что существует условие гонок, при котором как мобильный узел, так и домашний агент отвечают на одни и те же запросы, посланные другими узлами; однако оно будет существовать только временно, до тех пор, пока сообщение Binding Update не будет признано годным.
После приема сообщения Binding Acknowledgement для своего сообщения Binding Update, посланного своему домашнему агенту, мобильный узел должен (MUST) выполнить на домашнем линке групповую рассылку сообщения Neighbor Advertisement (на адрес all-nodes multicast address) [12], чтобы объявить собственный канальный адрес мобильного узла для своего собственного домашнего адреса. В поле Target Address в этом сообщении Neighbor Advertisement должно быть (MUST) установлено значение домашнего адреса мобильного узла, а само объявление должно (MUST) включать опцию Target Link-layer Address, определяющую канальный адрес мобильного узла. Мобильный узел должен (MUST) выполнить групповую рассылку такого сообщения Neighbor Advertisement для каждого из своих домашних адресов, как определялось текущими префиксами на линке, включая его «локальный для линка» адрес и «локальный для сайта» адрес. В этих объявлениях флаг Solicited Flag (S) не должен (MUST NOT) устанавливаться, поскольку никакими сообщениями Neighbor Solicitation они не были запрошены. Флаг Override Flag (O) в этих объявлениях должен (MUST) быть установлен, указывая на то, что объявления должны (SHOULD) аннулировать все существующие элементы кэша соседей в любом принимающем их узле.
Поскольку обычно надежность группового вещания на локальном линке (например, Ethernet) не гарантируется, то для повышения надежности мобильный узел может (MAY) повторно передавать эти сообщения Neighbor Advertisement [12] до MAX_NEIGHBOR_ADVERTISEMENT раз. Существует вероятность, что некоторые узлы на домашнем линке не получат ни одного такого сообщения Neighbor Advertisement, но, в конечном счете, такие узлы могут восстановиться с помощью использования процедуры определения недостижимости соседей [12].
Заметим, что обычно туннель через домашнего агента приостанавливает работу в то же самое время, когда удаляется регистрация в домашнем агенте.