摘要
- RFC 5142 定义 Mobility Header 类型 12,让获授权的归属代理要求移动节点停止使用当前代理并取得新代理。
- 何时切换、选择哪些节点不由协议决定;维护、减载和功能分流只是可能的本地触发原因。
- 切换消息可以携带按偏好排序的替代 IPv6 地址,也可以用空列表要求节点启动归属代理发现。
- IPsec 能证明受保护消息的来源与完整性,不能证明目的代理有容量或已经接纳节点。
- 当前归属代理发起切换时,移动节点删除旧绑定的 Binding Update 充当确认。
- 这份确认说明旧控制关系正在结束,并不说明新服务关系已经建立。
- 发现、地址连续性、安全关联、新绑定、隧道、数据包和应用结果都需要各自的回执。
- 如果未收到响应,旧代理不应猜测移动节点的状态,应服务到原绑定寿命结束。
- 发送节奏必须由新代理资源反馈约束,或显著低于其接纳能力;默认上限为每秒一条。
- 跨归属前缀可能改变 Home Address,即使新注册成功,也可能使已有连接中断。
- 新 Binding Update 被接受仍只是控制平面事实,不能代替路径与端到端观测。
- 管理者应把切换设计成分阶段证据链,在可能时保留旧路径,直到替代服务得到验证。
空列表不是失败,而是一条边界声明
归属代理切换消息可以列出多个候选地址,也可以把地址数量设为零。后者并不表示协议出错,而是把下一项决定明确交还给移动节点:去执行归属代理发现。
这条路径很适合检验系统是否诚实。发送方只知道当前关系应当改变,却未必掌握移动节点所在位置可达、获授权并有容量的目的代理。与其把一个过时或武断的地址写成答案,协议允许它只传递最小指令。共同格式到此为止,目的选择仍是本地、可替换的决策。
问题在于,运维界面往往把“切换消息已确认”放在流程末尾。实际上,空列表之后才开始发现;有列表时也只是缩小搜索空间。地址存在于消息中,不等于容量为该节点预留,更不等于安全凭证、Home Address 和数据路径已经准备完毕。
消息能够表达什么
RFC 5142 为 Home Agent Switch 分配 Mobility Header 类型 12。归属代理借此通知移动节点停止使用当前归属代理并取得另一个。标准列举维护、负载均衡、按功能分流和重新编号等情景,但不规定触发算法。后台系统为何认定需要移动、应该移动哪些节点,留给部署者。
消息中的替代归属代理 IPv6 地址按照 Mobile IPv6 的 Home Agent Preference 排列;偏好相同的地址随机排序。第一个候选无法服务时,节点再试后续候选。Binding Refresh Advice 还可以给出旧绑定被删除前的剩余时间,计量单位为四秒。
这些字段改善了协调,却没有创造原子事务。候选顺序不是接纳承诺,剩余时间不是完成保证。系统需要保留消息字节、候选列表、偏好、发送时间、建议期限和每次尝试的结果,才能知道一条失败链究竟停在哪里。
IPsec 保护的是指令
切换消息使用归属代理与移动节点之间的 IPsec 安全关联。ESP 完整性保护是必要条件;如果候选列表需要保密,还可以使用机密性保护。发送者不一定是当前归属代理,只要拥有合适的安全关联;非当前代理通常会建议节点切换到自己。
有效的保护可以回答:谁在既定安全关系下发送了这些字节,内容是否被篡改,是否出现受保护流量的重放。它不能回答:目的代理此刻是否过载,是否允许该节点注册,IKE/IPsec 启动能否完成,路由是否已经安装,应用会话是否幸存。
因此,authenticated 不能成为切换成功字段。发送权、触发依据、目的端接纳和结果验证属于不同责任主体。密码学回执使下一步更可信,但不会替下一步发生。
同一种“确认”,指向两种状态变化
如果当前归属代理发出切换,移动节点验证消息后停止使用它,并发送一条删除旧绑定的 Binding Update。RFC 5142 规定,这条更新充当切换消息的确认。发送方据此停止常规重传。
如果消息来自尚非当前代理的发送方,移动节点向它发送、用于创建新归属绑定的 Binding Update 则充当确认。前一种回执描述旧端退出,后一种描述新端进入尝试。把两者统计成同一个“成功切换”,会抹掉最重要的差别。
旧绑定删除时,新候选可能尚未发现。新绑定请求可能被拒绝。Binding Acknowledgement 即使接受请求,也只证明控制状态被接纳;隧道安装、转发和数据包仍在后面。一个可审计状态机至少应区分:指令验证、旧绑定删除、候选选定、安全关联建立、新绑定请求、新绑定接受、隧道生效、首个数据包、应用连续。
状态名越具体,越不容易让一个早期回执冒充最终结果。
超时不能替系统做推理
归属代理会重传切换消息,直至收到相应的 Binding Update。初始间隔为五秒,指数退避,最高二十秒;之后还可以用更慢的频率无限期继续。
标准对最大超时后的行为给出了重要约束:只要旧绑定还在,归属代理就不应推断移动节点的状态,而应继续服务到绑定寿命结束。没有响应可能来自消息丢失、返回路径丢失、节点离线、发现失败、安全启动延迟、候选拒绝或节点尚未行动。观测相同,原因不同。
把静默自动改写成“已经离开”会主动移除唯一得到证明的路径。随后旧绑定自然到期,也不能反过来证明新路径曾经存在。到期只是一份旧租约结束,不是迁移完成证书。
切换的中段不能被省略
Mobile IPv6 的启动资料把需要取得的东西分得很清楚:归属代理地址、Home Address,以及注册所需的授权信息和 IPsec 安全关联。RFC 5026 组织这组问题,RFC 6610 与 RFC 6611 提供发现或配置机制,RFC 4640 则说明为什么启动本身是一个组合过程。
因此,一次可证明的切换至少经过以下事实层:旧代理基于本地资源作出触发;受保护消息到达并通过验证;节点按列表选择或自行发现;目的代理确认授权与容量;双方完成新的安全启动;Binding Update 获得可接受的 Binding Acknowledgement;隧道与路由安装;新路径出现数据包;应用或用户结果得到验证。
每一层都可以建立在前一层之上,却不能由前一层代替。运行中的代码和实际数据包约束控制消息的象征意义。
地址连续性尤其需要单独记账。不同归属前缀可能要求更换 Home Address,已有连接因而失效。RFC 5142 建议在需要换地址时避免使用该机制,并在负载均衡时优先使用共享前缀的代理。新注册完全合规,与旧会话连续,可能同时一真一假。
离开的速度要由到达能力决定
旧代理生成控制消息的成本,远低于新代理完成密码学处理、绑定接纳和隧道建立的成本。如果按发送能力推动批量切换,减载机制本身会制造新的拥塞。
RFC 5142 因此要求将新归属代理的资源反馈用于控制后续消息,或者把最大切换速率设置得远低于新注册接纳能力。默认最大值是每秒一条。这不是鼓励跑满的目标,而是缺少更精确信号时的保守边界。
真正有用的反馈应包括 IKE 队列、Binding Acknowledgement 拒绝、隧道建立时间、候选回退和首包时延。目的端压力上升时,旧端必须能暂停。即使目的代理健康,新路径的时延、丢包或乱序也可能损害传输层,所以“有包”之后还要观察“业务是否仍然成立”。
来源
- RFC 5142 HTML 版
- RFC 5142 文本版
- RFC Editor 记录
- IETF Datatracker 页面
- 文档历史
- RFC 5142 勘误检索
- IANA Mobility Parameters
- RFC 3775:IPv6 移动性支持
- RFC 6275:IPv6 移动性支持
- RFC 4301:IP 安全体系结构
- RFC 4303:封装安全载荷
- RFC 4877:结合 IKEv2 与 IPsec 的 Mobile IPv6
- RFC 5026:Mobile IPv6 启动
- RFC 6611:集成场景下的 Mobile IPv6 启动
- RFC 6610:发现归属网络信息的 DHCP 选项
- RFC 4640:Mobile IPv6 启动问题说明
- RFC 4192:IPv6 网络重新编号
- 最小初始规范、本地化未来决策与自愿采用
- 现实层、象征权力与清晰为何显得敌对
- 运行代码优先
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
