CN102014142A - 一种源地址验证方法和系统 - Google Patents
一种源地址验证方法和系统 Download PDFInfo
- Publication number
- CN102014142A CN102014142A CN201010620015XA CN201010620015A CN102014142A CN 102014142 A CN102014142 A CN 102014142A CN 201010620015X A CN201010620015X A CN 201010620015XA CN 201010620015 A CN201010620015 A CN 201010620015A CN 102014142 A CN102014142 A CN 102014142A
- Authority
- CN
- China
- Prior art keywords
- savi
- address
- mac
- anchor
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种源地址验证方法和系统。所述方法,包括下列步骤:设备SAVI-1的属性为SAVI-Validation的端口Anchor-X接收到其对应主机Host-X发来的数据分组,提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;所述设备SAVI-1根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
Description
技术领域
本发明涉及网络安全技术领域,特别是涉及一种针对缺乏绑定的数据分组的源地址验证方法和系统。
背景技术
传统的因特网体系结构下,IP源地址在数据包转发过程中不起任何作用,因此源地址的有效与否并不影响数据包的传输,这给攻击者提供了很便利的利用源地址欺骗的攻击方式。攻击者可以利用伪造源地址的不可追踪性发送大量攻击报文,而不必承担责任。RFC2827提出了前缀粒度的入口过滤策略,提供源地址在聚合层次上的验证,在一定程度上抑制了子网间源地址欺骗问题。目前源地址验证已经引起了广泛的重视。
为了补充入口过滤,IETF SAVI工作组目前正制定相关标准,旨在一个合适的粒度水平上标准化IP源地址验证,阻止同一子网内的主机相互假冒地址或伪造地址。源地址验证提高(Source Address Validation Improvement,SAVI)协议的设计尽量避免对主机协议栈进行修改,源地址验证仅依赖于网络设备实现。理论上SAVI协议部署实体离主机越近,执行效果越好,故目前普遍认为应该尽量将其部署在直接与主机相连的、能识别IP地址的并能处理简单网络层报文的交换机上。但实际环境的复杂性不一定可以满足SAVI协议的主机第一跳部署目标,图1是现有技术中SAVI协议实体通用部署方案示意图,如图1所示,图中虚线框是保护边界,“SAVI”代表部署SAVI模块的交换机,“H”代表主机,“R”代表普通路由器,“S”代表未部署SAVI模块的普通交换机,“Hub”代表集线器。SAVI协议将焦点放在子网内过滤,即尽最大可能实现第一跳过滤。
源地址验证中需要证据来证明数据分组确实是由其所声称的发送者产生的,IP地址显然不足以担此重任,于是就有了绑定锚概念的提出。绑定锚要求具有不易伪造性,目前较为广泛认可的是采用部署SAVI模块的交换机端口号作为可信绑定锚。通过绑定锚与IP地址绑定关系的建立,来唯一确定数据分组发送者的身份。方案的实施首先需要两个结构来记录绑定关系和绑定状态:
●过滤表(Filtering Table,FT):存储绑定关系,FT提供分组过滤依据。
表1.FT的示例
●绑定状态表(Binding State Table,BST):记录源地址和锚之间的绑定状态,控制FT中条目的建立和撤销。
表2.BST的示例
网络中数据是以分组的形式进行传输的,分为控制分组(control packet)和数据分组(data packet)。控制分组,是指初始化地址分配过程中与绑定建立有关的分组,具体包括DHCPv4/v6 Request、DHCPv6 Confirm、带Rapid Commit选项的DHCPv6 Solicitation、DAD的NS消息和gratuitous ARP。SAVI设备收到这类分组时将触发绑定条目的建立。数据分组,是指除上述控制分组外,其他分组均归为数据分组。
绑定关系的建立是通过嗅探地址分配过程的控制分组来完成的,因为地址分配过程就是IP地址的授权过程。一般的地址分配方式有动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)和无状态地址自动配置(Stateless Address Auto Configuration,SLAAC)两种,IETF SAVI工作组正针对这两种地址分配过程中绑定关系的建立制定标准。下面分别对DHCP和SLAAC情况下上述数据结构的条目建立过程进行简要介绍,后续提到的“SAVI设备”均表示部署SAVI模块的交换机;SAVI-Validation是一种SAVI设备端口属性,一般位于保护边界处,具有这种属性的端口需要对收到的分组进行源地址验证。
DHCP网络环境中绑定的建立过程
(1)属性为SAVI-Validation的SAVI设备端口收到控制分组,如DHCPv4/v6 Request或DHCPv6 Confirm或带Rapid Commit选项的DHCPv6Solicitation,均会触发为分组中携带的源地址或目标地址在BST表中新建绑定条目;
(2)重复地址检测执行成功后会根据BST表中的状态在FT表中新建绑定关系条目;
SLAAC网络环境中绑定建立过程
(1)属性为SAVI-Validation的SAVI设备端口收到控制分组,如gratuitous ARP请求或DAD的NS,均会触发为分组中携带的源地址或目标地址在BST表中新建绑定条目;
(2)重复地址检测执行成功后会根据BST表中的状态在FT表中新建绑定关系条目;
通过对上述两种地址分配过程的嗅探建立了绑定关系之后,就需要根据FT对所有将要进入保护边界的数据分组进行过滤,即拥有SAVI-Validation属性的SAVI设备端口收到数据分组时进行源地址验证:如果其源地址在FT中,则转发该数据分组;否则,丢弃该分组。
显然,过滤规则在数据分组的过滤方面存在着巨大的缺陷。把源地址缺乏绑定的数据分组简单地丢弃会使整个网络的鲁棒性严重下降,造成主机莫名其妙的被离线,因为造成这种情况的原因有很多:控制分组丢失(如NS)导致SAVI设备没有嗅探到地址分配过程;网络拓扑改变(如节点移动但没有触发地址重新分配过程)导致节点通信路径上的第一个SAVI设备中没有该节点源地址的绑定条目;SAVI设备重启导致缓存中的绑定状态丢失。于是,就提出了由数据分组(即缺乏源地址绑定的分组)触发绑定的补充绑定策略。下面对现有的针对DHCP和SLAAC的补充绑定策略进行简单的介绍:
DHCP网络环境中补充绑定策略
拥有SAVI-Validation属性的SAVI设备端口收到源地址缺乏绑定的数据分组时,首先在全子网范围内执行重复地址检测(Duplicate AddressDetection,DAD)过程,执行失败(重复地址检测执行失败就是检测到冲突地址,而相反,执行成功就是没有检测到冲突地址)就抛弃数据分组;执行成功后再发送DHCPLEASEQUERY消息(IPv4)或LEASEQUERY(IPv6)向DHCP服务器查询地址授权情况,进行后续判断,或抛弃,或为该源地址建立新的绑定条目。
SLAAC网络环境中补充绑定策略
拥有SAVI-Validation属性的SAVI设备端口收到源地址缺乏绑定的数据分组时,首先在全子网范围内执行DAD过程,执行失败就抛弃数据分组;执行成功就为该源地址建立新的绑定条目。
但是上述补充绑定方案,都需要SAVI设备向全子网广播进行DAD,无疑会增加不必要的网络开销;当DHCP服务器不支持DHCPLEASEQUERY或LEASEQUERY消息时,DHCP网络下的补充绑定策略执行受限;没有检测待绑定地址的可通信性也是上述补充绑定方案的不足之处。值得注意的是,虽然目前所有草案都建议将同一子网内的SAVI设备加入一个多播组,但是却没有方案利用这个多播地址进行通信。
发明内容
本发明的目的在于提供一种源地址验证方法和系统,通过SAVI设备之间的通信来建立补充绑定方案,能够灵活地处理由于控制分组丢失、网络拓扑变化、SAVI设备绑定状态丢失等因素造成的缺乏源地址绑定的数据分组的处理情况,在增加少量网络开销的情况下,明显提高源地址过滤的可靠性和整个网络的鲁棒性。
为实现本发明的目的而提供的一种源地址验证方法,包括下列步骤:
步骤100.设备SAVI-1的属性为SAVI-Validation的端口Anchor-X接收到其所连接的主机Host-X发来的数据分组,提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;
步骤200.所述设备SAVI-1根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
所述步骤200,包括下列步骤:
步骤210.所述设备SAVI-1查询本地过滤表,判断所述IP-X是否在所述设备SAVI-1中注册过,若是则执行步骤220;否则执行步骤230;
步骤220.验证注册的通信路径与所述Anchor-X、所述IP-X和所述MAC-X构成的通信路径是否匹配的步骤;
步骤230.丢弃所述数据分组,验证所述Anchor-X、所述IP-X和所述MAC-X是否为合法通信路径的步骤。
所述步骤220,包括下列步骤:
步骤221.判断在过滤表中对应的MAC Address是否是MAC-X,若不是,则丢弃所述数据分组,结束验证流程;若是,那么若对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若对应的端口号是Anchor-Z,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,执行步骤222;
步骤222.所述SAVI-1向所述端口Anchor-Z发送回声请求报文,探测本地过滤表项中原始绑定地址:端口Anchor-Z、所述IP-X和所述MAC-X是否能够继续通信,若收到相应的回声应答,将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,删除本地过滤表中相应条目,并将IP-X在本地BST中条目更新,执行步骤230;
所述步骤230,包括下列步骤:
步骤231.所述SAVI-1向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若否,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若是,则执行步骤232:
步骤232.判断所述IP-X是否在所述设备SAVI-1中注册过,若是执行步骤233;否则执行步骤234;
步骤233.将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,执行步骤235;
步骤234,将端口Anchor-X的属性修改为SAVI-AddBinding;在本地BST表中为IP-X建立新的条目,执行向其他设备SAVI查询IP-X的绑定情况的步骤;
步骤235.将SAVI-1端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至本地过滤表中。
步骤234中,所述向其他设备SAVI查询IP-X的绑定情况的步骤,包括:
SAVI-1发送SAVI查询报文,根据网络情况和需求选择SAVI多播查询或者SAVI中心查询方式,向其他SAVI设备查询IP-X的绑定情况;
收集其他SAVI设备的回复信息,根据回复结果进行后续处理:
若SAVI-1将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;
若SAVI-1将BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,则执行步骤235。
所述SAVI多播查询,包括下列步骤:
步骤2341.SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的源IP地址IP-X和二层MAC地址MAC-X;
步骤2342.收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,SAVI-2将本地BST中相应条目更新,并执行步骤2343:
步骤2343.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信,若SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,删除SAVI-2本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
步骤2345.SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,SAVI-1删除本地BST中相应条目;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,SAVI-1删除本地BST中相应条目;
若SAVI-1没有收到过任何SAVI回复报文,查看SAVI-1本地BST中IP-X对应条目的Other属性,若Other为DHCP,则SAVI-1删除本地BST中相应条目;若Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime。
所述SAVI中心查询,包括下列步骤:
步骤2346.在子网中引入SAVI中心服务器,用于存储整个网络的地址授权信息,SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息;
步骤2347.SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
步骤2348.SAVI中心根据IP-X查询SAVI信息表:
若未找到关于IP-X的记录,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定,执行步骤2349;
步骤2349.SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址IP-X、MAC-X以及Anchor-Y;
步骤23410.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
步骤23411.SAVI中心若收到了回复SAVI-CReply-Unreachable,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心若没有收到任何回复,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
步骤23412.SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息。
所述SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
为实现本发明的目的还提供一种源地址验证系统,包括:至少一个主机和至少一个SAVI设备,其特征在于,所述SAVI设备,包括:
数据接收模块,用于接收由所述SAVI设备的属性为SAVI-Validation的端口Anchor-X所连接的主机Host-X发来的数据分组;
信息提取模块.用于提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;
探测交互模块,用于根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
所述探测交互模块,包括:
注册判断模块,用于查询本地过滤表,判断所述IP-X是否在本地注册过,若是则触发匹配验证模块;否则触发通信验证模块;
匹配验证模块,用于执行验证注册的通信路径与所述Anchor-X、所述IP-X和所述MAC-X构成的通信路径是否匹配的步骤;
通信验证模块,用于执行丢弃所述数据分组,验证所述Anchor-X、所述IP-X和所述MAC-X是否为合法通信的步骤。
所述匹配验证模块,包括:
过滤模块.用于判断在过滤表中对应的MAC Address是否是MAC-X,若不是,则丢弃所述数据分组,结束验证流程;若是,那么若对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若对应的端口号是Anchor-Z,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,触发探测模块;
探测模块.用于向所述端口Anchor-Z发送回声请求报文,探测本地过滤表项中原始绑定地址:端口Anchor-Z、所述IP-X和所述MAC-X是否能够继续通信,若收到相应的回声应答,将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,删除本地过滤表中相应条目,并将IP-X在本地BST中条目更新,触发通信验证模块。
所述通信验证模块,包括:
回声请求模块.用于向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若否,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若是,则触发判断模块:
判断模块.判断所述IP-X是否在所述设备SAVI-1中注册过,若是触发更新模块;否则触发查询模块;
更新模块.用于将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,触发添加模块;
查询模块,用于将端口Anchor-X的属性修改为SAVI-AddBinding;在本地BST表中为IP-X建立新的条目,执行向其他设备SAVI查询IP-X的绑定情况的步骤;
添加模块,用于将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至本地过滤表中。
所述查询模块,包括:
查询报文发送模块,用于发送SAVI查询报文,根据网络情况和需求选择SAVI多播查询或者SAVI中心查询方式,向其他SAVI设备查询IP-X的绑定情况;
信息收集模块,用于收集其他SAVI设备的回复信息,根据回复结果进行后续处理:
若SAVI-1将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;
若SAVI-1将BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,则触发添加模块。
所述查询报文发送模块,包括:多播查询模块和中心查询模块,其中:
所述多播查询模块,执行下列步骤:
SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的源IP地址IP-X和二层MAC地址MAC-X;
收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,SAVI-2将本地BST中相应条目更新,并执行下一步骤:
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信,若SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,删除SAVI-2本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,SAVI-1删除本地BST中相应条目;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,SAVI-1删除本地BST中相应条目;
若SAVI-1没有收到过任何SAVI回复报文,查看SAVI-1本地BST中IP-X对应条目的Other属性,若Other为DHCP,则SAVI-1删除本地BST中相应条目;若Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime;
所述中心查询模块,执行下列步骤:
在子网中引入SAVI中心服务器,用于存储整个网络的地址授权信息,SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息;
SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
SAVI中心根据IP-X查询SAVI信息表;
若未找到关于IP-X的记录,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定,执行下一步骤;
SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址IP-X、MAC-X以及Anchor-Y;
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
SAVI中心若收到了回复SAVI-CReply-Unreachable,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心若没有收到任何回复,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息。
所述SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
本发明的有益效果是:采用本发明的一种源地址验证方法和系统,SAVI设备在收到一个缺乏源地址绑定的数据分组时,不是简单的丢弃或新建绑定,而是通过SAVI设备主动发起的探测和可信的SAVI之间的协商和信令交互来决定是否为这个源地址建立新的绑定条目。
附图说明
图1是现有技术中SAVI协议实体通用部署方案示意图;
图2是本发明的一种源地址验证方法的步骤流程图;
图3是本发明中SAVI多播查询的步骤流程图;
图4是本发明中SAVI中心查询方法的步骤流程图;
图5是本发明的一种源地址验证系统的结构示意图;
图6为节点移动的实例示意图;
图7是二层路径发生变化的实例示意图;
图8是控制分组丢失的示例例示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种源地址验证方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种源地址验证方法和系统,是独立于初始化地址分配过程中控制分组触发的绑定关系建立过程,而将焦点集中在数据分组如何触发绑定建立的关键问题,是对现有的真实源地址验证系统中SAVI设备功能的扩展,具体涉及SAVI设备收到源地址不在本地过滤表的数据分组后,通过与同一子网内的其他SAVI设备进行协商和信令交互来确定该源地址的合法性,以及对该数据分组的处理决策,提高真实源地址验证系统的可靠性和健壮性。
本发明需要向BST和FT表添加新的MAC Address属性:
Filtering Table(FT):存储绑定关系,FT表提供分组过滤依据。
表3.添加MAC Address属性后的FT示例
Binding State Table(BST):记录源地址和锚之间的绑定状态,控制FT表中条目的建立和撤销。
表4.添加MAC Address属性后的BST示例
原始的FT中只有anchor和Address两个属性,通过增加节点的MACAddress地址来实现三元组唯一确定节点,即SAVI设备需要对数据分组的anthor、MAC Address和Address三项进行验证,只有全部匹配才能验证通过,实现IP地址和二层地址双验证。特别的,当主机不与SAVI设备直接相连时,SAVI设备的一个端口可能通过普通交换机或HUB连接多个主机,这样SAVI设备端口号就不再是能够唯一标识主机的锚。此时主机的MAC Address,与SAVI端口号结合就可以作为唯一标识主机的锚。
下面结合上述目标详细介绍本发明的一种源地址验证方法,图2是本发明的一种源地址验证方法的步骤流程图,如图2所示,所述方法,包括下列步骤:
步骤100.一个SAVI设备(SAVI-1)的一个属性为SAVI-Validation的端口(Anchor-X)接收到其对应主机Host-X发来的数据分组,提取所述数据分组中的源IP地址(IP-X)和源二层地址(MAC-X);
所述数据分组携带的源地址可能是主机Host-X通过正常地址配置过程获得的真实源地址,也可能是主机Host-X出于某种目的而恶意产生的源地址。
步骤200.所述SAVI-1查询本地过滤表(Filtering Table,FT),判断所述IP-X是否在FT中,若是,说明所述IP-X曾经在所述SAVI-1上注册过,则执行步骤300;否则,丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,执行步骤500;
SAVI-AddBinding表示正在执行补充绑定建立过程的端口被置为该属性。拥有该属性的端口只能转发源地址在本地FT表中的数据分组,而对于源地址不在本地FT表中的数据分组将采取简单的丢弃策略,不会执行本发明定制的验证策略。这种处理方式可以防止DoS攻击这种属性的端口位于保护边界处。
步骤300.判断在FT中对应的MAC Address是否是MAC-X,若不是,说明源二层地址存在欺骗,则丢弃所述数据分组,结束验证流程;若是,那么若FT中对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若FT中对应的端口号Anchor是Anchor-Z,说明网络拓扑发生了变化(如节点发生了移动)或者Host-X冒充Host-Z的地址,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,执行步骤400;
步骤400.所述SAVI-1向所述端口Anchor-Z发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测本地FT表项中原始绑定地址是否能够继续通信,若收到相应的回声应答,说明原始绑定地址能够正常通信,Host-X假冒Host-Z的地址,将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,即原始绑定地址已不再可达,可能是节点发生移动造成的,删除FT中相应条目,并将IP-X在BST中条目更新如表5所示,执行步骤500;
表5.SAVI-X的BST中更新后的IP-X条目
其中,Probe表示相应端口正在进行探测;MAX_PROBE_RESPONSE_TIME表示等待回声响应时间;DHCP或者NO_DHCP,标识本网段地址分配方式是DHCP或者非DHCP。
步骤500.所述SAVI-1向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若没有收到相应的回声应答,说明IP-X或MAC-X是不可通信的虚假地址,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若收到回声应答,说明IP-X和MAC-X是可通信地址,需要根据步骤400是否已经被执行过(即是由步骤400执行到步骤500,还是由步骤200直接跳到步骤500)进行区分处理:
■若步骤400已经执行过,则将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime(如表6所示),执行步骤800;
表6.SAVI-X的BST中更新后的IP-X条目
其中,Bound表示绑定已经建立;Lifetime在DHCP网络中设为Lease time,表示DHCP服务器为节点分配的地址使用的租期;Lifetime在SLAAC网络中设为Prefix lifetime,表示路由器为节点指定的网络前缀的使用期限;本地链路地址的Lifetime应设为INFINITE,表示永久有效。
■若步骤400未执行过,则触发BST表中为IP-X建立新的条目(如表7所示),并执行步骤600:
表7.SAVI-X的BST中新加入的IP-X条目
其中,Add表示该条目处于补充绑定状态,这是标识条目的一种状态,标识BST中该条目正在执行补充绑定过程,后面的lifetime的时长设为MAX_SAVI_QUERY_TIME是用来标识该条目的过期时间,只有在lifetime到期之前该条目的state成功的变成Bound,才会将该条目的地址加入FT表中,FT表就是过滤表,正如步骤300中进行的一系列判断一样,BST表是用来控制FT表中条目存在性的;MAX_SAVI_REQUEST_TIME,表示等待其他SAVI设备回复的最大时间。
本发明中SAVI设备通过回声请求来探测待绑定地址或已绑定地址的可通信性,该回声请求封帧时直接采用FT中对应的MAC Address作为目的二层地址,并且通过对应的端口anthor发送出去。为了使IPv4和IPv6情况下都能检测邻居的可达性,选用了二者均有的ICPM查询报文进行探测。SAVI设备在收到源地址缺乏绑定的数据分组时不是简单的丢弃或新建绑定,而是需要先探测源地址的可达性,即源地址是否可通信,再决定是否需要进行后续的验证过程。这样可以有效的防止恶意节点使用虚假的不可通信地址。另外,为了不改变现行机制,只有SAVI设备发起的回声请求采用FT表中对应的MAC Address作为目的二层地址封帧,对于其他消息不做此要求。
步骤600.SAVI-1发送SAVI查询报文,向其他SAVI设备查询IP-X的绑定情况,此时的查询方式有两种,可根据网络情况和需求进行选择:
SAVI多播查询
SAVI多播查询方式需要子网内的所有SAVI设备加入一个多播组,SAVI设备之间通过多播地址进行通信。
图3是本发明中SAVI多播查询的步骤流程图,如图3所示,图中“SAVI-1”表示收到缺乏源地址绑定数据分组的SAVI设备;“SAVI-2”表示子网内除了SAVI-1以外的每个SAVI设备;“Host-Y”表示已在SAVI-2上绑定过的主机。
1.SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的三层地址IP-X和二层地址MAC-X;
2.收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,即发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,即发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,则将本地BST中相应条目更新如表8所示,并执行步骤3:
表8.SAVI-2的BST中更新后的IP-X条目
3.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
4.如果SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,说明原始绑定地址已不再活跃,删除本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则,即从端口Anchor-Y收到来自Host-Y的回声应答,向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
5.SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
如果SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,说明IP-X是假冒子网内其他节点的IP地址,SAVI-1删除本地BST中相应条目;
如果SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,说明IP-X已经通过其他SAVI授权,但原始绑定节点已不可达,有可能是网络拓扑发生了变化或者是节点发生了移动,需要重新绑定,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime(如表9所示);
表9.SAVI-1的BST中更新后的IP-X条目
如果SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,说明IP-X和MAC-X均是假冒子网内正在通信的其他节点的地址,SAVI-1删除本地BST中相应条目;
如果SAVI-1没有收到过任何SAVI回复报文,表明子网内其他SAVI设备均没有授权过该IP地址,这时需要查看SAVI-1本地BST中IP-X对应条目的Other属性:
如果Other为DHCP,则SAVI-1删除本地BST中相应条目;
如果Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime(如表10所示):
表10.SAVI-1的BST中更新后的IP-X条目
为同一子网内所有SAVI设备分配一个多播地址,当一个SAVI设备收到源地址在本地缺乏绑定的数据分组时,通过这个多播地址与其他SAVI设备进行通信,查询该源地址在其他SAVI设备中的绑定情况,有效的防止冒用同一子网内地址情况的发生。
SAVI多播查询操作轻巧可靠,同时适用于SLAAC和DHCP网络。但是SAVI多播查询在DHCP网络中应用时需要所有SAVI设备始终保持在连接,并且不能断电或不发生重启。因为子网内SAVI设备缓存中的BST和FT记录了DHCP授权的地址信息。换句话说,即所有SAVI设备中记录的IP地址的集合就是DHCP服务器授权给这个子网的全部的IP地址。这种情况下,一个在子网内所有SAVI设备中均未记录的IP地址必定是一个伪造的地址。这正是SAVI多播查询的严谨之处所在,也是其不足所在。针对这种不足,本发明又提出了另一种适用于DHCP网络环境的SAVI中心查询。
SAVI中心查询:
引入SAVI中心集中管理子网内所有SAVI设备的绑定信息,弥补了多播查询在DHCP网络的不足;适用于DHCP网络,不推荐在SLAAC网络中使用。
SAVI中心查询需要在子网中引入SAVI中心服务器,实现对整个子网范围内SAVI设备的集中管理。SAVI中心服务器主要记录各个SAVI设备缓存中的绑定关系,在任何一个SAVI设备不可用或重启后绑定状态丢失的情况下,SAVI中心仍可提供可靠的绑定和地址授权信息。这种策略在DHCP分配地址的网络环境中非常具有实用性,SAVI中心可部署在DHCP服务器或DHCP代理上。
SAVI中心服务器维护一个SAVI信息表,表中存储着下列信息:
IP Address:网络节点IP地址
MAC Address:网络节点二层地址
SAVI Address:网络节点IP地址所绑定的SAVI设备地址
SAVI Anchor:网络节点IP地址所绑定的SAVI设备端口号
SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息,这样SAVI中心的SAVI信息表中就存储了整个网络的地址授权信息,未在SAVI信息表中记录的IP地址都是伪造的地址。FT中的条目绑定解除时也需要向SAVI中心汇报,保证SAVI中心及时删除无效的绑定信息。
图4是本发明中SAVI中心查询方法的步骤流程图,如图4所示,图中“SAVI-1”表示收到源地址缺乏绑定数据分组的SAVI设备;“SAVI中心”表示SAVI中心服务器;“SAVI-2”表示子网内除了SAVI-1以外的SAVI设备;“Host-Y”表示已在SAVI-2上绑定过的主机。
1.SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
2.SAVI中心根据IP-X查询SAVI信息表:
若未找到关于IP-X的记录,说明IP-X是一个伪造的地址,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,说明MAC-X是伪造的地址,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
否则,即查找发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定(如表11所示),执行下步:
表11.SAVI信息表中关于IP-X的条目
3.SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址Address(IP-X)、MAC Address(MAC-X)以及SAVI Anchor(Anchor-Y);
4.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
5.若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
6.SAVI中心如果收到了回复SAVI-CReply-Unreachable,说明原始绑定节点已不可达,可能是网络拓扑发生了变化(如节点进行了移动),SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,说明原始绑定节点依然可达,Host-X假冒Host-Y的地址,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心如果没有收到任何回复,说明SAVI-2可能发生故障或已经掉线,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
7.SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time(如表12所示),并向SAVI中心汇报绑定信息:
表12.SAVI-1的BST中更新后的IP-X条目
SAVI设备与SAVI中心之间的通信需要某种策略认证双方身份的合法性,并且整个过程需要进行速率控制,防止发生DoS攻击。
子网内SAVI设备缓存中的BST和FT记录了DHCP授权的地址信息,在DHCP网络中,一个子网内所有SAVI设备都未记录的IP地址必定是一个伪造的地址。但是SAVI设备断电或重启将导致其缓存的绑定状态丢失,则之前已经与其建立绑定的IP地址就会无辜的成为“伪造地址”。为了防止这种情况的发生,引入SAVI中心服务器来集中管理整个子网范围内SAVI设备。SAVI中心服务器主要记录各个SAVI设备缓存中的绑定关系,在任何一个SAVI设备不可用或重启后绑定状态丢失的情况下,SAVI中心仍可提供可靠的绑定信息。
步骤700.收集SAVI回复信息,根据回复结果进行后续处理:
SAVI-1若将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程。
SAVI-1若将BST中相应条目的State更新为Bound,Lifetime更新为Leasetime或Prefix lifetime,则执行步骤800;
步骤800.将SAVI-1端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至FT中:
表7.SAVI-1的FT中新加入的IP-X条目
相应于本发明的一种源地址验证方法,还提供一种源地址验证系统,图5是本发明的一种源地址验证系统的结构示意图,如图5所示,所述系统,包括:至少一个主机(Host-X、Host-Y)和至少一个SAVI设备(SAVI-1、SAVI-2),其中,所述SAVI设备,包括:
接收模块1,用于接收由所述SAVI设备的属性为SAVI-Validation的端口Anchor-X接收到的其对应主机Host-X发来的数据分组;
信息提取模块2.用于提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;
探测交互模块3,用于根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
所述探测交互模块3,包括:
注册判断模块31,用于查询本地过滤表,判断所述IP-X是否在本地注册过,若是则触发匹配验证模块32;否则触发通信验证模块33;
匹配验证模块32,用于执行验证注册的通信路径与所述Anchor-X、所述IP-X和所述MAC-X构成的通信路径是否匹配的步骤;
通信验证模块33.用于执行丢弃所述数据分组,验证所述Anchor-X、所述IP-X和所述MAC-X是否为合法通信路径的步骤。
其中,所述匹配验证模块32,包括:
过滤模块321.用于判断在过滤表中对应的MAC Address是否是MAC-X,若不是,则丢弃所述数据分组,结束验证流程;若是,那么若对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若对应的端口号是Anchor-Z,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,触发探测模块322;
探测模块322.用于向所述端口Anchor-Z发送回声请求报文,探测本地过滤表项中原始绑定地址:端口Anchor-Z、所述IP-X和所述MAC-X是否能够继续通信,若收到相应的回声应答,将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,删除本地过滤表中相应条目,并将IP-X在本地BST中条目更新,触发通信验证模块33。
其中,所述通信验证模块33,包括:
回声请求模块331.用于向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若否,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若是,则触发判断模块332:
判断模块332.判断所述IP-X是否在所述设备SAVI-1中注册过,若是触发更新模块333;否则触发查询模块334;
更新模块333.用于将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,触发添加模块335;
查询模块334,用于将端口Anchor-X的属性修改为SAVI-AddBinding;在本地BST表中为IP-X建立新的条目,执行向其他设备SAVI查询IP-X的绑定情况的步骤;
添加模块335,用于将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至本地过滤表中。
所述查询模块334,包括:
查询报文发送模块3341,用于发送SAVI查询报文,根据网络情况和需求选择SAVI多播查询或者SAVI中心查询方式,向其他SAVI设备查询IP-X的绑定情况;
信息收集模块3342,用于收集其他SAVI设备的回复信息,根据回复结果进行后续处理:
若SAVI-1将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;
若SAVI-1将BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,则触发添加模块335。
所述查询报文发送模块3341,包括:多播查询模块和中心查询模块,其中:
所述多播查询模块,执行下列步骤:
SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的源IP地址IP-X和二层MAC地址MAC-X;
收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,SAVI-2将本地BST中相应条目更新,并执行下一步骤:
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信,若SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,删除SAVI-2本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,SAVI-1删除本地BST中相应条目;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,SAVI-1删除本地BST中相应条目;
若SAVI-1没有收到过任何SAVI回复报文,查看SAVI-1本地BST中IP-X对应条目的Other属性,若Other为DHCP,则SAVI-1删除本地BST中相应条目;若Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime;
所述中心查询模块,执行下列步骤:
在子网中引入SAVI中心服务器,用于存储整个网络的地址授权信息,SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息;
SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
SAVI中心根据IP-X查询SAVI信息表;
若未找到关于IP-X的记录,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定,执行下一步骤;
SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址IP-X、MAC-X以及Anchor-Y;
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
SAVI中心若收到了回复SAVI-CReply-Unreachable,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心若没有收到任何回复,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息。
其中,SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
实施例一
节点发生移动,但未触发地址分配过程导致节点发出的数据分组缺乏源地址绑定,本发明能够灵活良好地为这种情况的节点建立新的绑定,删除旧有绑定。图6为节点移动的实例示意图,如图6所示。
通过Hub与SAVI-1端口Anchor-Z相连的主机Host-X,由于某种原因移到了SAVI-1的端口Anchor-X。Host-X的IP地址IP-X在初始地址分配过程中通过Anchor-Z进行了绑定,而这个移动过程不会触发地址分配过程。此时Host-X发往网络中的数据分组将通过Anchor-X,SAVI-1检查本地FT表,发现IP-X未与Anchor-X进行过绑定,就要触发本发明所定制的验证方法:
1.SAVI-1发现IP-X在本地FT中,但对应的Anchor是端口Anchor-Z,MACAddress为MAC-X,BST中相应的条目如下:
2.SAVI-1将Anchor-X的属性改为SAVI-AddBinding,丢弃分组;
3.SAVI-1向端口Anchor-Z发送回声请求,以IP-X为目的IP地址,MAC-X为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
4.在MAX_PROBE_RESPONSE_TIME时间内没有收到回声应答,说明是原始绑定节点已不可达,可能是发生了移动;
5.SAVI-1删除FT中原有的关于IP-X的条目,并将BST中关于IP-X的条目更新如下:
6.SAVI-1向端口Anchor-X发送回声请求,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址;
7.SAVI-1在收到来自Host-X的回声应答,说明IP-X和MAC-X是可通信地址,将本地BST中相应条目的State更新为Bound,Lifetime更新为Leasetime或Prefix lifetime:
8.SAVI-1将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至FT中。
实施例二
二层路径发生变化,但未触发地址分配过程导致节点发出的数据分组缺乏地址绑定,本发明能够灵活良好地为这种情况的节点建立新的绑定,删除旧有绑定。图7是二层路径发生变化的实例示意图,如图7所示。
主机Host-X通过普通交换机与SAVI-1和SAVI-2相连,初始地址分配的控制分组通过SAVI-2发送至网络其他部分,即Host-X的地址IP-X绑定在SAVI-2的端口Anchor-Y。由于某种原因SAVI-2与普通交换机之间的链路发生了故障,Host-X的数据分组只能通过SAVI-1发往网络其他部分。此时并不会触发地址重新配置过程,故IP-X在SAVI-1处没有绑定,就要触发本发明所定制的验证策略。下面详细说明在SAVI多播查询方式下的验证流程:
1.SAVI-1提取数据分组中的源IP地址(IP-X)和源二层地址(MAC-X),发现IP-X不在FT表中,则将Anchor-X端口属性改为SAVI-AddBinding,丢弃分组;
2.SAVI-1向端口Anchor-X发送回声请求,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X或MAC-X是否是可通信地址;
3.SAVI-1收到来自Host-X的回声应答,说明IP-X和MAC-X是可通信地址,触发BST表中为IP-X建立新的条目:
4.SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的地址,即IP-X和MAC-X;
5.SAVI-2收到SAVI查询报文,提取出需要查询的地址IP-X和MAC-X,然后在自身本地的FT表中进行查找;
6.SAVI-2发现Host-X已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址正好是MAC-X:
7.SAVI-2将本地BST中相应条目的State更新为Probe,Lifetime更新为MAX_PROBE_RESPONSE_TIME:
8.SAVI-2向Anchor-Y发送回声请求,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
9.SAVI-2没有收到来自Host-X的回声应答,则删除本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,携带IP-X;
10.SAVI-1收到SAVI-MReply-Unreachable,说明IP-X已经通过其他SAVI授权,但原始绑定节点已不可达,有可能是网络拓扑发生了变化或者是节点发生了移动,需要重新绑定,于是将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime:
11.SAVI-1将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至FT中。
实施例三
针对实施例二中的缺乏绑定情况,在DHCP网络中,还可采用SAVI中心查询流程进行验证:
1.SAVI-1提取数据分组中的源IP地址(IP-X)和源二层地址(MAC-X),发现IP-X不在FT表中;
2.SAVI-1将Anchor-X端口属性改为SAVI-AddBinding,并向Anchor-X发送回声请求,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X或MAC-X是否是可通信地址;
3.SAVI-1收到来自Host-X的回声应答,说明IP-X和MAC-X是可通信地址,触发BST表中为IP-X建立新的条目:
4.SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
5.SAVI中心查询SAVI信息表,发现IP-X和MAC-X已在SAVI-2的Anchor-Y端口处进行过绑定:
6.SAVI中心向SAVI-2发送SAVI单播查询,携带需要SAVI-2进行检测的地址Address(IP-X)、MAC Address(MAC-X)以及SAVI Anchor(Anchor-Y);
7.SAVI-2收到SAVI单播查询,提取出需要查询的地址,并向自身的端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
8.SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;
9.SAVI中心收到回复SAVI-CReply-Unreachable,说明原始绑定节点已不可达,可能是网络拓扑发生了变化或节点进行了移动,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
10.SAVI-1收到回复SAVI-CReply-Permit,将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息:
11.SAVI-1将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至FT中。
实施例四
在SLAAC网络中,节点生成本地链路地址或加上前缀生成全局唯一地址后,需要全网广播邻居请求(Neighbor Solicitation,NS)执行DAD,如果没有收到邻居通告(Neighbor Advertisement,NA),则说明未发生地址冲突,地址配置成功,以后就可以使用该地址进行正常通信。控制分组NS会触发SAVI设备在BST中为其源地址或携带的目标地址新建绑定条目,没有收到NA就会为其在FT中新建绑定关系条目。但是当NS丢失的情况发生时,节点固然收不到NA。节点就会默认为没有检测到冲突地址,地址配置成功,可以使用该源地址进行正常通信了;而与节点相连的第一个SAVI设备并没有接收到NS,自然不会为该地址建立绑定关系,造成了该节点发送过来的数据分组的源地址在SAVI设备处缺乏地址绑定的情况。此时就要触发本发明所定制的验证方法。图8是控制分组丢失的示例例示意图,如图8所示。
此处为网络环境为SLAAC,采用SAVI多播查询方式进行验证:
1.SAVI-1提取数据分组中的源IP地址(IP-X)和源二层地址(MAC-X),发现IP-X不在FT表中;
2.SAVI-1将Anchor-X端口属性改为SAVI-AddBinding,并向Anchor-X发送回声请求,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X或MAC-X是否是可通信地址;
3.SAVI-1收到来自Host-X的回声应答,说明IP-X和MAC-X是可通信地址,触发BST表中为IP-X建立新的条目:
4.SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的地址,即IP-X和MAC-X;
5.子网中的其他SAVI设备中均无IP-X的记录,都保持沉默;
6.SAVI-1没有收到过任何SAVI回复报文,表明子网内其他SAVI设备均没有授权过该IP地址;
7.SAVI-1查看本地BST中IP-X对应条目的Other为NO_DHCP,则将其对应的State更新为Bound,Lifetime更新为Prefix lifetime:
8.SAVI-1将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至FT中。
本发明的有益效果在于:
1.采用本发明的一种源地址验证方法和系统,SAVI设备在收到一个缺乏源地址绑定的数据分组时,不是简单的丢弃或新建绑定,而是通过SAVI设备主动发起的探测和可信的SAVI之间的协商和信令交互来决定是否为这个源地址建立新的绑定条目;
2.本发明还需要将正在进行SAVI补充绑定验证的端口属性设置为SAVI-AddBinding,拥有该属性的SAVI设备端口将直接丢弃收到的缺乏源地址绑定的数据分组,通过这种速率控制来抵御DoS攻击;
3.本发明所有功能均在SAVI模块实现,SAVI模块独立于交换机其他功能模块,不需要对交换机现有功能进行任何修改,只需简单加载SAVI模块即可;也不需要对现有主机进行任何修改,具有实际可实施性;
4.本发明引入的网络开销很小,对现有网络提供的最大贡献是通过少量额外的信令交互提高整个子网的性能,易于部署、可行性高。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
Claims (15)
1.一种源地址验证方法,其特征在于,所述方法,包括下列步骤:
步骤10)0).设备SAVI-1的属性为SAVI-Validation的端口Anchor-X接收到其所连接的主机Host-X发来的数据分组,提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;
步骤200.所述设备SAVI-1根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
2.根据权利要求1所述的源地址验证方法,其特征在于,所述步骤200,包括下列步骤:
步骤210.所述设备SAVI-1查询本地过滤表,判断所述IP-X是否在所述设备SAVI-1中注册过,若是则执行步骤220;否则执行步骤230;
步骤220.验证注册的通信路径与所述Anchor-X、所述IP-X和所述MAC-X构成的通信路径是否匹配的步骤;
步骤230.丢弃所述数据分组,验证所述Anchor-X、所述IP-X和所述MAC-X是否为合法通信路径的步骤。
3.根据权利要求2所述的源地址验证方法,其特征在于,所述步骤220,包括下列步骤:
步骤221.判断在过滤表中对应的MAC Address是否是MAC-X,若不是,则丢弃所述数据分组,结束验证流程;若是,那么若对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若对应的端口号是Anchor-Z,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,执行步骤222;
步骤222.所述SAVI-1向所述端口Anchor-Z发送回声请求报文,探测本地过滤表项中原始绑定地址:端口Anchor-Z、所述IP-X和所述MAC-X是否能够继续通信,若收到相应的回声应答,将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,删除本地过滤表中相应条目,并将IP-X在本地BST中条目更新,执行步骤230;
4.根据权利要求2或3所述的源地址验证方法,其特征在于,所述步骤230,包括下列步骤:
步骤231.所述SAVI-1向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若否,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若是,则执行步骤232:
步骤232.判断所述IP-X是否在所述设备SAVI-1中注册过,若是执行步骤233;否则执行步骤234;
步骤233.将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,执行步骤235;
步骤234,将端口Anchor-X的属性修改为SAVI-AddBinding;在本地BST表中为IP-X建立新的条目,执行向其他设备SAVI查询IP-X的绑定情况的步骤;
步骤235.将SAVI-1端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至本地过滤表中。
5.根据权利要求4所述的源地址验证方法,其特征在于,步骤234中,所述向其他设备SAVI查询IP-X的绑定情况的步骤,包括:
SAVI-1发送SAVI查询报文,根据网络情况和需求选择SAVI多播查询或者SAVI中心查询方式,向其他SAVI设备查询IP-X的绑定情况;
收集其他SAVI设备的回复信息,根据回复结果进行后续处理:
若SAVI-1将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;
若SAVI-1将BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,则执行步骤235。
6.根据权利要求5所述的源地址验证方法,其特征在于,所述SAVI多播查询,包括下列步骤:
步骤2341.SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的源IP地址IP-X和二层MAC地址MAC-X;
步骤2342.收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,SAVI-2将本地BST中相应条目更新,并执行步骤2343:
步骤2343.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信,若SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,删除SAVI-2本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
步骤2345.SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,SAVI-1删除本地BST中相应条目;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,SAVI-1删除本地BST中相应条目;
若SAVI-1没有收到过任何SAVI回复报文,查看SAVI-1本地BST中IP-X对应条目的Other属性,若Other为DHCP,则SAVI-1删除本地BST中相应条目;若Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime。
7.根据权利要求5所述的源地址验证方法,其特征在于,所述SAVI中心查询,包括下列步骤:
步骤2346.在子网中引入SAVI中心服务器,用于存储整个网络的地址授权信息,SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息;
步骤2347.SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
步骤2348.SAVI中心根据IP-X查询SAVI信息表:
若未找到关于IP-X的记录,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定,执行步骤2349;
步骤2349.SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址IP-X、MAC-X以及Anchor-Y;
步骤23410.SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
步骤23411.SAVI中心若收到了回复SAVI-CReply-Unreachable,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心若没有收到任何回复,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
步骤23412.SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息。
8.根据权利要求7所述的源地址验证方法,其特征在于,SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
9.一种源地址验证系统,包括:至少一个主机和至少一个SAVI设备,其特征在于,所述SAVI设备,包括:
数据接收模块,用于接收由所述SAVI设备的属性为SAVI-Validation的端口Anchor-X接收到的其所连接的主机Host-X发来的数据分组;
信息提取模块.用于提取所述数据分组中的源IP地址IP-X和源二层地址MAC-X;
探测交互模块,用于根据端口、源IP地址和源二层地址,向相应端口主动发起探测或者和可信的设备SAVI之间进行协商和信令交互,验证所述数据分组的源地址的合法性,决定是否为这个源地址建立新的绑定。
10.根据权利要求9所述的源地址验证系统,其特征在于,所述探测交互模块,包括:
注册判断模块,用于查询本地过滤表,判断所述IP-X是否在本地注册过,若是则触发匹配验证模块;否则触发通信验证模块;
匹配验证模块,用于执行验证注册的通信路径与所述Anchor-X、所述IP-X和所述MAC-X构成的通信路径是否匹配的步骤;
通信验证模块,用于执行丢弃所述数据分组,验证所述Anchor-X、所述IP-X和所述MAC-X是否为合法通信路径的步骤。
11.根据权利要求10所述的源地址验证系统,其特征在于,所述匹配验证模块,包括:
过滤模块.用于判断在过滤表中对应的MAC Address是否是MAC-X,若不是,则丢弃所述数据分组,结束验证流程;若是,那么若对应的端口号Anchor是Anchor-X,则通过验证,结束验证流程;若对应的端口号是Anchor-Z,则丢弃所述数据分组,将端口Anchor-X的属性修改为SAVI-AddBinding,触发探测模块;
探测模块.用于向所述端口Anchor-Z发送回声请求报文,探测本地过滤表项中原始绑定地址:端口Anchor-Z、所述IP-X和所述MAC-X是否能够继续通信,若收到相应的回声应答,将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;否则,删除本地过滤表中相应条目,并将IP-X在本地BST中条目更新,触发通信验证模块。
12.根据权利要求10所述的源地址验证系统,其特征在于,所述通信验证模块,包括:
回声请求模块.用于向端口Anchor-X发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,检测IP-X和MAC-X是否是可通信地址,若否,则将SAVI-1的端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;若是,则触发判断模块:
判断模块.判断所述IP-X是否在所述设备SAVI-1中注册过,若是触发更新模块;否则触发查询模块;
更新模块.用于将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,触发添加模块;
查询模块,用于将端口Anchor-X的属性修改为SAVI-AddBinding;在本地BST表中为IP-X建立新的条目,执行向其他设备SAVI查询IP-X的绑定情况的步骤;
添加模块,用于将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,并将BST中相应条目的Anchor、MAC Address、Address提取出来,添加至本地过滤表中。
13.根据权利要求12所述的源地址验证系统,其特征在于,所述查询模块,包括:
查询报文发送模块,用于发送SAVI查询报文,根据网络情况和需求选择SAVI多播查询或者SAVI中心查询方式,向其他SAVI设备查询IP-X的绑定情况;
信息收集模块,用于收集其他SAVI设备的回复信息,根据回复结果进行后续处理:
若SAVI-1将BST中相应条目删除,则将端口Anchor-X的属性由SAVI-AddBinding改回SAVI-Validation,结束验证流程;
若SAVI-1将BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime,则触发添加模块。
14.根据权利要求13所述的源地址验证系统,其特征在于,所述查询报文发送模块,包括:多播查询模块和中心查询模块,其中:
所述多播查询模块,执行下列步骤:
SAVI-1向整个子网SAVI多播地址发送SAVI查询报文,携带需要查询的源IP地址IP-X和二层MAC地址MAC-X;
收到SAVI查询报文的SAVI-2从报文中提取出需要查询的地址IP-X和MAC-X,根据IP-X在本地的FT中进行查找:
如果没有找到,则保持沉默,不执行任何动作;
如果找到对应条目,发现Host-Y已经通过相应端口Anchor-Y获得过IP-X,但对应的MAC Address不是MAC-X,则向SAVI-1发送SAVI-MReply-AddrError,并携带IP-X和MAC-X;
如果找到对应条目,发现Host-Y已经通过自身的端口Anchor-Y获得过IP-X,且对应的二层地址为MAC-X,SAVI-2将本地BST中相应条目更新,并执行下一步骤:
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信,若SAVI-2在MAX_PROBE_RESPONSE_TIME时间内没有收到来自Host-Y的回声应答,删除SAVI-2本地BST和FT表中对应条目,向SAVI-1发送SAVI-MReply-Unreachable,并携带IP-X;否则向SAVI-1发送SAVI-MReply-Reachable,并携带IP-X;
SAVI-1收集SAVI回复报文,进行一系列判断和后续处理:
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到了SAVI-MReply-AddrError回复,SAVI-1删除本地BST中相应条目;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-MReply-Unreachable,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Lease time或Prefix lifetime;
若SAVI-1在MAX_SAVI_REQUEST_TIME时间内收到SAVI-Reply-Reachable,SAVI-1删除本地BST中相应条目;
若SAVI-1没有收到过任何SAVI回复报文,查看SAVI-1本地BST中IP-X对应条目的Other属性,若Other为DHCP,则SAVI-1删除本地BST中相应条目;若Other为NO_DHCP,则SAVI-1将本地BST中相应条目的State更新为Bound,Lifetime更新为Prefix lifetime;
所述中心查询模块,执行下列步骤:
在子网中引入SAVI中心服务器,用于存储整个网络的地址授权信息,SAVI设备每次新建一个FT绑定条目时均需向SAVI中心汇报绑定信息;
SAVI-1向SAVI中心发送SAVI中心查询请求,携带IP-X和MAC-X;
SAVI中心根据IP-X查询SAVI信息表;
若未找到关于IP-X的记录,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若找到了关于IP-X的记录,但对应的MAC Address不是MAC-X,SAVI中心向SAVI-1回复SAVI-CReply-AddrError消息;
若发现主机Host-Y已经通过IP-X和MAC-X在SAVI-2的Anchor-Y端口处进行过绑定,执行下一步骤;
SAVI中心向SAVI-2发送可达性检测请求,携带需要SAVI-2进行检测的地址IP-X、MAC-X以及Anchor-Y;
SAVI-2向端口Anchor-Y发送回声请求报文,以IP-X作为目的IP地址,MAC-X作为目的二层地址封装成帧,探测原始绑定地址是否能够继续通信;
若SAVI-2没有收到相应的回声应答,删除本地BST和FT中对应条目,向SAVI中心发送SAVI单播回复SAVI-CReply-Unreachable,携带检测的地址IP-X;否则,SAVI-2向SAVI中心发送SAVI单播回复SAVI-CReply-Reachable,携带检测的地址IP-X;
SAVI中心若收到了回复SAVI-CReply-Unreachable,SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;SAVI中心如果收到回复SAVI-CReply-Reachable,SAVI中心向SAVI-1发送SAVI-CReply-Prohibit回复;SAVI中心若没有收到任何回复,则SAVI中心删除SAVI信息表中对应条目,并向SAVI-1发送SAVI-CReply-Permit回复;
SAVI-1若收到SAVI-CReply-Prohibit回复,则删除本地BST中相应条目;若SAVI-1收到SAVI-CReply-Permit回复,则将BST中相应条目的State更新为Bound,Lifetime更新为Lease time,并向SAVI中心汇报绑定信息。
其中,SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
15.根据权利要求14所述的源地址验证系统,其特征在于,所述SAVI设备与SAVI中心之间的通信需要策略认证双方身份的合法性,并且整个过程需要进行速率控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620015 CN102014142B (zh) | 2010-12-31 | 2010-12-31 | 一种源地址验证方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620015 CN102014142B (zh) | 2010-12-31 | 2010-12-31 | 一种源地址验证方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102014142A true CN102014142A (zh) | 2011-04-13 |
CN102014142B CN102014142B (zh) | 2013-01-30 |
Family
ID=43844152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010620015 Expired - Fee Related CN102014142B (zh) | 2010-12-31 | 2010-12-31 | 一种源地址验证方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102014142B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201951A (zh) * | 2011-06-15 | 2011-09-28 | 杭州华三通信技术有限公司 | 一种源地址重复性检测方法和设备 |
CN102255804A (zh) * | 2011-07-06 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | 报文处理方法、装置及网络设备 |
CN106330894A (zh) * | 2016-08-22 | 2017-01-11 | 赛尔网络有限公司 | 基于本地链路地址的savi代理认证系统及方法 |
CN107493234A (zh) * | 2016-06-12 | 2017-12-19 | 阿里巴巴集团控股有限公司 | 一种基于虚拟网桥的报文处理方法以及装置 |
CN108156157A (zh) * | 2017-12-26 | 2018-06-12 | 浙江宇视科技有限公司 | 一种监控设备自适应兼容方法及装置 |
CN109089263A (zh) * | 2018-07-25 | 2018-12-25 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN111404888A (zh) * | 2020-03-04 | 2020-07-10 | 清华大学 | 网络数据审计方法和装置 |
CN112468475A (zh) * | 2020-11-19 | 2021-03-09 | 清华大学 | 一种接入子网源地址验证方法及系统 |
CN112929279A (zh) * | 2021-03-09 | 2021-06-08 | 清华大学 | 互联网域内源地址验证表的分布式生成方法和装置 |
CN114745174A (zh) * | 2022-04-11 | 2022-07-12 | 中国南方电网有限责任公司 | 电网设备的接入验证系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101098227A (zh) * | 2006-06-30 | 2008-01-02 | 中兴通讯股份有限公司 | 一种宽带接入设备的用户安全防护方法 |
US20080049679A1 (en) * | 2006-08-22 | 2008-02-28 | Samsung Electronics Co., Ltd. | Apparatus and method for filtering packet in a network system using mobile ip |
CN101170564A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 端到端自动同步的防止ip源地址伪造的方法 |
CN101621513A (zh) * | 2009-07-20 | 2010-01-06 | 清华大学 | 规范接入子网内源地址验证方案的方法 |
-
2010
- 2010-12-31 CN CN 201010620015 patent/CN102014142B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101098227A (zh) * | 2006-06-30 | 2008-01-02 | 中兴通讯股份有限公司 | 一种宽带接入设备的用户安全防护方法 |
US20080049679A1 (en) * | 2006-08-22 | 2008-02-28 | Samsung Electronics Co., Ltd. | Apparatus and method for filtering packet in a network system using mobile ip |
CN101170564A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 端到端自动同步的防止ip源地址伪造的方法 |
CN101621513A (zh) * | 2009-07-20 | 2010-01-06 | 清华大学 | 规范接入子网内源地址验证方案的方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201951B (zh) * | 2011-06-15 | 2014-06-25 | 杭州华三通信技术有限公司 | 一种源地址重复性检测方法和设备 |
CN102201951A (zh) * | 2011-06-15 | 2011-09-28 | 杭州华三通信技术有限公司 | 一种源地址重复性检测方法和设备 |
CN102255804A (zh) * | 2011-07-06 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | 报文处理方法、装置及网络设备 |
CN102255804B (zh) * | 2011-07-06 | 2014-07-02 | 北京星网锐捷网络技术有限公司 | 报文处理方法、装置及网络设备 |
CN107493234A (zh) * | 2016-06-12 | 2017-12-19 | 阿里巴巴集团控股有限公司 | 一种基于虚拟网桥的报文处理方法以及装置 |
CN106330894B (zh) * | 2016-08-22 | 2019-11-22 | 赛尔网络有限公司 | 基于本地链路地址的savi代理认证系统及方法 |
CN106330894A (zh) * | 2016-08-22 | 2017-01-11 | 赛尔网络有限公司 | 基于本地链路地址的savi代理认证系统及方法 |
CN108156157A (zh) * | 2017-12-26 | 2018-06-12 | 浙江宇视科技有限公司 | 一种监控设备自适应兼容方法及装置 |
CN108156157B (zh) * | 2017-12-26 | 2021-06-01 | 浙江宇视科技有限公司 | 一种监控设备自适应兼容方法及装置 |
CN109089263A (zh) * | 2018-07-25 | 2018-12-25 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN109089263B (zh) * | 2018-07-25 | 2021-07-30 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN111404888A (zh) * | 2020-03-04 | 2020-07-10 | 清华大学 | 网络数据审计方法和装置 |
CN112468475A (zh) * | 2020-11-19 | 2021-03-09 | 清华大学 | 一种接入子网源地址验证方法及系统 |
CN112468475B (zh) * | 2020-11-19 | 2021-11-30 | 清华大学 | 一种接入子网源地址验证方法及系统 |
CN112929279A (zh) * | 2021-03-09 | 2021-06-08 | 清华大学 | 互联网域内源地址验证表的分布式生成方法和装置 |
CN114745174A (zh) * | 2022-04-11 | 2022-07-12 | 中国南方电网有限责任公司 | 电网设备的接入验证系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102014142B (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102014142B (zh) | 一种源地址验证方法和系统 | |
CN101572712B (zh) | 一种防止伪造报文攻击的方法和中继设备 | |
CN101827134B (zh) | 自动释放为宽带接入网内的用户设备保留的资源 | |
CN101692674B (zh) | 双栈接入的方法和设备 | |
CN101577675B (zh) | IPv6网络中邻居表保护方法及邻居表保护装置 | |
CN102165741B (zh) | 在ipv6网络中用于封锁和搜索主机的方法 | |
CN101827138B (zh) | 一种优化的ipv6过滤规则处理方法和设备 | |
CN104243472A (zh) | 具有mac表溢出保护的网络 | |
CN111107171B (zh) | Dns服务器的安全防御方法及装置、通信设备及介质 | |
CN102025734B (zh) | 一种防止mac地址欺骗的方法、系统及交换机 | |
KR20080016471A (ko) | 확장된 브릿지를 이용한 무선통신 시스템에서의 IPv6지원 방법 | |
CN101179603A (zh) | IPv6网络中用于控制用户网络接入的方法和装置 | |
CN101820432A (zh) | 无状态地址配置的安全控制方法及装置 | |
CN101471936A (zh) | 建立ip会话的方法、装置及系统 | |
CN102437946B (zh) | 一种接入控制的方法、nas设备及认证服务器 | |
CN101600001A (zh) | 基于动态主机分配协议的配置信息的获取方法和装置 | |
JP2006287299A (ja) | ネットワーク管理方法および装置並びに管理プログラム | |
CN101577723B (zh) | 一种防止邻居发现协议报文攻击的方法及装置 | |
CN102143164A (zh) | 报文中继方法、装置及基站 | |
CN102123376B (zh) | 一种源地址验证方法和系统 | |
CN101212397A (zh) | 一种确定本地移动锚点的方法、系统和网络设备 | |
CN103095858A (zh) | 地址解析协议arp报文处理的方法、网络设备及系统 | |
CN102571592A (zh) | 具有端口绑定功能的三层交换设备和数据报文转发方法 | |
CN101031133B (zh) | 一种确定移动节点归属的家乡代理的方法及装置 | |
EP2671401B1 (en) | Verification in wireless local area network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130130 Termination date: 20201231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |