移动互联网技术(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-31 11:52:27

点击下载

作者:张宏科,苏伟

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

移动互联网技术

移动互联网技术试读:

前言

随着科学技术的发展,信息技术已成为推动社会向前发展的巨大动力。在21世纪,信息领域的竞争将是世界经济竞争的焦点之一,而信息领域的竞争将取决于信息网络技术的掌握和信息网络的建设及应用水平。传统电信网经历了从有线传输到无线传输,再到现在的无线/移动传输这样一个过程。不难想象,互联网也必然经历这样一个过程,即从固定/有线互联网到无线互联网,再到移动互联网。可以预见,移动互联网技术作为未来信息网络的主要技术之一,将发挥越来越重要的作用。掌握移动互联网关键技术对研究、开发新一代信息网络具有十分重要的意义。

为了推动国内信息网络技术的发展,满足广大从事信息网络领域科研与教学工作的师生和研究人员的需要,我们在多年研究与实践的基础上编著了本书。这本书对移动互联网的关键技术——移动IPv4、移动IPv6、移动子网、移动互联网安全和多播以及切换管理等的工作机理、设计思路及实现方案作了全面系统的讲解。

本书的主要内容如下。第1章介绍了移动互联网的基本概念、发展历程等,使读者对移动互联网有一个基本的了解;第2章主要介绍移动IPv4相关技术及实现,包括移动IPv4技术概述、移动IPv4技术的工作原理、移动IPv4的设计与实现方案等;第3章主要介绍移动IPv6技术,包括移动IPv6技术概述、移动IPv6的详细工作过程、移动IPv6的设计与实现方案等;第4章主要讲述移动子网技术,包括移动子网技术概述、移动子网的工作原理、移动子网的设计与实现方案等;第5章主要介绍移动互联网安全技术,包括移动互联网安全技术概述、用于保护移动用户通信数据安全的IPSec协议、移动用户身份认证的AAA技术、移动IPv6安全认证系统的设计与实现方案等;第6章系统地总结了移动互联网中的多播技术,包括移动多播概述、当前各种移动多播技术解决方案、基于MLD代理的移动多播实现等;第7章主要讲述移动互联网中的切换管理机制,包括FMIPv4、HMIPv4、FMIPv6、HMIPv6等;第8章则对移动互联网面临的问题和挑战以及发展趋势等作了介绍。

本书在编写的过程中,得到了国家“863”重大项目“高性能IPv6路由器协议栈软件”、国家自然科学基金重点项目“未来互联网体系理论及关键技术研究”、国家自然科学基金项目“动态变化网络路由协议理论及关键技术”、“移动互联网络理论与关键技术”等课题的资助。在编写移动IPv4、移动IPv6以及移动子网等技术的设计与实现方案时,参考了这些项目的大量技术资料,这些资料都是项目组老师与同学多年辛勤劳动的结晶。刘琪博士为本书提出了很多建设性的意见。关建峰博士、陈豪硕士、郝永亮硕士等也为本书做了很多工作,在此谨向他们表示衷心的感谢。张宏科教授负责本书的统筹规划,并编写了第1、2、6、8章;苏伟博士编写了第3、4、5、7章。

由于信息网络和通信技术发展极为迅速,移动互联网技术仍在发展与完善之中,加之时间仓促,且作者水平有限,书中难免有不妥之处,敬请广大读者指正。作者2010年1月于北京交通大学第1章绪论互联网的发展趋势是从固定、有线互联网,到无线互联网,再到移动互联网。对移动互联网的研究是当前的一个热点和重点。本章主要介绍移动互联网的基本概念和发展历史。1.1移动互联网的基本概念

传统电信网的发展,经历了从有线传输到无线传输,再到现在的无线/移动传输这样一个过程。不难看出,互联网的发展也将经历以下3个阶段。第1阶段,固定/有线互联网络,互联网主要依靠“固定”、“有线”的方式进行互联互通;第2阶段,无线互联网,随着无线及宽带技术的发展,人们越来越多地借助移动终端,通过无线链路来接入或构建互联网;第3阶段,移动互联网,即以“固定”连接为基础,以“移动”特征为主导的互联网,简称移动互联网。这一阶段根据移动性的不同需求、范围和形式,由简单至复杂,依次包括:①终端或单机移动,通常指终端或单机在一个相对“固定”的互联网中移动;②子网移动,将某个属性范围内的终端有机组合起来,以一个相对稳定的子网在互联网上运动地获取和传输信息;③互联网中各种实体如终端、子网、网络节点混合移动的互联网高级阶段。整个互联网的发展趋势如图1-1所示。图1-1 互联网的发展趋势

移动互联网的总体目标:无论移动终端还是移动子网,都可以在任意地方以任意方式接入到互联网,同时保持通信的不间断。实现这一总体目标需要考虑的问题主要有:①如何保证移动终端和移动子网保持连续的通信;②终端和子网移动性对诸多方面的影响,如路由协议的变化、路由最佳化、快速切换、安全等。

根据上述移动互联网的设计目标,移动互联网的体系结构可以分为两个层面。一个是宏观层面,另一个是微观层面,分别如图1-2和图1-3所示。图1-2 宏观层面的移动互联网体系结构图1-3 微观层面的移动互联网体系结构

由图1-2可以看出,从宏观角度看,移动互联网中的运动主体,即移动终端和移动子网连接到接入网上,通过接入网再连接到核心网,可以认为它们是接入网的外延。核心网负责维护互联网主干网络的拓扑结构和路由信息,为接入网的各种数据提供统一的交换路由;接入网主要是为异质异构的移动终端和移动子网提供统一的接入服务,并对核心网屏蔽这些移动终端和移动子网的介质特征;移动终端和移动子网则是移动互联网中的运动主体。由于移动互联网的研究重点是移动终端和移动子网的运动行为模式、路由协议、管理机制等,因此本书所探讨的移动互联网路由理论与关键技术,也主要是集中在外面两层,对核心网基本上没有什么影响。

图1-3表示了移动互联网的微观体系结构。该图描述了移动子网和移动终端离开家乡网络后的情形。可以看出,移动互联网中的功能实体除移动终端和移动子网外,还包括移动子网中的移动路由器、移动终端和移动子网各自的家乡代理、外地链路的接入路由器等。这些功能实体的具体定义将在后面章节中给出。从图1-3还可以看出移动终端可以选择多种接入模式,如直接连接到互联网,或者通过移动子网间接接入到互联网等。1.2移动互联网的发展历史

迄今为止,移动互联网基本经历了以下3个发展阶段,如图1-4所示。图1-4 移动互联网路由交换技术发展过程

第1阶段(1991~1996年),主要研究移动IPv4(Mobile IPv4, MIPv4)。1991年由美国哥伦比亚大学的John loannidis等人提出Columbia Mobile IP,采用了虚拟移动子网和IP in IP隧道封包的方法,系统较为复杂;Sony公司的Fumio Terqoka等人设计的移动节点协议,即虚拟IP(Virtual IP, VIP),使用特殊的路由器来记忆移动节点。1992年IBM的C. Perkins和Y. Rekhter利用现有IP协议的松散源路径也设计了一种移动节点协议。1994年A. Myles和C. Perkins综合了上述3种移动节点协议的主要特色和各自优点,设计出一种新的协议—MIPv4。后来还出现了针对微移动的HAWAII和Celular IP。

第2阶段(1996~2004年),移动IPv6(Mobile IPv6, MIPv6)得到迅猛发展。由于MIPv4中存在三角路由、入口过滤等问题,1996年IETF公布了第一个MIPv6草案,旨在解决上述问题。到2004年年初,IPv6主机移动协议草案已经发展到了第24号版本,并于2004年6月发布为RFC 3775,成为第一个框架性的MIPv6标准。MIPv6利用了IPv6自动配置优化的报头和扩展选项,降低了网络开销,提高了工作性能。IETF于2003年针对互联网移动路由的研究趋势专门设立了4个工作组负责相关的理论研究和协议标准化工作,分别是MIPv4工作组、MIPv6工作组、MIPSHOP(移动 IPv6信令与切换优化)工作组和 NEMO(Network Mobility)工作组。目前,研究人员对 MIPv6的切换、性能分析与优化、管理、信令开销等进行了深入的研究。

第3阶段(2004年至今),主要提出了子网移动的框架,并着力对MIP进行性能优化。信息网络技术的快速发展,尤其是一些新兴网络技术的出现,使人们对信息的需求在内容和获取方式上都发生了变化。2005年1月,NEMO 工作组提出了 RFC 3963。该标准实质上是MIPv6的扩展,描述了子网接入互联网的基本支持协议。NEMO基本支持协议中,存在路由器的多层嵌套、路由优化和多家乡的问题,因此需要创建新的路由交换理论,提出新的路由优化算法,从而提高互联网的性能。2009年,IETF又成立了IPv6移动性扩展工作组(MEXT)、多播移动性扩展工作组(Multimob)和基于网络的移动性扩展工作组(NETEXT),进一步推动了移动互联网的研究工作。

随着移动互联网的概念逐渐形成,移动环境下的路由交换成了研究核心。现有“固定”网络路由器在设计时没有考虑终端移动、网络移动的需求,因而不适用于移动互联网。此外,现有网络机理及协议标准也无法满足移动互联网的需要。因此,迫切需要从体系结构、协议理论创造性地设计并实现新型的适用于移动互联网络的关键设备。2004年8月,北京交通大学率先研制成功国际首台 IPv6无线/移动路由器,并通过了科技成果鉴定,在移动互联网研究领域迈出了可喜的一步。2005年1月,北京交通大学受国家自然科学基金资助,开展了“动态变化网络路由协议理论及关键技术”研究,在协议理论与关键技术层面为未来互联网的研究奠定了基础。第2章移动IPv4技术如第1章所述,移动互联网中的运动主体包括移动节点和移动子网。对移动节点来说,根据其所支撑基本IP协议版本的不同,可以将移动节点的移动性支持协议分为两大类:移动IPv4和移动IPv6。前者用于IPv4协议体系,后者则用于IPv6协议体系。本章主要介绍移动IPv4相关技术及实现,其中2.1节对移动IPv4技术作一个概要的描述,2.2节介绍移动IPv4技术的工作原理,2.3节则着重描述移动IPv4的设计与实现方案。2.1移动IPv4技术概述

我们知道,互联网的可扩展性依赖于网络前缀路由,而不是特定的主机路由,这就要求连接在同一链路上的节点的 IP 地址具有相同的网络前缀部分。当节点从一条链路切换到另一条链路上时,IP地址的网络前缀部分就不再与新链路的网络前缀相同了。这样,网络前缀路由技术就没有办法将数据包发送到节点的新位置上。

为了解决这个问题,可采用特定主机路由和改变节点的IP地址等方法,但这些方法有很大的局限性,不适于在全球互联网上提供节点的移动功能。特定主机路由技术存在较差的可扩展性、可靠性和严重的安全隐患;而节点在移动时改变IP地址,又使得链路切换时无法保持当前通信。

事实上,在节点发一个数据包给目的地时,不关心也不知道目的主机在何地,它只需要把数据包送到合适的接收者那里,这就是网络层的功能。网络层负责为数据包动态地选择一条从源到目的节点的路径。而移动IP技术就是在互联网中满足移动功能的网络层方案。它通过引入家乡代理等功能实体和转交地址等概念(这些概念的具体描述见2.2节),在网络层实现如下功能:移动节点位置变化时,不必改变其原有地址,也不必采用特定主机路由,仍然能够保持和其他节点之间的连续通信。

移动IP作为网络层协议,它与运行在什么子网(媒介)上无关,因此采用移动IP的移动节点可以从一种媒介移动到另一种媒介上,而不会丢失现在的连接。例如,移动IP可以让便携式计算机从有线的以太网切换到无线的局域网接口上,而不中断网络服务。我们将这种在不同子网(媒介)之间移动,又仍然保持正常通信的功能称为移动节点的异质移动功能。移动 IP 也允许移动节点从一条链路移动到另一条相同媒介的链路上,当然是在不同的位置上,同时保持它的所有连接。提供同种媒介的网络间移动功能的技术称为同质移动功能。

根据移动节点的需求,移动IP应当满足以下几点要求。

① 移动节点应能与不具备移动IP功能的计算机通信。

② 无论移动节点连接到哪个数据链路层接入点,它应仍能用原来的IP地址进行通信。

③ 移动节点在改变数据链路层的接入点后,仍能与互联网上的其他节点通信。

④ 移动节点应该具有较好的安全功能。

移动IP技术在IPv4协议体系中的具体协议就是移动IPv4。早在1992年,IETF就成立了移动 IP 工作组,致力于解决单个节点的移动性支持问题,提出了一系列草案,并在1996年公布了移动IPv4的第一个标准RFC 2002,该标准后来又被不断地修订,最终在2002年形成移动IPv4的最新标准RFC 3344。此外,IETF还制订了一系列用于支撑移动IPv4协议的标准,如定义移动IPv4中隧道封装技术的RFC 2003、RFC 2004、RFC 1701等。

下面介绍移动IPv4的工作原理。2.2移动IPv4的工作原理2.2.1 移动IPv4的基本概念

在阐述移动IPv4的工作原理之前,首先介绍有关移动IPv4的概念。(1)移动节点

移动节点是指接入互联网后,当从一条链路切换到另一条链路时,仍然保持所有正在进行的通信,并且只使用它的家乡地址的那些节点。(2)家乡地址

移动节点的家乡地址是指“永久”地分配给该节点的地址,就像分配给固定的路由器或主机的地址一样。当移动节点切换链路时,家乡地址并不改变。改变移动节点家乡地址的原因和场合与改变固定主机或路由器地址的原因与场合一致,即当整个网络需重新编址时。家乡地址与它的家乡代理、家乡链路密切相关,特别是移动节点家乡地址的网络前缀决定了它的家乡链路。(3)家乡链路

移动节点的家乡链路就是与它的家乡地址具有相同网络前缀的链路。一般来说,对移动节点的上层而言,只用家乡地址和别的节点通信,即移动节点发出的所有包的源IP地址都是它的家乡地址,它接收的所有包的目的IP地址也都是它的家乡地址。这就要求移动节点将家乡地址写入DNS中它的“IP地址”域,其他节点在查找移动节点的主机名时就会发现它的家乡地址。

需要指出的是,移动节点的家乡链路并不一定是由物理媒介构成的物理链路,它可以是在移动节点的家乡代理中由软件实现的一条虚拟链路,可以认为家乡代理与这条虚拟的家乡链路有一个虚拟端口,这样移动节点就永远不会连到它的家乡链路上,也就是说,这个移动节点永远“不在家”,但它可以与外地链路有一条物理连接,即它总是“出门在外”。(4)家乡代理(Home Agent, HA)

家乡代理是有一个端口与移动节点家乡链路相连的路由器。一般来说有如下特点。

① 在移动节点切换链路时,家乡代理始终通知移动节点它的当前位置,这个信息由移动节点保存在它的转交地址中。

② 分析送往移动节点的家乡地址的包,并将这些包通过隧道技术传送到移动节点的转交地址上。(5)转交地址

转交地址是指移动节点连接到外地链路上时的相关IP地址,这里我们可通过了解转交地址的特性来理解它的定义。

① 转交地址与移动节点当前所在的外地链路相关。

② 当移动节点改换外地链路时,转交地址也随着改变。

③ 到达转交地址的数据包可以通过现有的互联网路由机制传送,即不需要用移动IP相关的特殊规程来将IP包传送到转交地址上。

④ 转交地址是连接家乡代理和移动节点的隧道出口。

当移动节点与其他节点通信时,转交地址几乎永远不会被作为上层通信的源IP地址或目的 IP 地址。特别是当其他节点查找移动节点的主机名时,DNS 服务器不会返回移动节点的转交地址。通常有两种转交地址:配置转交地址和外地代理转交地址。

① 配置转交地址(Collocated Care-of-Address)是指暂时分配给移动节点的某个端口的IP地址,它的网络前缀必须与移动节点当前所连的外地链路的网络前缀相同。在外地链路上没有外地代理时,移动节点可以采用这种转交地址,一个配置转交地址同时只能被一个移动节点使用。

② 外地代理转交地址(Foreign Agent Care-of-Address)是外地代理的地址,由一个端口连接移动节点所在的外地链路。外地代理转交地址可以是外地代理的任意一个IP地址,只要外地代理至少有一个端口与外地链路相连就可以了。因此,外地代理转交地址的网络前缀并不一定与外地链路的网络前缀相同,多个移动节点可以同时共用一个外地代理转交地址。

转交地址与移动节点所连接的外地链路最多只有一跳之隔。它要么是有一个端口在外地链路上的外地代理的IP地址,要么是暂时分配给移动节点的一个端口地址。当移动节点与外地链路相连时,家乡代理利用此地址向移动节点传送数据包。特殊情况下,转交地址是从家乡代理到移动节点的隧道出口。(6)外地代理(Foreign Agent, FA)

外地代理是在移动节点的外地链路上的路由器,通常有以下特点。

① 帮助移动节点通知自己家乡代理的转交地址。

② 作为连接在外地链路上的移动节点的默认路由器。

③ 有时提供移动节点的转交地址,并为已被家乡代理设置了隧道的移动节点发送拆封后的包。(7)隧道

隧道是一种传送数据包的路径,通常一个数据包被封装在另一个数据包的净荷中进行传送时,所经过的路径称为隧道,如图2-1所示。该图给出了一个家乡代理为把数据包传送给移动节点,将数据包先通过隧道送给外地代理的例子。

图2-2表明了这些实体以及它们之间的关系。

从理论上讲,路由器是实现IP协议的网络设备,它负责转发(不是送给自己的)IP包。主机与路由器相反,主机是发送或接收数据包,但从不转发IP包(包括那些不以自己为源节点,也不以自己为目的节点的包)。从家乡代理和外地代理的定义来看,它们也应该是路由器。可以在一台计算机上实现家乡代理和外地代理,这时看上去更像一台传统意义的主机而不是路由器。例如,我们可以在一台 PC 上实现家乡代理,但当它启动隧道向移动节点转发数据包时,只是由于转发了不是发给自己的数据包这个事实,它就成了一台“路由器”。图2-1 IP隧道示意图图2-2 移动IP实体及相互关系

通常移动节点的拥有者和移动节点的家乡代理的拥有者之间在运行管理上存在非常密切的关系。如向员工提供便携式计算机作为移动节点的单位,也会有一个网络管理员负责这些移动节点的家乡代理的运行维护。因此,移动节点、它的家乡代理以及它的家乡链路都由同一管理实体来运行。而移动节点以及它的家乡代理的所有者则没有必要与外地代理的所有者有任何关系(事实上这种关系一般也不存在)。在企业网(如某公司或学校的网络)中,可能你会认为同一个实体既拥有移动节点和家乡代理,也拥有外地代理,但事实上外地代理可能位于全球互联网内的任意一个教育或公众网中,这样外地代理的拥有者就和移动节点及它的家乡代理的拥有者不同了。

上面我们简单地讨论了移动节点、家乡代理和外地代理等概念,并指出只需要这3个实体就可以实现移动IP协议。此外,还介绍了一些专业名词,在理解移动IP工作机制时需要这些专业名词。我们还阐明了移动节点如何拥有两个地址。一个是家乡地址,即它永久拥有的、与别的节点通信时的地址;另一个是转交地址,在移动节点连接到外地链路上时,家乡代理通过隧道利用这个暂时地址向它传送数据包。2.2.2 移动IPv4的工作过程

移动IPv4的工作过程如图2-3所示。下面结合图2-3简要介绍一下MIPv4的工作流程。图2-3 移动IPv4的体系结构和工作原理

1.家乡(外地)代理发现

移动节点(Mobile Node, MN)首先需要获知家乡(外地)代理的信息,以便向家乡代理注册自己的当前位置信息,以及从外地代理获取转交地址。这一操作是通过家乡(外地)代理广播的代理消息实现的。一般来说,家乡(外地)代理会周期性地广播其代理信息。当然,MN也可以主动发送代理请求,收到该请求的家乡(外地)代理会给一个应答。

2.移动检测

当移动节点从一个链路移动到另一个链路时,需要及时检测位置的变化,并改变其转交地址,这就是移动检测。一般有两种检测的方法。

① 用生存时间域作移动检测。这种方法利用代理通告消息中的生存时间域来告诉MN,每过多长时间它就可以从同一个代理那里收到一个广播。由于广播消息有可能丢失,特别是在较容易出错的无线链路上,因此HA和FA经常更加频繁地发送广播,根据RFC 2002中的建议,间隔时间大约比生存时间域中标示的值要缩短1/2。

如果一个MN注册到一个FA上了,但在生存时间域规定的时间内却没有收到来自那个代理的广播,那么MN就可以认为它已移动到另一链路上了,或那个代理已经坏了。无论怎样,MN 都要向下一个发来代理通告消息的 FA 注册,如果没有收到任何广播,它就发出一个代理请求消息去询问。

② 用网络前缀作移动检测。在某些情况下,MN可以使用前缀—长度扩展来确定新收到的代理通告与节点当前的转交地址是否来自同一个子网。如果前缀不同,MN 可以假设它已经移动到另一个网络。如果MN当前正在使用一个FA转交地址,MN不应该使用这种移动检测方法,除非当前代理和新的代理在它们各自的代理通告中均包括前缀—长度扩展。同样地,如果MN正在使用配置转交地址,它也不应该使用这种移动检测方法,除非新代理在其通告中包括了前缀—长度扩展并且MN知道其当前配置转交地址的网络前缀。

3.获取转交地址

当MN检测到自己移动到一个新链路(网络)后,MN就会从外地代理获得转交地址或者直接获得配置转交地址。

4.向家乡代理注册

MN 获取转交地址后,就会向自己的家乡代理注册,以通告自己的当前位置信息。这一操作的目的是让家乡代理知道MN的当前位置,并将数据转发到MN的当前位置,帮助MN接收发给它的数据。当MN回到自己的家乡链路时,还要取消其在家乡代理上的注册。其基本过程如下。(1)MN发送注册请求信息

MN 根据代理发现过程中得到的报文,生成它的注册请求报文并发送给 HA,等待 HA接收注册应答,如果在规定时间内 HA 没有收到注册应答,MN 就重发注册请求,直到 HA收到应答。(2)FA处理注册请求

MN在没有FA的情况下,直接向HA注册。如果有FA,则可以通过FA注册。FA收到注册请求后,要进行有效性检查。如果检查失败,FA就会向MN发送出错的注册应答报文,拒绝这次注册请求;如果检查通过,FA会将该报文转发给HA。(3)HA处理注册请求

HA收到注册请求后,首先进行有效性检查。如果注册请求无法通过有效性检查,HA会向MN发送出错的注册应答报文,拒绝这次注册请求,此时HA并不改变MN的绑定表项;如果有效性检查无误,HA将根据转交地址、MN的归属地址、生存时间等对MN的绑定表项进行更新,并向MN发送注册应答,告知MN注册成功。(4)FA处理注册应答

FA接收到注册应答后,对报文进行有效性检查。如果报文无效,将产生一个包含适当的Code域的注册应答,并发送给MN;如果报文有效,FA就对来访的MN的列表进行更新,并将应答报文中继给MN。(5)MN处理注册应答

MN收到注册应答后,检查Code域。如果Code域表示的是拒绝,MN就设法修改引起拒绝的错误,并再次尝试注册;如果是注册请求已被接受,MN 就调整其路由表,然后就可以继续先前的通信,并终止对注册请求的重发。

5.数据发送

从通信节点(CN)发往MN的数据包的源地址是CN的IP地址,目的地址是MN的家乡地址。该数据包首先被路由到MN的家乡链路上。发往家乡地址的数据被HA截获,然后通过隧道技术将数据送到MN的转交地址,在隧道末端由FA或者MN自己解封装后,再交给MN的上层应用程序。在相反的方向上,由MN发送的数据包的源地址是MN的家乡地址,目的地址是CN的地址,使用标准的IP路由机制进行转发,数据包直接由FA转交给CN,不需要经过HA。2.2.3 移动IPv4协议的主要弊端

一般来说,对移动节点的移动性管理包括位置管理和切换管理两个方面。移动IPv4协议主要是解决移动节点的位置管理问题,而对于切换管理则基本上没有涉及。这样一来,移动IPv4协议的切换性能就比较差,切换时延大。在移动IPv4协议中,每次MN发生移动后,都需要重新配置转交地址并向HA以及通信对端(CN)进行注册。这就使得MN每次发生切换时都存在较大的时延,对于某些实时性业务不适用。对此,IETF 提出两种切换时延优化方法:快速移动IPv4和层次移动IPv4。

除此之外,移动IPv4协议还存在着三角路由等问题,这些问题最终是由移动IPv6解决了。2.3移动IPv4协议的设计与实现2.3.1 总体设计方案

移动IPv4具有代理发现、注册和数据包选路等功能。移动IPv4协议的主要功能实体包括移动节点(MN)、外地代理(FA)和家乡代理(HA),这3个功能实体的基本模块组成如图2-4所示。图2-4 移动IPv4主要功能实体的框架

这些功能实体之间通信的主要过程如下。(1)代理发现过程

FA的代理广播模块会周期性地发送代理广播,MN如果移动到该区域,则会通过代理发现模块接收到该代理广播。如果没收到代理广播,则 MN 会发送代理请求,FA 的代理广播模块收到该请求会处理并且发送代理广播。(2)注册请求过程

MN的注册模块向HA注册,由FA(如果是层次移动IPv4的情况,则要通过层次外地代理(HFA)。关于层次移动IPv4的细节请参考本书7.2.2节)接收到该注册请求,通过处理注册请求模块判断是转发还是处理该请求。

如果转发,则发往 HA,由 HA 的处理注册模块处理,注册成功则发送注册回复,最后由修改路由及隧道模块完成隧道的建立和连接。

如果处理,说明发生层次切换,HFA的处理注册模块直接处理该请求,发送注册回复,最后由修改路由及隧道模块完成隧道的建立和连接。(3)注册回复过程

如果HA发送注册回复,FA通过处理注册模块接收该注册回复,并且转发给MN,再由修改路由及隧道模块完成隧道的建立和连接。

如果HFA发送注册回复,HFA与HA之间的隧道不发生变化,HFA的修改路由及隧道模块会修改向下的隧道,FA接收到注册回复会由处理注册模块处理并转发给MN,由MN的注册模块处理,最后由修改路由及隧道模块改变MN的路由。

下面2.3.2节、2.3.3节和2.3.4节分别介绍MN、HA和FA的设计方案。2.3.2 移动节点(MN)的设计

MN的模块流程如图2-5所示。图2-5 MN的模块流程图

各模块主要功能如下。(1)初始化模块

对MN的数据进行初始化。(2)代理发现模块

判断MN在家乡还是在外地。(3)find_agent

根据作为形参输入的状态参数,使用二进制倒退算法确定发送时间,发送代理请求,寻找代理。(4)at_home

周期性发送ARP到HA,保持侦听HA发送的代理通告,判断是否移动到外地。(5)handle_timeout

处理各个定时器的到期事件。(6)handle_registration

MN在外地在找到FA之后,发送注册请求,之后将收到从FA转发过来的注册回复,该函数用于处理这个注册回复。(7)handle_api

处理输入的特权命令和非特权命令。(8)dyn_ip_monitor_get

从给定的文件描述符中读取网络链路消息,监控系统的变化。出现错误,返回 -1;不是一个链路消息,返回0;设备发生改变(添加设备或者删除设备),返回1;地址发生改变,返回2;路由度量发生改变,返回3。(9)handle_icmp

处理MN收到的代理通告,包括来自HA和FA的。MN同时保存当前的代理通告以及上一个接收到的代理通告,通过比较两个相邻的代理通告确定MN是否进行切换,包括外地到家乡、家乡到外地和外地代理之间的切换。2.3.3 外地代理(FA)的设计

FA从逻辑上主要包含两个模块:一个init模块,初始化各种参数和变量;一个main_loop模块,它是一个无限循环,根据各种事件触发进行相应操作。流程图如图2-6所示。

其中,init模块包含以下子模块,见图2-7。(1)fa_parse_command_line

解析输入的命令行。(2)load_fa

从配置文件中读取配置参数,利用读取的数值对结构体变量config进行初始化。(3)check_kernel_support

检测当前系统是否支持 ADV_ROUTING、IPIP、NETLINK,只要对其中的任意一个不支持,进程退出,不再运行。这3个功能分别是高级路由、ipip隧道和NETLINK系统调用,在编译内核的时候需要将它们编进内核,或者编译成模块,在运行前加载。(4)init_sockets

初始化套接口。图2-6 FA的模块流程图图2-7 init模块流程图(5)init_data

打开路由功能和代理ARP功能,对隧道、绑定、散列表的动态分配内存初始化,设置具体信号的处理函数关系。(6)init_config_data

初始化FA上用到的各个静态变量。

main_loop模块包含以下子模块,如图2-8所示。图2-8 main_loop模块流程图(1)send_agent_advs

在第一次进入 main_loop 的时候,初始化局部变量之后,立即发送代理通告,之后进入真正的无限循环。(2)fa_register

处理与上一级FA注册过程,发送注册请求到上一级FA。(3)check_bindings

检查绑定是否到期,更新各种计时器,当绑定失效的时候发送相应信息。(4)handle_api

处理经dynfa_tool工具输入的特权命令和非特权命令。(5)handle_reg_msg_packet

处理从每个接口发送过来的端口号为434的UDP数据包。(6)handle_reg_msg

处理从每个接口接收到的使用UDP数据包承载的注册消息。(7)handle_icmp

处理MN发送的代理请求消息,验证代理请求消息合法之后,回复代理通告。2.3.4 家乡代理(HA)的设计

HA从逻辑上主要包含两个模块,一个是init模块,用来初始化各种参数和变量;另一个是main_loop模块,它是一个无限循环,根据各种事件触发进行相应操作。流程图如图2-9所示。

其中,init模块包含以下子模块,如图2-10所示。图2-9 HA的模块流程图图2-10 init模块流程图

init模块的各个子模块是按照箭头指示顺序执行的,具体功能如下。(1)ha_parse_command_line

解析输入的命令行。(2)load_config

从配置文件中读取配置参数,利用读取的数值对结构体变量config进行初始化。(3)set_ha_nai

根据全局结构体变量config_ha_nai的值建立全局变量ha_nai。该函数释放之前分配的堆栈存储,为HA NAI(Network Access Identifier,网络接入标识符)扩展重新分配一个新的空间。(4)check_kernel_support

检测当前操作系统是否支持IPIP、NETLINK,只要对其中的任意一个不支持,进程退出,不再运行。这两个功能分别是ipip隧道和NETLINK系统调用,在编译内核的时候需要将它们编进内核,或者编译成模块,在运行前加载。(5)binding_init

初始化绑定列表,进行动态分配绑定表格的内存。(6)init_interfaces

对每个接口进行初始化,为每个接口建立3个套接口,udp_sock是一个UDP套接口,使用地址族 AF_INET,通过 setsockopt 函数设置 SO_BINDTODEVICE、IP_RECVTTL、IP_PKTINFO、SO_PRIORITY(根据配置文件可选)、IP_RECVERR 的属性,绑定接口地址和434端口;udp_bc_sock是一个UDP套接口,使用地址族AF_INET,通过setsockopt函数设置SO_BINDTODEVICE、IP_RECVTTL、IP_PKTINFO、SO_PRIORITY(根据配置文件可选)、IP_RECVERR的属性,绑定接口的广播地址和434端口;udp_bc_sock2是一个UDP套接口,绑定地址(255.255.255.255)和434端口;icmp_sock是一个UDP套接口,使用协议族PF_PACKET,通过setsockopt函数设置SO_ATTACH_FILTER,添加一个过滤器,只允许代理请求消息进入该套接口。(7)tunnel_init

初始化隧道的配置信息,对隧道的散列表进行初始化。(8)api_open_socket

创建两个UNIX域套接口,用于处理dynha_tool发送过来的API命令,其中一个处理特权命令,另一个处理非特权命令。(9)signal

对控制信号SIGTERM、SIGINT、SIGHUP的操作进行设定。(10)send_agent_advs

进入无限循环之前,发送相应的代理通告。

main_loop模块包含以下子模块,见图2-11。

模块里面的子模块的运行是事件触发的,根据不同的事件调用相应的模块,这点与 init模块不同。图2-11 main_loop模块流程图(1)set_expr_timer

设置下一个到期的定时器。(2)check_bindings

检查绑定是否到期,更新各种计时器,当绑定失效的时候发送相应信息。(3)handle_api

处理经dynha_tool工具输入的特权命令和非特权命令。(4)handle_reg_msg

处理使用UDP数据报承载的各种注册消息。(5)handle_icmp

处理MN发送的代理请求消息,验证代理请求消息合法之后,回复代理通告。(6)send_agent_advs

根据配置文件定义的方式,在指定接口周期性地发送代理通告或者在收到代理请求的时候才发送代理通告。(7)tunnel_check_delayed

检查隧道的生存时间是否到达。(8)check_queued_gratuitous_arp

定时给移动节点发送免费ARP消息。

在HA所有函数中,HA主要的处理函数是handle_reg_msg()。

handle_reg_msg函数的流程图如图2-12所示。图2-12 handle_reg_msg函数的流程图第3章移动IPv6技术第2章介绍的移动IPv4是适用于现有IPv4网络的节点移动性支持协议,本章则主要介绍针对IPv6网络的节点移动性支持协议——移动IPv6。事实上,由于IPv6巨大的地址空间等优势,加上移动IPv6克服了三角路由等缺陷,移动IPv6技术具有广阔的应用前景。本章的3.1节对移动IPv6技术做一个概述,3.2节阐述移动IPv6的详细工作过程,3.3节则重点描述移动IPv6的设计与实现方法。3.1移动IPv6技术概述

IETF对移动IPv6的研究比较早,在1996年就提出了移动IPv6的第一个工作组草案,经过8年的研究和发展,在2004年6月形成了移动IPv6的第一个标准RFC 3775。以后又陆续出现了其他用于补充移动IPv6的标准与草案,如RFC 3776描述了如何使用IPSec来保护移动IPv6中移动节点和家乡代理之间的通信;RFC 4866对移动IPv6中的路由优化做了更进一步的探讨;RFC 4260、RFC 5270和RFC 5271则分别描述了移动IPv6在802.11、802.16和3G网络中的快速切换问题。

从功能的角度看,移动IPv6和移动IPv4类似,也是为节点提供透明的移动服务,只不过是用于IPv6网络环境中。但在具体工作流程上又有很大的区别。与移动IPv4相比,移动IPv6的变化主要有以下3点。

① 移动IPv6不再使用外地代理FA。由于IPv6网络中有足够的地址空间,所以MN只使用配置CoA,即MN可以主动获取CoA,无须动态分配,因此无需FA;而且IPv6邻居发现可用于帮助MN进行移动检测,使MN可以通过接入路由器AR连接到Internet上。

② MN 不仅向自己的家乡代理注册,而且也向与自己进行通信的对端 CN 注册(即在MIPv6中,不仅HA维持MN的位置信息,CN也维持MN的位置信息)。这样通信对端CN发给MN的数据就可以不必经过MN的家乡代理,克服了三角路由问题。为了防止出现恶意欺骗,MN 向 CN 注册自己的位置信息时,CN 必须对之进行安全验证,这一验证过程需要CN分别沿CN→HA→MN和CN→MN(不经过MN的家乡代理)两条路径发送安全鉴别报文,并得到正确的返回报文。

③ 为实现CN和MN之间的直接通信,使用了IPv6扩展首部中的路由头首部和目的地址首部。

除理论研究和标准制订外,国内外对移动IPv6的实现和应用也做了大量的工作,例如,北京交通大学下一代互联网互联设备国家工程实验室早在2004年就研制出了国内外首台IPv6无线/移动路由器。该路由器实现了移动IPv6技术、移动子网技术、无线接口技术等,并于2004年8月通过了教育部组织的科技成果鉴定,于2006年通过国际“IPv6 Ready”认证。该设备的问世为移动IPv6等技术的推广应用奠定了必要的基础。3.2移动IPv6的工作过程3.2.1 移动IPv6中的基本概念

在介绍移动IPv6的工作原理之前,本小节首先描述移动IPv6中的主要术语,这些术语在后面各节中会陆续出现。(1)家乡地址(Home Address)

家乡地址是分配给移动节点的一个永久的单播可路由地址,该地址在移动节点的家乡链路内。标准的IPv6路由机制将去往移动节点家乡地址的数据包投递到家乡链路上。如果移动节点的家乡链路上有多个家乡网络前缀,那么移动节点可以分配多个家乡地址。(2)家乡子网前缀(Home Subnet Prefix)

对应移动节点家乡地址的子网前缀。(3)家乡链路(Home Link)

定义移动节点家乡子网前缀的链路,实际上也就是移动节点归属地。(4)移动节点(Mobile Node)

接入位置可以经常发生改变的节点,该节点可以通过其家乡地址到达。具体到移动IPv6协议,移动节点就是一个运动的IPv6节点。(5)移动(Movement)

移动节点的接入位置发生变化,即移动节点不再连接到原来所在的链路,而是移动并连接到的一个新的链路,这种情况也称为“离开家乡”。(6)通信节点(Correspondent Node)

和移动节点进行通信的对等节点。通信节点可以是移动的,也可以是固定的。(7)外地子网前缀(Foreign Subnet Prefix)

任何一个不同于移动节点家乡子网前缀的IPv6子网前缀。(8)外部链路(Foreign Link)

任何一个不同于移动节点家乡链路的链路。(9)转交地址(Care-of Address)

当移动节点访问一个外部链路时,外地链路分配给它的一个全局单播可路由地址。该地址的前缀是一个外地子网前缀。在多绑定地址中(一个移动节点在任意给定的时刻可以有不同的子网前缀),则那个已经在移动节点的家乡代理上注册过的转交地址称为基本转交地址。(10)家乡代理(Home Agent)

家乡代理是一个移动节点家乡链路上的路由器,主要负责移动节点的位置管理。当移动节点离开家乡时,就要向家乡代理注册自己的当前转交地址(实际上也就是当前位置信息)。这样,家乡代理就可以在家乡链路上截取发往移动节点家乡地址的数据包,然后再把数据包以隧道模式发往移动节点的当前转交地址。(11)绑定(Binding)

移动节点的家乡地址与转交地址之间的关联(即映射关系),一般还有这个关联的有效剩余时间。(12)注册(Registration)

注册过程就是移动节点发送一个绑定更新到家乡代理或通信节点,让家乡代理或移动节点建立家乡地址与转交地址之间的关联,即建立绑定。(13)移动消息(Mobility Message)

一个包含移动头的消息。(14)绑定确认(Binding Authorization)

家乡代理或通信节点对移动节点注册信息的确认。(15)返回路由可达过程(Return Routability Procedure)

通信节点收到移动节点注册请求后通过密钥标识交换来对移动节点当前位置信息进行验证的一个过程。(16)Nonce

通信节点内部使用的一个随机数,和返回路由可达过程中创建的密钥标识相关。该随机数应该在通信节点内被秘密地保存。(17)Nonce索引(Nonce Index)

用于指示创建密钥标识值时使用了哪一个Nonce,但不显示Nonce本身。(18)Cookie

一个随机数,用于防止返回路由可达过程中的第三方欺骗。(19)密钥标识(Keygen Token)

返回路由可达过程中由通信节点提供的一个数值,它能够使移动节点计算出必要的绑定管理密钥以认证一个绑定更新。(20)绑定管理密钥(Binding Management Key, KBM)

KBM是一个确认绑定缓存管理消息的密钥(如绑定更新或绑定确认)。返回路由可达过程提供了创建KBM的方法。(21)二层切换(L2 Handover)

移动节点从一个链路层连接变化到另一个链路层连接。例如移动节点从一个AP 到另一个AP的这一过程就是一个二层切换过程。(22)三层切换(L3 Handover)

继二层切换之后,移动节点发现链路上子网前缀的变化,从而转交地址也需要变化。例如,一个无线接入点改变随后引起在第三层转交路由地址的改变。

在介绍完移动IPv6中的主要术语之后,3.2.2节就简单描述移动IPv6的基本工作原理。3.2.2 移动IPv6的基本工作原理

本小节将简要描述移动IPv6的工作过程。使读者对移动IPv6的工作机理有一个基本的认识。

移动IPv6的基本工作原理如图3-1所示。

在图3-1中,当移动节点连接在家乡链路时,它和其他固定节点一样,使用家乡地址和外部进行通信。图3-1 移动IPv6的基本工作原理

当移动节点移动到外部链路时,其注册和通信过程如下。

① 首先移动节点采用 IPv6定义的地址自动配置方法得到外地链路上的转交地址CoA。

② 移动节点将它的CoA向自己的家乡代理注册(即发送绑定更新),家乡代理根据这一注册信息建立移动节点的家乡地址和转交地址的映射关系。这样,当有其他节点给移动节点发送数据,却不知道移动节点位置变化时,数据会到达移动节点的家乡链路。家乡代理就可以把数据截获并转发到移动节点的当前位置。

③ 为了实现路由优化,移动节点还需要向通信节点注册,在通信节点接受移动节点的绑定之前,还需要执行返回路由可达过程(具体描述见3.2.4节),对移动节点当前位置的合法性进行验证。如果验证通过,通信节点就会建立移动节点的家乡地址和当前转交地址之间的映射关系。

④ 注册完成后,移动节点就可以直接和通信节点进行数据的交互,而不必经过家乡代理。这时要使用家乡地址选项扩展首部和类型2路由头扩展首部。当然,移动节点也可以通过家乡代理和通信节点进行通信,但路由效率会有所降低。

⑤ 如果有通信节点主动向移动节点发起通信,这时通信节点可能不知道移动节点的位置变化,还会把数据发送到移动节点的家乡链路。家乡代理截获这些数据并转发到移动节点的新转交地址时,移动节点看到数据是从家乡代理转来的,就会判断出通信节点并不知道自己的位置变化。为实现路由优化,移动节点可以向通信节点注册,以后的通信就不必经过家乡代理了。

以上是移动IPv6的基本工作原理,下面各小节将详细介绍移动IPv6的工作过程,其中3.2.3节将介绍移动IPv6引入的新数据结构,如各种移动头等;3.2.4节描述返回路由可达过程;3.2.5节、3.2.6节和3.2.7节则分别阐述通信节点CN、家乡代理HA和移动节点MN的具体工作过程。3.2.3 移动IPv6中的数据结构

为了支持节点的移动性,移动IPv6在基本IPv6协议的基础上定义了很多新的数据结构,如用来承载移动节点向家乡代理或通信节点注册过程中各种信息的移动头;用于移动节点和通信节点之间传输数据时的家乡地址目的选项和类型2路由头两种扩展首部;此外还对 IPv6中的邻居发现协议ICMPv6做了修改。本小节主要介绍这些移动IPv6所特有的各种数据结构。

1.移动头(Mobile Header, MH)

移动头是由移动节点、通信节点和家乡代理使用的扩展首部,包含在所有与绑定的建立和管理有关的报文中。一般来说,除某些特殊情况外,移动头不能和类型2路由头或者和家乡地址目的选项一起使用。发送移动头时也不能使用绑定更新列表和绑定缓存的信息。也就是说,移动头会绕过对所有数据包都执行的绑定更新列表检查和绑定缓存检查。移动头的格式如图3-2所示。图3-2 移动头格式

下面是各个字段的含义。

载荷协议:8bit,与IPv6扩展首部的“下一个头”域相同,该区域的值可以扩展,目前规定的值为IPPROTO_NONE(十进制的59)。

报头长度:8bit,表示移动头的长度,单位为8字节,但不包含第一个8字节。

移动头类型:8bit,用来标识移动报文的类型,具体类型后面会有详细的描述。如果这个字段的值是一个不可识别的类型值,就会引起错误。

预留字段:8bit,保留为将来使用。发送者将该字段初始化为0,接收者忽略。

校验和:16bit,无符号整数,用于对移动头进行校验。校验和的计算要包含“伪首部”,“伪首部”包括IPv6头,以及移动头后面到具体数据之前的所有字段。校验和是这些字符串和的16位余数。

消息数据:长度可变,应为8字节的整数倍,包含移动头的特定数据。

下面介绍几种常见的移动头类型。(1)绑定刷新请求(Binding Refresh Request, BRR)

BRR用于请求移动节点刷新它的绑定。该报文由通信节点发送,具体发送和处理的原则见3.2.5节和3.2.7节。BRR使用MH类型0,消息数据域格式如图3-3所示。

预留域:值为0,16bit,应该由发送方初始化为0,被接收方忽略。

移动选项:长度可变,但需是8字节的整数倍,包含0个或多个移动选项。移动选项的格式后面会有进一步的描述。接收方必须忽略不能识别的选项。图3-3 BRR消息格式

如果实际上没有包含任何选项,就不需要添加选项,报头长度域值设为0。(2)家乡测试初始(Home Test Init, HoTI)

HoTI用于移动节点初始化返回可达路由过程,并且从通信节点得到家乡密钥标识。HoTI使用MH类型1,格式如图3-4所示。图3-4 HoTI消息格式

预留域:值为0,16bit,应该由发送方初始化为0,被接收方忽略。

家乡初始化Cookie:64bit域,包含一个随机值。

移动选项:长度可变,但需是8字节的整数倍,包含0个或多个移动选项。接收方必须忽略不能识别的选项。

如果实际上没有包含任何选项,就不需要添加选项,报头长度域值设为1。

当移动节点在外地时,该报文经过家乡代理采用隧道方式。(3)转交测试初始(Care-of Test Init, CoTI)

CoTI用于移动节点初始化返回可达路由过程,并且从通信节点得到转交密钥标识。CoTI使用MH类型2,格式如图3-5所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载