标题：移动IPv6
定义
移动IP技术充分利用了IPv6带来的便利与优势，实现了移动IP，因次被称为移动IPv6技术。
它是IPv6重要的研究和应用方向之一。[1]​
简介
  v4v6[2]
移动终端要在三层网络切换的过程中保持通信畅通就必须保证移动对于通信应用的透明，即通信应用的网络层识别——IP地址保持不变。互联网路由模式是根据网络层目的地址来进行选路，并将数据包发送到该目的地址所在的网络，从而到达该目的地址所代表的节点。网络层移动必须解决对通信应用全程使用不变IP地址的同时，对于路由使用节点当前所在网段可达的IP地址。移动IPv6巧妙地解决了这个问题。[3]
基本工作原理
移动IPv6对于实现通信在网络层移动过程中保持不断的解决方案可以简单地归纳为三点： 
(1)定义了家乡地址，上层通信应用全程使用家乡地址保证了对应用的移动透明；
(2)定义了转交地址，从外地网络获得转交地址，保证了现有路由模式下通信可达；
(3)家乡地址与转交地址的映射，建立了上层应用所使用的网络层标识与网络层路由所使用的目的标识之间的关系。
具体工作流程可简单归纳如下：
当移动节点在家乡网段中时，它与通信节点之间按照传统的路由技术进行通信，不需要移动IPv6的介入。
当移动节点移动到外地链路时，移动节点的家乡地址保持不变，同时获得一个临时的IP地址(即转交地址)。移动节点把家乡地址与转交地址的映射告知家乡代理。通信节点与移动节点通信仍然使用移动节点的家乡地址，数据包仍然发往移动节点的家乡网段；家乡代理截获这些数据包，并根据已获得的映射关系通过隧道方式将其转发给移动节点的转交地址。移动节点则可以直接和通信节点进行通信。这个过程也叫做三角路由过程。
移动节点也会将家乡地址与转交地址的映射关系告知通信节点，当通信节点知道了移动节点的转交地址就可以直接将数据包转发到其转交地址所在的外地网段。这样通信节点与移动节点之间就可以直接进行正常通信。这个通信过程也被称作路由优化后的通信过程。[3]
协议机制
1.返回路由过程返回路由过程使得通信节点可以获得关于移动节点在它声明的主转交地址和家乡地址之间实际可达性的保证。
  返回路由过程[4]
（1）Home test init用于把移动节点的家乡地址和家乡测试初始cookie通知给通信节点，经过家乡代理到达通信节点，源地址是移动节点的家乡地址，目的地址是通信节点的口地址。
（2）Care-of test init用于把移动节点的转交地址和转交初始测试cookie通知给通信节点，源地址是移动节点的转交地址，目的地址是通信节点的口地址。
（3）Home Test是通信节点对Home init消息的响应，源地址是通信节点的IP地址，目的地址是移动节点的家乡地址。
（4）Care-ofTest是通信节点对Care oftest init消息的响应，源地址是通信节点的IP地址，目的地址是移动节点的转交地址。[4]
2.第二类路由头第二类路由头是为移动IPv6协议定义的新的路由报头，也是一个新的IPv6扩展报头。通信节点使用它直接发送分组到移动节点，把移动节点的主转交地址放在IPv6报头的目的地址字段，而把移动节点的家乡地址放在第二类路由头中。当分组到达主转交地址时，移动节点从第二类路由头中提取出家乡地址，作为这个分组的最终目的地址。第二类路由头只能携带一个IPv6地址，所有处理它的节点必须确认该地址是节点自身的家乡地址，并防止该分组被转发出去。[4]
  第二类路由头[4]
