间接路由选择
无论移动节点跑到哪,通信者都是将数据报先发给归属代理,然后归属代理再去转发给当前移动节点所在的外部代理,最终外部代理转发至移动节点。
也就是说,所谓的"间接"体现在始终有一个归属代理去负责转发数据报。这么做存在个问题,如果通信者和移动节点实际上很近,但是通信者又与归属代理非常远,那么把数据报先扔给归属代理再扔回来就会显得非常低效。
直接路由选择
不管移动结点跑到哪,通信者都是直接将数据报直接发送给当前移动节点所在的外部代理。此时需要单独去设置一个通信者代理,该代理负责记录移动节点当前所在的位置,而这个位置依然是要通过询问归属代理才能得到。只不过,相比于间接路由选择每次都要找归属代理不同,直接路由选择实际上只需要找一次归属代理。
只找一次归属代理的话,如果此时移动节点切换了外部代理怎么办呢?也就是说通信者代理第一次从归属代理拿到的那个外部代理位置失效了。这时候就涉及到一个锚外部代理的概念。锚外部代理指的是通信者代理第一次从归属代理拿到的那个外部代理。也就是说,在移动节点切换外部代理后,将锚外部代理会记录新的外部代理的位置,那么此时通信者代理仍只需要找到锚外部代理,然后由锚外部代理去联系新的外部代理即可。如果外部代理反复变化,那么依然只需要更新锚外部代理中的记录即可。
这么做的一个假设是从物理层面来说一个移动节点一下子不可能跑那么远,不然锚外部代理实际上也就可以认为退化为了归属代理。一般来说,新旧外部代理是会比较近的,所以由锚外部代理转发并不会消耗太多的时间。
总结