转送地址(英语:Care-of address,缩写为CoA)是移动IP协议中行动装置的暂时IP地址,用于本地代理器将数据包转发至移动节点。该地址解决了移动装置在外地网络无法使用原始IP地址的通信问题,确保数据路由的有效性。
介绍
IP地址的原始设计,是用来识别本机(Host),以及这个装置在全球IP网络中所占的位置。但在行动装置中,行动装置本身的IP地址是用来识别本机之用,但在它接取的网络系统中,它可能不是这个网络系统中的合法IP地址,因此需要转送位址作为辨识位置之用。
地址分配
移动节点可以通过两种不同的方式获取转交地址:
外地代理转交地址(FACoA):移动节点接收与外地代理相同的CoA。外地网络中的所有移动节点都被赋予相同的CoA。
共址转交地址:外部网络中的每个移动节点通常由
DHCP服务器分配其自己的CoA。这可能发生在尚未部署外部代理的网络中。
鉴于即将耗尽的
IPv4地址,第一种解决方案更频繁地被选择,因为在改变网络位置时它不会浪费每个移动节点的公共IP地址,就像并置的CoA那样。
转交地址必须是外地网络中的有效IP地址,因此它允许移动节点接收外部任何主机并与之建立连接。为了发送输出分组,移动节点也可以使用其归属地址,但由于它不是当前网络附件的连接IP地址,因此路由中的一些路由器可能阻止分组到达目的地。
这就是为什么在IPv4中,通过IP隧道将传出信息传输到归属代理(在归属网络中)。从归属网络,可以使用其原始归属地址发送移动节点的分组,而没有任何路由问题。通讯节点将再次将其信息发送到家庭网络。因此,它必须通过隧道发送到外地代理,然后发送到移动节点。
当所有移动节点与外地代理共享相同的IP地址时,这由充当代理ARP的外地代理实现。
移动IP 中的路由优化的改进方案
移动IP 是一种对IP 移动性的支持的协议, 能够使移动主机(MH), 借由家乡代理(HA)和外地代理(FA), 直接向通信主机(CH)发送数据包。然而, 所发送的数据包却不得不经过三个不同的网络:通信主机所在的子网, 家乡代理所在的子网和移动主机当前所在的子网。这样, 就使得发往移动主机的数据包要经过比预期长得多的路径。这些多余的路径在移动IP 中被称为“ 三角路由” 。这个问题可以用路由优化来解决, 它要求所有通信主机保证一个绑定缓存, 通信主机将从家乡代理中得到的移动主机的转交地址(CoA)储存在绑定缓存中, 然后直接与移动主机进行对话。
提出一种将RSVP 整合到路由优化的改进方案, 同时将绑定缓存放在家乡代理上。当移动主机离开家乡代理所管辖的区域, 向外地代理注册并得到一个转交地址后, 它通过外地代理向家乡代理发送一条绑定更新消息, 将自己的家乡地址和现在的转交地址封装在绑定更新里面, 家乡代理收到后就把这两个地址存储到绑定缓存中。一旦某个通信主机希望与该移动主机进行通信, 它会首先发一个Path 消息到移动主机的家乡地址, 家乡代理收到这个消息后, 会把绑定缓存中把家乡地址所对应转交地址用以Path_err消息发回去。通信主机接收后, 得知移动主机的转交地址, 再发送Path 消息给移动主机以及逐跳保留的Resv , 就能够与移动主机建立保证Qos 服务的RSVP 对话。
在这个方案中要求通信主机有处理Path_err 消息的能力。当通信主机收到Path_err这个消息后, 它应该立即Path 消息重新发给转交地址所对应的移动主机。在Path_err 消息中, 转交地址和家乡地址是捆绑在一起的, 家乡地址唯一, 转交地址不唯一。即要靠家乡地址辨认移动主机, 靠转交地址与移动主机通信。
传统方案要求每个主机(包括代理)都要有一个绑定缓存, 改进的方案只保留了代理主机的缓存, 这样降低了通信主机与移动主机对话的门槛, 同时将主要功能集中在代理主机上, 也便于控制和管理。
改进的方案将绑定更新消息和Path 消息一起发送, 这样既可得到移动主机的转交地址同时又与移动主机建立RSVP 通信路径, 一举两得, 提高了效率。这在通信效率低下的无线移动网络, 显得尤为重要。
MIPv4 配置转交地址的研究与实现
协议原理
当移动节点在家乡网络时与固定的IPv4 网络通信相同, 不再详细介绍。当移动节点发生切换时( 目前切换通过手动修改AP 的ESSID 来实现) , 通过信号触发机制调用子进程来启动DHCP 协议, 完成标准的四条消息交互来获得转交地址。开始时移动节点向同一网络内的所有服务器广播DHCPDiscover 消息( 假如没有服务器, 则可以通过中继代理将消息包转发出去) 。任何DHCP 服务器收到Discover 消息都能构造一个DHCP Offer 消息去响应请求。当MN 收到该消息后, 选择其中一个DHCP服务器来请求地址( 假如一个网络内存在多个服务器) , 向局域网内广播DHCP Request 消息包, 只有被选中的服务器能对收到的消息包进行处理, 该服务器更新地址池, 选择一个合法和唯一的地址添加到DHCP Acknowledge 消息中。当移动节点收到该消息后获得地址并将其作为配置转交地址。在发送绑定注册之前MN 需要知道当地路由器的链路层地址, 以便包的转发。本文中将DHCP 服务器放置在当地网络的
接入路由器上, 这样可以通过DHCP Acknowledge 消息的源地址知道接入路由器的链路层地址, 避免了发送地址解析协议(ARP) 请求。
移动节点必定可以决定它是否从一条没有代理的链路移动到了另一条链路上, 它可以通过两种方法来推断。第一种方法, 在它已打开的TCP 连接上检查最近有没有转发进行。如果没有, 移动节点就可以得出结论, 在它上一次注册后它已经移动过了。第二种方法, 移动节点可以将它的网络接口驱动置于接收所有包的模式。在这种模式下, 移动节点可以检查链路上的所有包, 而不只是发给它的包。如果这些包中没有一个网络前缀与它的转交地址的网络前缀一样, 它就可以推断它已从获得转交地址的那条链路移动到另一条新链路上了。如果这样, 移动节点应得到一个新的转交地址并向它的家乡代理注册。
软件实现
在软件体系的设计上, 在移动IP 的基础上修改和实现DHCP 配置转交地址机制。本文移动IP 采用的dynamics 版本为0.8.1, DHCP 协议采用的版本为3.0.1, 在接入路由器上安装路由协议。
当MN 运行移动IP 后, 调用shell 脚本定期地更新地址信息, 比较无线接口的地址前缀是否发生改变。如果改变则表明移动节点发生了切换, 此时MN 通过信号触发机制启动DHCP 客户端进程, 与所在的网络内的DHCP 服务器进行交互, 生成一个新的地址作为配置转交地址。
移动节点完成切换后向家乡代理注册新的转交地址, 在注册请求中包含该转交地址。当家乡代理收到注册请求后, 将移动节点的家乡地址和转交地址添加到缓存列表中, 建立移动节点到家乡代理的隧道, 实现移动节点直接和家乡代理通信。
函数主要流程,如图1所示:
测试结果
首先, 修改移动IP 的转交地址机制, 在移动节点的配置文件中设置配置转交地址机制标志为真,在家乡代理上安装dynamics 软件, 在路由器1(AR1) 、路由器2(AR2) 上安装DHCP 服务器软件和路由协议。
在移动节点和家乡代理上启动移动IP 程序, 在AR1 和AR2 上启动DHCP 服务器程序和路由协议。通过手动修改ESSID 在家乡与AR1 和AR2 之间的切换。
实验完成了从家乡到AR1 和AR2 之间切换的过程, 切换的过程中能保持移动节点与家乡的通信不被中断, 较好地实现了移动IP 的配置转交地址机制。