3.路由优化机制移动IPv6协议允许通信对端发出的分组直接路由给移动节点，不必通过家乡代理进行转发，解决了在移动IPv4协议中存在的三角路由问题。该机制得以实现的原因是当移动节点发生移动后，向家乡代理发送绑定更新消息的同时也向通信对端发送绑定更新消息，以告知通信对端自己当前的地址，通信对端获知该地址后使用上面提到的第二类路由头来携带新地址，直接向移动节点当前地址发送数据分组，避免三角路由过程，实现路由优化。[4]
消息类型
1.绑定更新请求消息
用于向移动节点请求此移动节点的绑定信息
2.家乡测试初始消息
该消息用于启动返回路径过程，并向其通信节点请求一个家乡Cookie.
3.转交测试初始消息
该消息用于启动返回路径过程，并向其通信节点请求一个转交Cookie.
4.家乡测试消息
是对家乡测试初始消息的响应，由通信节点发送给移动节点。
5.转交测试消息
是对转交测试初始消息的响应，由通信节点发送给移动节点。
6.绑定更新消息
是移动节点用来通知其它节点自己新的转交地址的。
7.绑定应答消息
用来认可一个绑定更新消息的接受。
8.绑定错误消息
由通信节点用于发出关于移动出错的信号。[5]
移动主机切换
从目前的移动主机切换技术上看主要有以下几种类型:
1．硬切换或叫数据包的非转发方式，这个方式是移动主机在切换到新的AP时，停止从旧的AP接受数据，立即从新的AP进行数据收发。这样，在切换期间发往旧的AP的数据包就有可能丢失，特点是切换延迟小，丢包率大；
2．平滑切换或者称为数据包的转发方式，其过程是移动主机切换到新的AP时，新AP立即通告旧AP，然后旧AP把自己缓存的发向该移动主机的数据包转发给新的AP，由新的AP转发给移动主机。同时新AP向通信对端主机发出通告，之后数据按新的路径传送数据。这种方式的特点是丢失率低但切换延迟高。
3．半软切换方式，该方式是主机移动到两个AP小区重叠区域发生切换时，可同时与两个AP通信，直到完全进入新的AP时才停止从旧的AP接受数据，特点是相对前两种方式，丢包率和切换延迟低。另外这种方式主要应用于CDMA系统，对目前的WLAN技术来说理论上也可行，但实现起来困难。[6]
切换流程  移动IPv6的切换过程[7]
1) MN 在外地链路上收到路由器的广播，通过有状态或者无状态自动配置，获得转交地址。为了保证获得的 CoA 正常可用，MN 还需要进行重复地址检测(Duplicate Address Detection: DAD)。
2) MN 向 HA 发送绑定更新消息，在该消息中设置了家乡注册和确定标志。
3) HA 返回一个绑定确认消息
4) 为了保证安全性，MN 必须进行返回路由可达过程测试。如图 2-7 所示，MN 使用隧道经由 HA 将家乡测试初始(HoTI)消息发到 CN；MN 直接发送转交测试初始(CoTI)至 CN；CN 回应家乡测试(HoT)消息响应 HoTI；CN 回应转交测试(CoT)消息响应 CoTI。如果 MN 是由外地链路移动到一条新的外地链路，由于只是与转交地址相关的路径发生了改变，所以在返回路由可达过程中只需要交换 CoTI和 CoT 消息。
5) 返回路由可达过程成功后，MN 向 CN 发送绑定更新
6) CN 向 MN 发送绑定确认。[7]
安全机制
实际的网络中，会存在各种对报文的窃听或者篡改等攻击。如果攻击者截取了绑定报文，并且修改内容中转交地址为攻击者的地址，然后再继续发送给HA或者CN，那么攻击者就会截取到发往移动节点的通信数据。同样对于移动IPv6中目的选项或者路由报头的攻击，也会影响到通信的安全。要保证移动IPv6的通信安全，就必须保证移动IPv6的协议消息的真实性和完整性。 
MN与CN的关系带有任意性，不适合需要预先建立安全关联的方式，因此IPSec在MN与CN之间不适用。为保证MN与CN的之间的安全性，引入了往返可路由过程。
MN与CN之间的移动IPv6协议消息包括：MN发往CN的绑定消息，CN发往MN的绑定确认。往返可路由过程的目的是要确保绑定消息中的家乡地址和转交地址都是真实可达的，都属于移动节点。
MN与HA之间的关系相对固定，便于预先建立安全关联，因此对于MN和HA之间的协议消息使用IPSec进行保护，具体的操作可以参考RFC3776。[3]
1．认证机制移动 IPv6 提供了移动节点与家乡代理之间的认证机制，以防止非法移动节点发起的会话窃取和 DoS 攻击。公开密钥加密和数字签名可以用于提供家乡代理、移动节点之间的信任关系，实现认证。
移动 IPv6 使用的默认认证算法是增强的 MD5 算法，采用前缀加后缀的模式。密钥(通常为 128 位)放在要求认证的数据前面和后面，通过认证算法产生数据的一个 128位哈希值，加在认证扩展的后面，发送给认证方。如果接收方共享发送方的密钥，只需重新计算哈希值，得到的结果与请求认证方发送的数据进行比较，如果匹配则认证成功。为了满足对用户数据流和机密性保护的要求，IPSec 可以用来加密家乡代理和移动节点之间的 IP 分组。
2．时间戳和临时随机数(nonce)IETF 建议两种方法对注册请求进行抵抗重放攻击：时间戳和 nonce。时间戳是强制的而 nonce 是可选的。时间戳重放保护的基本原理是发送方在消息中插入当前时间，接收方检验时间是否足够接近它自己的日期时间，因此要求通信双方的时钟必须保持同步。当使用时间戳时，移动节点发出的注册请求中的标识号必须大于任何前面注册请求中使用的编号；当收到具有认证扩展的注册注册请求时，家乡代理必须检查标识号的有效性。标识号中的时间戳必须足够接近家乡代理的日期时间。
使用 nonce 来实现重放保护的基本原理为：节点 A 在发往节点 B 的每一个消息中包含一个新的随机数，并且检查节点 B 是否在下一个发给 A 的消息中返回相同的数。两个消息都使用认证编码来保护数据不被攻击者篡改。伪随机数是产生 nonce 的一种方法。
3．返回路由可达过程移动 IPv6 中除了使用 IPSec 来完成认证和加密任务之外，还采用了返回路由可达过程(Return Routability Procedure: RRP)来加强对通信对端绑定更新的保护。RRP 分为Home RRP 和 care of RRP。Home RRP 用来判断 CN 是否可以通过 HA 与 MN 的 HoA进行通信，并且产生互相认同的 home cookie；care of RRP 用来判断 CN 是否可以直接与 CN 的 CoA 进行通信，并且产生互相认同的 care of cookie。[7]
移动IPv6的关键过程
移动IPv6的协议中，从三角路由到路由优化的通信过程包含了移动检测，获取转交地址，转交地址注册，隧道转发等机制，往返可路由等信令过程等。 
1.　移动检测
移动检测分为二层移动检测以及三层移动检测。不论二层移动检测采用什么方法，移动IPv6中依靠路由通告来确定是否发生了三层移动。移动节点在家乡网段的时候，在规定的时间间隔内能够周期性收到路由前缀通告；移动节点从家乡网络移动到外地网络的时候，在规定的时间间隔内不会再收到家乡网段的路由通告，移动节点认为发生了网络层移动。
2.　获取转交地址
当移动节点监测到发生了网络切换时，就需要分配当前网段可达的转交地址。获得转交地址的方式可以是任何传统的IPv6地址分配方式，如无状态自动配置方式，或者是有状态分配方式。最简单的方式之一就是无状态自动配置方式，利用所接收到外地网络的路由前缀，与移动节点的接口地址合成转交地址。
3.　转交地址注册
移动节点获得转交地址后需要将转交地址与家乡地址的绑定关系分别通知给家乡代理以及正在与移动节点通信的通信节点，这个过程分别称为家乡代理注册以及通信节点注册。转交地址的注册主要通过绑定更新/确认消息来实现。
4.　隧道转发机制/三角路由
移动节点已经完成家乡代理注册但是还没有向通信节点注册时，通信节点发往移动节点的数据在网络层仍然使用移动节点的家乡地址。家乡代理会截取这些数据包，并根据已知的移动节点转交地址与家乡地址的绑定关系，通过IPv6 in IPv6隧道将数据包转发到移动节点。移动节点可以直接回复给通信节点。这个过程也叫做三角路由。
5.　往返可路由过程
往返可路由过程主要目的在于保证通信节点接收到绑定更新的真实性和可靠性，由两个并发过程组成：家乡测试过程和转交测试过程。
家乡测试过程首先由移动节点发起家乡测试初始化消息，通过隧道经由家乡代理转发给通信节点，以此告知通信节点启动家乡测试所需的工作。通信节点收到家乡测试初始化消息后，会利用家乡地址及两个随机数Kcn与nonce，进行运算生成home keygen token，然后会利用返回给移动节点的家乡测试消息把home keygen token以及nonce索引号告诉移动节点；
转交测试首先是移动节点直接向通信节点发送转交测试初始化消息，通信节点会将消息中携带的转交地址与ken和nonce进行相应运算生成care-of keygen token，然后在返回移动节点的转交测试息中携带care-ofkeygen token以及nonce索引号。
移动节点利用home keygen token和care-ofkeygen token生成绑定管理密钥Kbm，再利用kbm和绑定更新消息进行相应运算生成验证码1，携带在绑定更新消息中。通信节点收到绑定更新消息后利用home keygen token，care-ofkeygen token以及nonce数，与绑定消息进行相应运算，得出验证码2。比较两个验证码，如果相同，通信节点就可以判断绑定消息真实可信，否则，将视为无效。
6.　动态家乡代理地址发现过程
通常家乡网络的前缀和家乡代理的地址是固定的，但是也可能因为故障或其他原因出现重新配置。当家乡网络配置改变时，身在外地的移动节点需要依靠动态家乡代理地址发现过程发现家乡代理的地址。这主要借助于目的地为一个特殊anycast地址的ICMP特别消息。据了解，目前这个过程并没有设备实现，因此也不做过多介绍，进一步了解可以参考RFC3775。[3]
迂回路由机制
移动IPv6使用迂回路由(RR)机制实现移动节点对家乡地址和转交地址所有权的证明。主要包括以下几点：
(1)移动节点通过家乡代理隧道发送HOTI报文到通信节点请求它对自己的家乡地址进行测试。
(2)同时移动节点从转交地址直接发送个CoTI报文到通信节点。
(3)通信节点接收到家乡代理转发的HoTI报文后会产生一个家乡密钥产生令牌Ka=Hkcn(HoA,Nj,0)。
(4)通信节点接收到COTI报文后产生一个转交密钥产生令牌Kc=Hkcn(CoA,Ni,1)。
(5)接收到HoT报文和CoT报文后．移动节点产生一个绑定管理密钥Km=H(Ka,Kc)。任何情况下转交地址都应该被用在CoTI报文的源地址域中。否则当通信节点接收到绑定更新报文后就可能会用错误的转交密
钥产生令牌构建Km[8]。
移动lPv6的QoS
随着移动IPv6标准的制定，对基于移动IPv6的Qos的需求也日益增长。目前国际上对这方面的研究主要集中在以下几个方面：
(1)移动IPv6的Qos支持架构要考虑移动IPv6下，网络中的各个网络节点/网络功能部件的部署以及它们之间的信息交互；
(2)认证授权计费(AAA)主要研究移动IPv6条件下的移动节点的身份验证、访问控制以及相关的计费策略。这中间涉及到的访问控制中也涵盖了部分的Qos控制。
(3)鲁棒性头标压缩(RoHC)主要在于提高网络带宽的利用率上，在某种程度上来说也是包含Oos。
(4)移动切换方面的研究IETF专门为优化切换而成立了seamoby工作组,目前关于快速切换、内容转移等方面的研究也比较活跃。
(5)移动IPv6下的信令研究针对移动IPv6的特色，而提出适用于该环境的QoS控制信令。[9]
移动IPv6对IPv6的协议扩展
1．新的移动报头移动报头是移动IPv6定义的一个新的扩展报头，移动节点、通信节点和家乡代理在创建和管理绑定消息时都会用到。移动IPv6在进行通信时，为了管理其移动性，需要比IPv6交换更多的消息。所有这些消息都是封装在IPv6的扩展报头一移动报头之中进行传送的。移动报头的格式如图2．1所示。
  图2．1移动报头格式[10]
