发明内容
结合本发明的一方面,所要解决的问题在于如何在接入网中实现IPv6无状态自动配置,并且设计一个有效的方案使IPv6无状态自动配置IPv6接入网对于运营商来讲更加可管理。从而,1)能够在IPv6接入网中容易地使用无状态自动配置,而不引入一些潜在的问题;2)在此方案中能够容易地进行NSP选择。
由于运营商想控制他/她的网络,但是IPv6无状态自动配置不能为运营商提供任何方法。目前没有任何在接入网中应用IPv6无状态自动配置的可营运的方案。
本发明提出了一种有效的方案,使IPv6接入网能够支持IPv6无状态自动配置。以下描述基本的思想。
1)每个用户网络向每个NSP只认证一次。由于用户拥有其用户网络,其网络中的终端是相互友好的。一旦有一个终端已经完成了其NSP选择和认证,任何其他终端不必与同一NSP进行认证。
2)为RA消息定义一个新选项,即NSP信息选项。该新选项能够与含有该NSP分配的前缀的前缀信息选项一起使用,以发送NSP信息(例如,边界路由器地址和NSP名称)到终端。每个终端能够容易地从RA消息找到一个适当的前缀以向希望的NSP传送其分组。
3)使用类型0路由头以传送包到正确的NSP网络。类型0路由头的使用使得接入节点可以快速的选择合适的路径并将数据转发到相应的NSP网络。
4)周期认证,使得网络更安全。
为此,本发明提供了一种接入网中IPv6无状态自动配置方法,其特征在于,
a.接入节点将包括NSP信息选项和前缀信息选项对的RA消息发送到用户网络,该NSP信息选项包括NSP边界路由器IPv6地址和NSP名称,在RA消息中,NSP信息选项总是和相应的IPv6前缀信息选项成对存在,
b.在用户网络中,要访问一个NSP的终端,在RA消息中寻找是否有该NSP信息选项以及对应的属于该NSP的前缀信息选项,
c.终端通过RA消息获得属于该NSP的前缀,通过将其接口标识附加到前缀上得到其全局IPv6地址。
本发明还提供了一种IPv6终端,包括处理模块、网络接口模块、存储模块,其特征在于,
该终端通过网络接口模块从接入节点接收RA消息,该消息中具有NSP信息选项,在这个信息选项中包含了NSP边界路由器地址以及NSP名称;此外,在RA消息中该NSP信息选项与相应的前缀信息选项成对使用,处理模块对该RA消息进行处理,将NSP边界路由器地址以及NSP名称存储在存储模块中,
终端在要访问一个NSP时,处理模块在RA消息中寻找是否有该NSP信息选项以及对应的属于该NSP的前缀信息选项,
该终端的处理模块通过RA消息获得属于该NSP的前缀,通过将其接口标识附加到前缀上得到其全局IPv6地址。
本发明还提供了一种IPv6接入节点,包括处理模块、网络接口模块、存储模块,其特征在于,
根据存储模块中存储的路由器IPv6地址和NSP名称,处理模块生成RA消息,该RA消息中具有一个NSP信息选项,该NSP信息选项包含NSP边界路由器IPv6地址和NSP名称;在该RA消息中,NSP信息选项总是和相应的IPv6前缀信息选项成对存在,该接入节点通过网络接口模块向用户网络发出该RA消息,
该接入节点通过网络接口模块通过NSP信息选项和前缀信息选项对发出RA消息到用户网络。
结合本发明的另一方面,所要解决的技术问题在于设计对NSSA问题的新的有效方法。
对于此问题,本发明提出了一种有效的方案,通过利用路由器请求/路由器通告(RS/RA)消息使网络服务选择和认证更加有效率。基本思想描述如下。
1)RS/RA消息在IPv6网络中是强制的。用于NSSA的信息可以附加在RS消息上。
2)对RS消息定义一个新选项(即,NSSA信息选项)。该新消息选项可以用于在RS消息中发送用户信息,用于网络服务选择和用户认证。RA消息中的NSP信息选项与前缀信息选项一起使用以识别由具体NSP分配的前缀。
为此本发明提供了一种在IPv6接入网中进行NSP服务选择和认证的方法,其特征在于,
用户网络中的终端向接入节点发出RS消息,RS消息中具有网络服务选择和认证(NSSA)信息选项,该选项包含用于网络服务选择和认证的用户信息;
接入节点从RS消息的NSSA信息选项中提取用户信息,并且与相应的AAA服务器通信进行认证;
认证后,获得NSP前缀,接入节点将获得的NSP信息与前缀信息通过RA消息中的NSP信息选项和前缀信息选项发送到用户网络,NSP信息选项包含NSP边界路由器地址以及NSP名称,该NSP信息选项与RA消息中相应的前缀信息选项成对使用。
本发明还提供了一种IPv6终端,包括处理模块、网络接口模块、存储模块,其特征在于,
处理模块生成RS消息,该RS消息中具有网络服务选择和认证(NSSA)信息选项,包含用于网络服务选择和认证的用户信息,该终端通过网络接口模块将该RS消息发送到接入节点;
该终端通过网络接口模块从接入节点接收的RA消息中具有NSP信息选项,该NSP信息选项中包含NSP边界路由器地址以及NSP名称,该NSP信息选项与RA消息中相应的前缀信息选项成对使用,处理模块对该RA消息进行处理,将NSP边界路由器地址以及NSP名称存储在存储模块中。
本发明还提供了一种IPv6接入节点,包括处理模块、网络接口模块、存储模块,其特征在于,
该接入节点通过网络接口模块从终端接收RS消息,处理模块从接收的RS消息的网络服务选择和认证(NSSA)信息选项中提取用户信息,并且与相应的AAA服务器通信进行认证,该NSSA信息选项中包含用于网络服务选择和认证的用户信息;
认证后,根据获得的并存储在存储模块中的NSP信息与前缀信息,处理模块生成RA消息,该RA消息具有NSP信息选项和前缀信息选项,该NSP信息选项包含NSP边界路由器地址以及NSP名称,该NSP信息选项与RA消息中相应的前缀信息选项成对使用,接入节点将NSP信息与前缀信息通过该RA消息通过网络接口模块发送到用户网络。
具体实施方式
图3表示图1中IPv6接入网模型中用户终端与接入节点的示意框图,其中用户网络中的终端31与接入节点32通过网络接口模块311和321收发RS消息和RA消息。两者的处理模块312和322和存储模块313和323参与各自的操作。
关于接入网中IPv6无状态自动配置
RA消息属于邻居发现协议,邻居发现协议在IPv6中很重要。
路由器通告消息的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cur Hop Limit |M|O| Reserved | Router Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reachable Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retrans Timer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 选项...
+-+-+-+-+-+-+-+-+-+-+-+-
IPv6中类型0路由头的格式
如何将IP包从用户网络转发到正确的NSP是接入网中一个很重要的问题。在IPv6扩展头中,路由头被IPv6源用来列表在到包目的地的路上要“访问”的一个或多个中间节点。类型0路由头可以用来解决接入网中的包转发问题。类型0路由头的格式如下。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type=0 | segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 地址[1] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 地址[2] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . .
. . .
. . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 地址[n] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
此格式的细节可以参照REC2460。在本发明的方案中,只规定了一个中间路由器地址(即,NSP边界路由器的地址)。因此,在路由头中只有一个“地址”域,域“Hdr Rxt Len”(此扩展头的长度)被设置为2。“Segment Left”被设置为1;在具体使用类型0路由头时,“地址[1]”被设置为该分组应该前往的最终目的地的IPv6地址。
定义RA消息新选项-NSP信息选项
为了使用类型0路由头,终端必须知道NSP边界路由器的IPv6地址。这里,定义一个新选项称为NSP信息选项以将NSP边界路由器的IPv6地址发送到终端。此选项必须与RA消息中的相应的前缀信息选项一起使用,这样终端能够容易地知道希望的前缀和希望的边界路由器的IPv6地址。此新选项的格式如下。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type(6) | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ NSP边界路由器地址 +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NSP名称 ...
+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+
域:
类型 6.
长度 8位无符号整数。该选项的长度(包含类型和长度域)是以8字节为单位的。数值0是无效的。节点必须无条件地丢弃包含0长度选项的邻居发现协议分组。
保留 此16位目前是不使用的。它必须被发送端初始化为0并且必须被接收端忽略。
NSP边界路由器地址
NSP边界路由器的IPv6地址。
NSP名称 此域具有可变长度,但是它必须保证整个选项的长度是8字节的倍数。终端使用此域来识别希望的NSP前缀。
描述 NSP信息选项向终端提供NSP边界路由器IPv6地址和NSP名称。此选项与相应的IPv6前缀信息选项一起被通告。在RA消息中,NSP信息选项总是出现在前缀信息选项之前;或者说,在接入网中,NSP信息选项和前缀信息选项必须成对存在。享用该NSP服务的源自该终端的所有IPv6包必须在它们的路由头中使用边界路由器的地址。
NSP信息选项只能出现在路由器通告包中,并且其他包含此选项的消息必须被无条件丢弃。
接入网中IPv6无状态自动配置方案
在用户网络中,如果没有终端想访问一个特定的NSP,接入节点不会从该NSP获得任何IPv6前缀。如果有一些节点享用来自某个特定的NSP服务,接入节点的处理模块322通过网络接口模块321会获得一个来自相应的NSP的适当的IPv6前缀,并存储在存储模块323中,并且接入节点将周期性地由处理模块322通过网络接口模块321发出相应的RA消息。
一旦一个终端(例如PC1)想访问某个具体的NSP(例如图1中的NSP1),必须进行以下步骤来完成其无状态配置(图2)
(1)在步骤21,PC1的处理模块312等待MAX_RTR_SOLICITATION_DE LAY(在RFC2461中MAX_RTR_SOLICITATION_DE LAY定义为1秒)以看是否有RA消息到来。
a)如果通过网络接口模块311收到RA消息,PC1的处理模块312会寻找在RA消息中寻找是否有属于希望的NSP(NSP1)的前缀(步骤22)。
i)如果有属于NSP1的前缀,这意味着另一个终端已经与NSP1进行了认证,并且不需要再次与NSP1进行NSP选择和认证。进行到步骤27;
ii)如果没有,进行到步骤25。
b)在步骤23,如果没有RA消息,终端主动由处理模块312通过网络接口模块311发出路由器请求消息。如果有RA消息,进行与上述(1)a)i)中相同的动作。在MAX_RTR_SOLICITATIONS(在RFC2461中MAX_RTR_SOLICITATIONS定义为3次发送)次RS消息之后,如果仍然没有RA消息,则进行到步骤(25)。
(2)在步骤25,进行NSP服务选择和认证。NSP服务选择和认证可以采用多种方式例如基于802.1x的、基于DHCP认证方式的。以基于DHCP的服务选择和认证为例,PC1的处理模块312能够触发IPv6动态主机配置协议(DHCPv6)客户机,以“用户类”选项进行NSP选择和认证。该选项可以包含用户名称、希望的NSP(这里NSP是NSP1)、以及用户的认证信息。为了使认证远离攻击,可以使用DHCPv6的“认证”选项等机制。在此步骤中,本地链路IPv6地址可以用作其源地址,并且All_DHCP_Relay_Agents_and_Servers多播地址作为其目的地址。
接入节点中的DHCPv6中继代理能将消息中继到位于希望的NSP1中的DHCP服务器(AAA服务器)以进行认证。
在步骤26,成功认证后,一个适当的前缀由NSP1分配给该用户网络。该前缀的分配被通知给接入节点(例如,通过DHCPv6前缀授权选项),并由存储模块323存储。然后,接入节点通过网络接口模块321通过NSP信息选项和前缀信息选项对经网络接口模块321发出RA消息到用户网络。处理模块322生成该RA消息包含NSP边界路由器IPv6地址、NSP名称、和分配的前缀信息。
在步骤27,一旦终端从希望的NSP得到前缀,处理模块312能够通过将终端的接口标识附加到前缀上得到全局IPv6地址。
在步骤28,源自该终端的任何包可以使用带有希望的NSP边界路由器地址的类型0路由头来享用来自希望的NSP的服务。当然,为了使网络更加健壮,接入节点应该支持反欺诈,也就是说通过利用与分配给该用户网络的前缀的最长前缀匹配,来检验来自一个IPv6地址的包是否能否享用来自该具体NSP的服务。
在此方案中,每个用户网络只与希望的NSP进行一次认证。随后的终端只是查阅RA的NSP信息选项和前缀信息选项对以获得由希望的NSP分配的适当的前缀。这可以称为“每个用户网络向每个NSP只认证一次”。这提升了自动配置的速度,减少了网络中的NSP选择和认证通信量以及对相应DHCP服务器(AAA服务器)的认证请求。
周期认证
为了使网络更加健壮,NSP可以要求它的用户网络进行周期认证。为此目的,当前缀被最初分配给该用户网络时,该前缀的有效时间可以设置为一个适当的时间(例如,1天)。并且一个终端的地址有效时间的结束会触发DHCPv6更新消息到相应的认证服务器,并且请求延期前缀的有效时间。在此消息中,必须包含“用户类”选项。
本发明使接入网中IPv6无状态自动配置的实现成为可能。新NSP信息选项、“每个NSP每个用户网络一次认证”的方法、以及IPv6路由头的使用提升了IPv6无状态自动配置效率,并且减少NSP选择和认证通信量。
周期认证为NSP提供了方法来控制其服务,从而网络更健壮。
关于基于RS/RA消息的NSP选择和认证
用户网络中的所有终端都是IPv6节点。并且接入节点是作为3层设备操作的,结合了IPv6路由器的功能和一些管理功能。
正如前面所说的,在标准IPv6无状态配置中,路由器(或3层接入节点)从它的通告接口发送周期的或者响应路由器请求(RS)消息的路由器通告(RA)消息。所有终端从RA消息中获得IPv6前缀,通过将它们的接口标识附加到IPv6前缀上来形成它们的全局IPv6地址。
当IPv6终端的接口被使能时,该终端可能不想等待下一个非请求的RA消息来定位默认的路由器或获知前缀。为快速地获得RA消息,终端应当发送最多MAX_RTR_SOLICITATIONS(在RFC2461中MAX_RTR_SOLICITATIONS定义为3次发送)次路由器请求(RS)消息,每次间隔至少RTR_SOLICITATION_INTERVAL(在RFC2461中RTR_SOLICITATION_INTERVAL定义为4秒)秒。根据此方案,能够使用RS/RA消息用于网络服务选择和认证。可以定义一个新的选项(即NSSA信息选项)来发送用于NSSA的用户信息。在RA消息中,可能有来自不同NSP的一些不同的前缀。为了便于终端进行正确的前缀选择,NSP信息(此前缀的NSP名称)必须也包含在NSP信息选项中。
路由器请求消息格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 选项...
+-+-+-+-+-+-+-+-+-+-+-+-
NSSA信息选项的格式
在RS的选项域中只有源链接层地址选项能够使用。为了发送用于NSP选择和认证的用户信息,必须定义网络服务选择和认证(NSSA)信息选项。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type(7) | Length | NssA Data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型 7
长度 8位无符号整数。选项的长度(包括类型和长度域)是以8字节为单位。数值O是无效的。节点必须无条件地丢弃包含零长度选项的邻居发现包。
NSSA数据 此域具有可变长度。但是它必须保证该选项的整个长度是以8字节为单位。它用来在RS消息中包含用于网络服务选择和认证的用户信息(例如,用户名称、希望的NSP、以及用户的其他认证信息)。该域可以是以username@nsp.com:password自勺形式出现或者以其他密文方式出现。为了使信息远离攻击或者被窃取,可以使用IPv6封装安全性净荷(ESP)头,或者其他加密方式以保证用户信息的安全性。
描述 当此选项存在于RS消息中时,它用来发送用于网络服务选择和用户认证的用户信息。
RA消息中的NSP信息选项必须与前缀信息选项一起使用来识别由具体NSP分配的前缀。或者说,在接入网中,NSP信息选项和前缀信息选项必须成对(NSP信息选项,前缀信息选项)存在。这样,RA消息中可以包含多个这种对,用于来自不同NSP的不同前缀。
基于RS/RA消息的NSP选择和认证过程
图4表示IPv6无状态地址配置中用于网络服务选择和认证的RS/RA方案。用户IPv6终端由处理模块312维护对于希望的NSP(例如,NSP名称)的NSP信息,该信息存储模块313。接入节点的处理模块322从NSSA信息选项提取用户信息,并且与相应AAA服务器通信一进行认证。成功认证后,接入节点从相应的NSP边界路由器请求前缀授权,并由处理模块322获得相应的NSP信息并存储在存储模块323中。然后接入节点由处理模块322产生并通过网络接口模块321发出RA消息到用户网络,带有NSP信息选项和前缀信息选项。
在图4中,前缀分配假定由NSP边界路由器完成。在其他情况下,例如,前缀分配可以以RADIUS通过Framed-IP-Prefix属性随着认证进行。这样,步骤4和步骤5可以省略。
通过定义NSSA信息选项,由终端处理模块312产生并通过网络接口模块311发出的RS消息能够携带用于网络服务选择和认证的用户信息。并且由处理模块322产生并通过网络接口模块321发出的RA能够将NSP信息选项与前缀信息选项一起发送,网络服务选择和认证能够容易有效地与RS/RA消息一起进行。终端能够由处理模块312通过NSP信息选项和前缀信息选项中的信息选择适当的前缀以形成其全局IPv6地址。
当IPv6终端的接口(网络接口模块311)被使能时,处理模块312经它发出RS消息来获得全局前缀。为了利用此特征,本发明提供了一个网络服务选择与认证的有效方案,不引入终端与接入节点之间的任何其他消息交换。
简单讲,本发明的网络服务选择与认证方案是附带在RS/RA消息上,很简单。
图5表示采用本发明的基于RS/RA消息的NSP选择和认证过程的IPv6无状态配置流程。
在用户网络中,如果一个终端想访问一个希望的NSP时,
在步骤52等待1秒,看是否有任何RA消息到来,如果没有RA消息到来,则前进到步骤54,如果有RA消息到来,处理模块312查阅RA消息中是否有希望的NSP和相应的前缀(将这些信息存储在存储模块313中);如果有希望的NSP和相应的前缀,则前进到步骤56,如果没有希望的NSP和相应的前缀,则前进到步骤54;
在步骤54,用户终端由处理模块312通过网络接口模块311发出携带有NSSA选项的RS消息;
在步骤55,接入节点的处理模块322从RS消息的NSSA选项中提取用户服务选择和认证信息,到相应的NSP网络进行认证。成功认证并获得全局IPv6前缀,并存储在存储模块323中。接入节点由处理模块322通过网络接口模块321向该用户网络发出RA消息,该消息同时携带NSP信息选项和与之相匹配的前缀信息选项;
在步骤56,终端由处理模块322取得相应NSP提供的前缀和边界路由器地址(存储到存储模块323中),形成全局IPv6地址:前缀+接口标识;
在步骤57,所有享用该NSP服务的业务数据使用具有类型0路由头的IPv6分组格式发出数据分组,该NSP的边界路由器作为第一个中间路由器。