1.一种IPv6多地址生成与重复地址检测方法,其特征在于:设置两种消息格式,分别是匹配值选项Match Option和重复接口选项IID Option;
匹配值选项Match Option由类型字段Type、长度字段Length、计数字段Count、保留字段Reserved和条目字段item构成,该选项用在NSMAGD消息中,各字段具体描述如下:类型字段Type:表示选项的类型,默认值为0;
长度字段Length:表示选项的长度,NSMAGD消息长度以4字节为单位;
计数字段Count:表示选项中包含匹配值的个数;
保留字段Reserved:保留字段,留作以后功能扩展,使用全0填充;
匹配值选项Match Option的类型字段Type、长度字段Length、计数字段Count、保留字段Reserved长度共32比特;
条目字段item:32比特,用于NSMAGD消息中;在主机生成B-set后,对于B-set中的每个64位的接口ID,截取左边32位得到一个长度为32位的二进制串,称为item;定义函数Left,功能是截取IID左侧32位,即item=Left(IID,32);把所有的item放到一起就得到了集合B-set’,即B-set’={item1,item2,…,itemn};节点进行重复地址检测时,将B-set’中的所有item写入到匹配值选项Match Option的item字段中;
重复接口选项IID Option由类型字段Type、长度字段Length、计数字段Count、保留字段Reserved和接口地址字段Interface ID构成,该选项用在NAMAGD消息中,各字段具体描述如下:类型字段Type:表示选项的类型,默认值为1;
长度字段Length:表示选项的长度,NAMAGD消息以4字节为单位;
计数字段Count:表示选项中包含接口ID的个数;
保留字段Reserved:保留字段,留作以后功能扩展,使用全0填充;
重复接口选项IID Option的类型字段Type、长度字段Length、计数字段Count、保留字段Reserved长度共32比特;
接口地址字段Interface ID:长度为64比特,用于NAMAGD消息中,在接收方在使用NAMAGD应答时,存储R-set中与Item匹配的接口ID;
其中IPv6地址128bit,包含网络前缀Prefix64bit和重复接口IID64bit,IID64bit通过函数截取左侧32位为item32bit;
发送端地址生成与检测过程如下:
发送端步骤一、对于给定的网络前缀Prefix,主机A随机生成n个64位接口ID(Interface ID,IID),n=2k,k=1,2,3,…,k≤16,将这n个64位接口ID放到一起,构成备选地址集B-set;B-set={IID1,IID2,…IIDn};
发送端步骤二、对于B-set集中的每个IID,主机A执行运算
item=Left(IID,32),然后把item添加到B-set’中,从而得到匹配集B-set’,将然后生成Match Option选项;
发送端步骤三、以广播方式发送NSMAGD进行重复地址检测,并记录检测开始时间TS;
发送端步骤四、等待并接收NAMAGD,在规定的时间内,如果收到NAMAGD,则进行发送端步骤五;如果超过了规定时间,则进行发送端步骤七;
发送端步骤五、将NAMAGD中IID Option字段中的所有接口ID取出,生成应答地址集R-set;
发送端步骤六、将R-set中的每个地址依次与B-set中的所有地址进行比较,如果相同,则对B-set中的相同地址进行标记,设置重复标志repeat_flag字段,然后回到发送端步骤四;
发送端步骤七、将B-set中所有被标记为重复的地址去掉,用剩余地址生成可用地址集合A-set,如果A-set不为空,则从A-set中随机挑选一个接口ID,设为IIDX,再结合网络前缀Prefix,生成一个IPv6地址作为节点的新地址,Prefix作为新地址的前64位,IIDX作为新地址的后64位;如果A-set为空,则表明所有B-set中的接口都不可用,重复地址检测DAD失败;
接收端检测过程如下:
接收端步骤一、接收NSMAGD;
接收端步骤二、根据NSMAGD中的网络前缀Prefix,从本地地址池中提取出所有与Prefix匹配的128位地址,截取后64位,形成待检测地址集C-set;
接收端步骤三、如果C-set不为空,则从NSMAGD的匹配值选项Match Option字段中提取出所有的item,形成匹配集B-set’,进行接收端步骤四;否则丢弃该NSMAGD;
接收端步骤四、将C-set的接口ID与B-set’中的条目进行匹配;匹配方法为,对于C-set中的每个接口ID,用IIDY表示,将其与B-set’中的匹配值,即item进行匹配,如果Left(IIDY,
32)=item,即如果IIDY的左侧32位与B-set’中的某个item相等,则匹配成功,将IIDY加入应答地址集R-set;
接收端步骤五、如果R-set不为空,发送NAMAGD进行应答;否则将NSMAGD丢弃,不发送任何应答消息。
2.如权利要求1所述的一种IPv6多地址生成与重复地址检测方法,其特征在于:所述的发送端地址生成与检测过程步骤三中,其NSMAGD报文的Target字段是写入网络前缀Prefix。
3.如权利要求1所述的一种IPv6多地址生成与重复地址检测方法,其特征在于:所述的发送端地址生成与检测过程步骤四中,所述规定的时间为从TS起3秒钟内。
4.如权利要求1所述的一种IPv6多地址生成与重复地址检测方法,其特征在于:所述的发送端地址生成与检测过程发送端步骤六中的比较方法如下:从B-set中取出接口ID,用IDi表示,将其与R-set中所有ID进行比较,一旦发现IDi与R-set中的某个接口ID相同,则将IDi的重复标记repeat_flag设置为True;然后继续B-set中取出下一个接口ID继续与R-set中所有ID进行比较,直至B-set中的所有接口ID都比较过。