2．新的目的地选项移动IPv6为目的扩展报头扩展了一个新的选项，即家乡地址(HA)选项。其功能是：当移动节点移动到外地网络时，它与通信对端进行通信都是使用当前转交地址，而通信对端所发出的报文也是使用的转交地址，但运行于移动节点和通信对端上层的应用程序使用的足移动节点的家乡地址，因此，必须在移动节点端进行地址翻转才能保证节点的移动对上层应用透明，因此，可以利用家乡地址选项来实现这一过程，在中继过程中使用移动节点的转交地址，在端系统中使用移动节点的家乡地址。同时，家乡地址消息还可以实现对入境过滤的支持。
3．新的Internet控制管理协议消息为了支持家乡代理地址的自动发现和移动配置，移动IPv6也引入了一些新的Internet控制管理协议(Intemet Control Management Protocol，ICMP)消息，包括：
1)ICMP家乡代理地址发现请求消息和ICMP家乡代理地址发现应答消息：用于移动节点动态发现家乡代理的地址。
2)ICMP移动前缀请求消息和ICMP移动前缀应答消息：用于网络的重新编号和移动配置机制。
4．移动选项移动选项位于移动报头的消息数据部分，跟在移动报头的固定部分之后，它的存在与否以及数目都可以通过计算移动报头的长度字段得到。使用移动选项的目的是为了增加灵活性，允许某些消息的必要选项不出现在其他任何消息中。另外，也提供了按需增减移动选项的机制，既控制了移动报头的大小，又方便了以后的扩展。
5．第二类路由头移动IPv6定义的第二类路由头是一个新的路由头类型，也是一个新的IPv6扩展报头。通信对端使用第二类路由头直接发送分组到移动节点，把移动节点的转交地址放在IPv6报头的目的地址字段，而把移动节点的家乡地址放在第二类路由头中。当分组到达转交地址时，移动节点从第二类路由头提取家乡地址，作为这个分组的最终目的地址。[10]
移动IPv6和移动IPv4的比较
1.移动IPv6不需要外地代理的支持
2.移动IPv6支持路由优化
3.移动IPv6路由优化不需要预先指定的安全机制
4.移动IPv6允许路由优化使得路由器兼顾效率和“入口过滤”
5.移动IPv6在移动节点不在本地网络时通过IPv6路由头部而不是隧道来路由
6.移动IPv6不需要使用ARP，这也增加了其健壮性
7.移动IPv6不需要维持隧道软状态
8.移动IPv6的动态本地代理地址发现机制返回单独一个回应。而移动IPv4中采用广播的方法，这时本地网络中的所有本地代理都会分别返回回应。[11]
IETF对移动IPv6的研究
IETF对于移动IPv6的研究主要分为两个工作组：Mobility for IPv6(mipv6)工作组和MIPv6 Signaling and Handoff Optimization(mipshop)工作组。目前，mipv6工作组已经提交了9份RFC，而其他的研究工作还都在草案状态中：mipshop工作组也已经提交了3份RFC。
目前，IETF是IPv6标准制定工作的主体，在近期这种状况不会改变。IETF的IPv6研究热点在于移动IPv6、流标签、寻址、DNS、DNS发现、多连接子网、Multhoming、源地址和目的地址选择、IPv6MIB等领域。但是，鉴于IPv6的重要性和对下一代网络的巨大影响，越来越多的国际标准化组织加入1Pv6标准的制定工作。对于IPv6标准，3GPP和ITU．T也成立了相应的工作组，其中尤其需要关注的是3GPP。从传统意义上来说，互联网和移动通信是两个不同的行业，但随着IP技术的发展，尤其是第三代移动通信全IP解决方案的提出，IPv6成为互联网和移动通信网的公用基本协议。因而，尽管IPv6标准发源于互联网行业，但是从商业意义上来讲，移动通信行业可能是最早和最大的受益方之一。因此，IETF和3GPP联合组成了一个工作组来协调IPv6标准在第三代移动通信系统中的应用。[12]
移动IPv6的一些基本术语
(1)移动节点(M0bile Node，MN)：具备移动功能并且能够从一个网络链路移动到另一个网络链路而仍保持通信的节点;
(2)家乡地址mome Addfess)： 移动节点在本节点从属网络上分配得到的IP地址；
(3)家乡子网前缀：对应于移动节点家乡地址的IP子网前缀；
(4)家乡网络阻omeNetwork)：定义移动节点家乡子网前缀的网络。标准IP路由机制将发往移动节点的家乡地址的数据包发送到移动节点的家乡链路。
(5)外地网络(foreign network):对应于移动节点除了家乡网络以外的网络；
(6)转交地址(Care_of address，coA)：由于移动节点的移动性，要想使通信顺利进行，移动节点还必须绑定另一个IP地址，这就是转交地址。发往移动节点的数据包由这个地址来转交。转交地址可以被认为是移动节点拓扑结构意义上的地址。转交地址的前缀是外地子网前缀。
(7)绑定(binding)：移动节点在外地网络中的家乡地址与转交地址的关联，在每个绑定中还有这个关联所剩余的“生存时间”等字段。
(8)家乡代理(home agent)：移动节点家乡链路上的一个路由器，移动节点向其注册了当前的转交地址。当移动节点不在家乡时，家乡代理截获家乡链路上发往移动节点的数据包，进行封装后。通过隧道发送给移动节点注册的转交地址；
(9)通信对端(Correspondent Node，CN)：与移动节点进行通信的对端节点，该节点既可以是静止的，也可以是移动的。
(10)回返路由过程(Return Routability Procedure)：该过程通过使用密钥标记交换来授权绑定过程：这个过程使通信对端节点可以获得某种程度上的保证：移动节点在它宣称的转交地址以及家乡地址上都是可达的。只有得到这种保证后，通信对端：霄点才能够接受从移动节点来的绑定更新，然后指示通信对端把数据报文转发到移动节点宣称的转交地址。这是通过测试发送到这两个宣称地址的报文能否到达移动节点来完成的。只有移动节点提供了收到了确定的证据后才能够通过这项测试：
(11)绑定管理密钥(Binding Management Key，Kbm)：用于授权绑定缓存管理消息的密钥。回返路由测试提供了创建绑定管理密钥的一种方法；
(12)生成密钥标记(Keygen Token)：由通信对端节点在回返路由测试过程中提供的一个数字，该数字可以使移动节点来计算必要的绑定管理密钥来授权一个绑定更新；[9]