安全的组播侦听者发现协议窥探方法和装置的制作方法

文档序号:7890664阅读:262来源:国知局
专利名称:安全的组播侦听者发现协议窥探方法和装置的制作方法
技术领域
本发明涉及计算机数据通信领域,尤其涉及一种安全的组播侦听者发现协议窥探 (Multicast Listener Discovery Snooping, MLD Snooping)的方法禾口装置。
背景技术
重复地址检测是节点确定即将使用的IP地址是否被另一节点使用的过程。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用的临时地址是唯一的,并且未被其他节点使用过。只要邻居请求(Neighbor Solicitation)报文发送到本地链路上,如果在规定时间内没有邻居公告(Neighbor Advertisement)报文进行应答,则认为这个临时单播地址在本地链路上是唯一的,可以分配给该接口 ;反之,这个临时地址是重复的,不能使用此地址。组播侦听者发现协议(Multicast Listener Discovery,MLD)用于IPv6路由器在其直连网段上发现组播侦听者。组播侦听者是指那些希望接收组播数据的主机节点。MLD Snooping是运行在二层设备上的IPv6组播约束机制,用于管理和控制IPv6 组播组。运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发IPv6组播数据。MLD Snooping通过二层组播将信息只转发给有需要的接收者,这样可以带来以下好处减少了二层网络中的广播报文,节约了网络带宽并增强了 IPv6组播信息的安全性。在MLD查询器选择中,如果网路上存在多个查询器,则选择IP较小者为网路上唯一的MLD查询器。如果有非法主机伪造一个源IP较小的MLD查询器,则根据MLD协议,此非法主机会被选为合法查询器。如果非法用户伪造的MLD查询器主机的MLD离开消息,则在主机离开后,还会有组播流量流向已经离开组播组的主机,这实际上会占用网络带宽,造成带宽的浪费。如果有非法主机伪造源IP发送MLD成员报告报文,将增加网路上组播路由器的 CPU负担,这实际上是一种MLD源地址欺骗以及拒绝服务攻击,因此,需要一种机制去过滤伪造源IP的MLD成员报告报文。此外,即使是拥有合法IP的主机,也可能发动MLD攻击,该主机发送大量的MLD成员报告报文,增加网路上组播路由器的CPU负担,占用大量的软件和硬件资源,这也是一种拒绝服务攻击。

发明内容
本发明的目的在于提出一种安全的组播侦听者发现协议窥探方法和装置,可以实现更具安全性的MLD Snooping。为达此目的,本发明采用以下技术方案一种安全的组播侦听者发现协议窥探方法,包括以下步骤A、接收MLD报文,判断MLD报文的类型;
B、当所述MLD报文为MLD普通组查询报文时,根据预设的信任端口判断是否对MLD 普通组查询报文进行转发;当所述MLD报文为MLD成员关系报告报文时,根据预设的每个 IP地址允许请求的最大组播组个数或通过监听重复地址检测获取的地址信息,判断是否对 MLD成员关系报告报文进行转发。步骤B中,接收到MLD普通组查询报文时,读取所述MLD普通组查询报文接收端口的端口号;判断接收端口是否为预设的信任端口,如果是信任端口,则将所述MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去;否则,丢弃所述MLD普通组查询报文。步骤B中,当接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文的源IP地址,查询所述IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数;如果超出,则丢弃所述MLD成员关系报告报文;否则,读取请求加入的组播组地址;判断所述读取的组播组地址是否在所述IP地址的请求组播组地址列表中;如果在,则直接将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去; 否则,先将所述组播组地址加入到所述IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。所述通过监听重复地址检测获取的地址信息包括,邻居公告报文以太网头部的源 MAC地址、ICMP消息部分的目标IP地址、接收所述邻居公告报文的VLANID和端口号;步骤B中,当接收到MLD成员关系报告报文时,读取携带的地址信息,包括所述MLD 成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述MLD成员关系报告报文的VLAN ID和端口号。将所述读取的地址信息与所述通过监听重复地址检测获取的地址信息进行匹配; 如能匹配,则将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,丢弃所述MLD成员关系报告报文。一种安全的组播侦听者发现协议窥探装置,所述装置包括MLD侦听模块,用于接收MLD报文,判断MLD报文的类型;第一判断模块,用于当所述MLD报文为MLD普通组查询报文时,根据预设的信任端口判断是否对所述MLD普通组查询报文进行转发;当所述MLD报文为MLD成员关系报告报文时,根据预设的每个IP地址允许请求的最大组播组个数或通过监听重复地址检测获取的地址信息,判断是否对所述MLD成员关系报告报文进行转发。所述第一判断模块用于接收到MLD普通组查询报文时,读取所述MLD普通组查询报文接收端口的端口号,判断接收端口是否为预设的信任端口,如果是信任端口,则将所述 MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去; 否则,丢弃所述MLD普通组查询报文。所述装置还包括第二判断模块,则所述第一判断模块,用于当接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文的源IP地址,查询所述IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数;如果超出,则丢弃所述MLD成员关系报告报文;否则,读取请求加入的组播组地址;
所述第二判断模块,用于判断所述读取的组播组地址是否在所述IP地址的请求组播组地址列表中;如果在,则直接将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,先将所述组播组地址加入到所述IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。所述装置还包括DAD监听模块,则所述DAD监听模块,用于通过监听重复地址检测获取地址信息,所述地址信息包括,邻居公告报文以太网头部的源MAC地址、ICMP消息部分的目标IP地址、接收所述邻居公告报文的VLAN ID和端口号;所述MLD侦听模块,用于接收到MLD成员关系报告报文时,读取携带的地址信息, 包括所述MLD成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述 MLD成员关系报告报文的VLAN ID和端口号;所述第一判断模块,用于将所述读取的地址信息与所述通过监听重复地址检测获取的地址信息进行匹配;如能匹配,则将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,丢弃所述MLD成员关系报告报文。采用本发明的技术方案,可以进行更具安全性的组播侦听者发现协议窥探,有效的解决了网络中的MLD普遍组查询欺骗、MLD源地址欺骗以及MLD成员报告报文攻击等问题。


图1是本发明具体实施方式
1提供的安全的组播侦听者发现协议窥探的方法流程示意图。图2是本发明具体实施方式
1提供的安全的组播侦听者发现协议窥探的装置结构示意图。图3是本发明具体实施方式
2提供的安全的组播侦听者发现协议窥探的方法流程示意图。图4是本发明具体实施方式
2提供的安全的组播侦听者发现协议窥探的装置结构示意图。图5是本发明具体实施方式
3提供的安全的组播侦听者发现协议窥探的方法流程示意图。图6是本发明具体实施方式
3提供的安全的组播侦听者发现协议窥探的装置结构示意图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。图1是本发明具体实施方式
1提供的安全的组播侦听者发现协议窥探的方法流程示意图。如图1所示,该方法包括步骤SlOl,接收MLD报文,判断MLD报文的类型。通过读取MLD报文类型字段中的信息,来判断所述MLD报文的类型。步骤S102,当接收的MLD报文类型属于MLD普通组查询报文时,读取所述MLD普通CN 102546670 A
组查询报文接收端口的端口号。所述接收端口的端口号是收包驱动从芯片寄存器中读取, 记录在MLD普遍组查询报文的软件格式中的端口字段中,运行在CPU的软件会从该字段中读取所述端口号。 步骤S103,判断接收端口是否为预设的信任端口。运行在CPU的软件会根据读取的端口号,判断其是否为预设的信任端口的端口号,以防止网络中的MLD普通组查询报文欺骗行为。所述预设的信任端口优选为连接组播路由器的二层端口和/或汇聚端口。当接收端口属于预设的信任端口时,执行步骤S105;否则,执行步骤S104。步骤S104,丢弃所述MLD普通组查询报文。步骤S105,将所述MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去。图2是本发明具体实施方式
1提供的安全的组播侦听者发现协议窥探的装置结构示意图。如图2所示,该装置包括MLD侦听模块201和第一判断模块202。所述MLD侦听模块201,用于接收MLD报文,判断所述MLD报文的类型。所述MLD 侦听模块201,通过读取MLD报文类型字段中的信息,判断所述MLD报文的类型,并将所述 MLD报文发送至第一判断模块202。所述第一判断模块202,用于接收到MLD普通组查询报文时,读取所述MLD普通组查询报文接收端口的端口号,从所述MLD普通组查询报文软件结构的端口字段中,读取接收端口的端口号。判断接收端口是否为预设的信任端口 ;如果是信任端口,则将所述MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去;否则, 丢弃所述MLD普通组查询报文。图3是本发明具体实施方式
2提供的安全的组播侦听者发现协议窥探的方法流程示意图。如图3所示,该方法包括以下步骤 步骤S301,接收MLD报文,判断MLD报文的类型。通过读取MLD报文类型字段中的信息,判断所述MLD报文的类型。步骤S302,当接收的MLD报文类型属于MLD成员关系报告报文时,从MLD成员关系报告报文软件格式的IP首部读取源IP地址。步骤S303,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数。查看读取的源IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数,以防止其恶意发送过多的MLD 成员关系报告报文。如果超出预设的每个IP地址允许请求的最大组播组个数,则执行步骤S303 ;否则,执行步骤S304。步骤S304,丢弃所述MLD成员关系报告报文。步骤S305,读取该IP地址请求加入的组播组地址。运行在CPU的软件继续从所述 MLD成员报告报文软件结构中的Multicast Address字段中,读取所述组播组地址。步骤S306,判断所述读取的组播组地址是否在该IP地址的请求组播组地址列表中。所述请求组播组地址列表由运行在CPU的软件自动创建,收到主机的MLD成员关系报告报文时,如果本地不存在该IP地址对应的组播组地址列表,就创建一个与该IP地址相对应的组播组地址列表,供保存该IP地址的组播组地址使用。如果所述读取的组播组地址在该IP地址对应的组播组地址列表中,则执行步骤 S307 ;否则,执行步骤S308。 步骤S307,将MLD成员关系报告报文通过接收端口所在VLAN内的所有预设的信任端口转发出去。步骤S308,先将所述读取的组播组地址加入到该IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内的所有信任端口转发出去。图4是本发明具体实施方式
2提供的安全的组播侦听者发现协议窥探的装置结构示意图。如图4所示,该装置包括MLD侦听模块401、第一判断模块402和第二判断模块 403。所述MLD侦听模块401,用于接收到MLD报文时,判断所述MLD报文的类型。所述 MLD侦听模块401,通过读取MLD报文类型字段中的信息,判断所述MLD报文的类型,并将所述MLD报文发送至第一判断模块402。所述第一判断模块402,用于接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文的源IP地址,从所述MLD成员关系报告报文软件格式的IP首部读取源IP地址。查询所述IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数;如果超出,则丢弃所述MLD成员关系报告报文;否则,读取所述IP地址请求加入的组播组地址,并发送给第二判断单元403。所述第二判断单元403,用于判断所述读取的组播组地址是否在所述IP地址的请求组播组地址列表中;如果在,则直接将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,先将所述组播组地址加入到所述IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。图5是本发明具体实施方式
3提供的安全的组播侦听者发现协议窥探的方法流程示意图。如图5所示,该方法包括以下步骤步骤S501,监听重复地址检测的过程,获取网络主机的地址信息。MLD Snooping设备开始监听网络主机的重复地址检测过程,并截获重复地址检测过程中的邻居公告报文,以获取网络主机的地址信息。所述地址信息包括,从所述邻居公告报文的以太网头部获取源MAC地址,ICMP消息部分的目标IP地址(同相对应的邻居请求报文中的目标地址字段内容相同,即这个目标地址字段填充的是邻居公告报文发送者的地址),并记录接收所述邻居公告报文的VLAN ID 和端口号。所述VLAN ID和端口号是收包驱动从芯片寄存器中读取,记录在邻居公告报文的软件格式中的端口字段和VLAN信息字段中,运行在CPU的软件会从相应字段中读取VLAN ID和端口号。步骤S502,接收MLD报文,判断MLD报文的类型。读取MLD报文类型字段中的信息,判断所述MLD报文的类型。步骤S503,当接收的MLD报文类型属于MLD成员关系报告报文时,读取所述MLD成员关系报告报文携带的地址信息,包括所述MLD成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述MLD成员关系报告报文的VLAN ID和端口号。所述VLAN ID和端口号是收包驱动从芯片寄存器中读取,记录在MLD成员关系报告报文软件格式中的端口字段和VLAN信息字段中,运行在CPU的软件会从相应字段中读取 VLAN ID和端口号。步骤S504,判断步骤S503中读取的地址信息与步骤S501中获取的地址信息是否匹配。将步骤S503中读取的MLD成员关系报告报文携带的地址信息和步骤S501中通过重复地址检测获取的地址信息进行匹配,以防止网络中的MLD源地址欺骗行为。如能匹配, 执行步骤S506,;否则,执行步骤S505。步骤S505,丢弃所述MLD成员关系报告报文。步骤S506,将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。图6是本发明具体实施方式
3提供的安全的组播侦听者发现协议窥探的装置结构示意图。如图6所示,该装置包括,MLD侦听模块601、DAD监听模块602和第一判断模块 603。所述MLD侦听模块601,用于接收MLD报文,判断MLD报文的类型。所述MLD侦听模块601,通过读取MLD报文类型字段中的信息,判断所述MLD报文的类型,并将所述MLD报文发送至第一判断模块603。所述DAD监听模块602,用于通过监听重复地址检测获取地址信息,所述地址信息包括,邻居公告报文以太网头部的源MAC地址、ICMP消息部分的目标IP地址、接收所述邻居公告报文的VLAN ID和端口号。DAD监听模块602将所述地址信息发送至第一判断模块 603。所述第一判断模块603,用于接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文携带的地址信息,读取的地址信息包括所述MLD成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述MLD成员关系报告报文的VLAN ID和端口号。将所述读取的地址信息与所述通过监听重复地址检测获取的地址信息进行匹配;如能匹配,则将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,丢弃所述MLD成员关系报告报文。采用本发明的技术方案,可以进行更具安全性的组播侦听者发现协议窥探,有效的解决了网络中的MLD普遍组查询欺骗、MLD源地址欺骗以及MLD成员报告报文攻击等问题。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种安全的组播侦听者发现协议窥探(Multicast Listener Discovery Snooping, MLD Snooping)方法,其特征在于,包括以下步骤A、接收MLD报文,判断MLD报文的类型;B、当所述MLD报文为MLD普通组查询报文时,根据预设的信任端口判断是否对MLD 普通组查询报文进行转发;当所述MLD报文为MLD成员关系报告报文时,根据预设的每个IP地址允许请求的最大组播组个数或通过监听重复地址检测(Duplicate Address Detection, DAD)获取的地址信息,判断是否对MLD成员关系报告报文进行转发。
2.根据权利要求1所述的安全的组播侦听者发现协议窥探方法,其特征在于,步骤B 中,接收到MLD普通组查询报文时,读取所述MLD普通组查询报文接收端口的端口号;判断接收端口是否为预设的信任端口,如果是信任端口,则将所述MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去;否则,丢弃所述MLD普通组查询报文。
3.根据权利要求1所述的安全的组播侦听者发现协议窥探方法,其特征在于,步骤B 中,当接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文的源IP地址,查询所述IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数;如果超出,则丢弃所述MLD成员关系报告报文; 否则,读取请求加入的组播组地址;判断所述读取的组播组地址是否在所述IP地址的请求组播组地址列表中;如果在,则直接将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则, 先将所述组播组地址加入到所述IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。
4.根据权利要求1所述的安全的组播侦听者发现协议窥探方法,其特征在于,所述通过监听重复地址检测获取的地址信息包括,邻居公告报文以太网头部的源MAC地址、ICMP 消息部分的目标IP地址、接收所述邻居公告报文的VLANID和端口号;步骤B中,当接收到MLD成员关系报告报文时,读取携带的地址信息,包括所述MLD成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述MLD成员关系报告报文的VLAN ID和端口号。
5.根据权利要求4所述的安全的组播侦听者发现协议窥探方法,其特征在于,步骤B 中,将所述读取的地址信息与所述通过监听重复地址检测获取的地址信息进行匹配;如能匹配,则将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,丢弃所述MLD成员关系报告报文。
6.一种安全的组播侦听者发现协议窥探装置,其特征在于,所述装置包括MLD侦听模块,用于接收MLD报文,判断MLD报文的类型;第一判断模块,用于当所述MLD报文为MLD普通组查询报文时,根据预设的信任端口判断是否对所述MLD普通组查询报文进行转发;当所述MLD报文为MLD成员关系报告报文时, 根据预设的每个IP地址允许请求的最大组播组个数或通过监听重复地址检测获取的地址信息,判断是否对所述MLD成员关系报告报文进行转发。
7.根据权利要求6所述的组播侦听者发现协议窥探装置,其特征在于,所述第一判断模块用于接收到MLD普通组查询报文时,读取所述MLD普通组查询报文接收端口的端口号,判断接收端口是否为预设的信任端口,如果是信任端口,则将所述MLD普通组查询报文通过接收端口所在VLAN内除接收端口之外的其他所有端口转发出去;否则,丢弃所述MLD普通组查询报文。
8.根据权利要求6所述的组播侦听者发现协议窥探装置,其特征在于,所述装置还包括第二判断模块,则所述第一判断模块,用于当接收到MLD成员关系报告报文时,读取所述MLD成员关系报告报文的源IP地址,查询所述IP地址请求的组播组列表,判断所述IP地址请求加入组播组的个数是否超出预设的每个IP地址允许请求的最大组播组个数;如果超出,则丢弃所述 MLD成员关系报告报文;否则,读取请求加入的组播组地址;所述第二判断模块,用于判断所述读取的组播组地址是否在所述IP地址的请求组播组地址列表中;如果在,则直接将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,先将所述组播组地址加入到所述IP地址的请求组播组地址列表中,再将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去。
9.根据权利要求6所述的组播侦听者发现协议窥探装置,其特征在于,所述装置还包括DAD监听模块,则所述DAD监听模块,用于通过监听重复地址检测获取地址信息,所述地址信息包括,邻居公告报文以太网头部的源MAC地址、ICMP消息部分的目标IP地址、接收所述邻居公告报文的VLAN ID和端口号;所述MLD侦听模块,用于接收到MLD成员关系报告报文时,读取携带的地址信息,包括所述MLD成员关系报告报文IP首部的源IP地址、以太网头部的源MAC地址、接收所述MLD 成员关系报告报文的VLAN ID和端口号。
10.根据权利要求9所述的组播侦听者发现协议窥探装置,其特征在于,所述第一判断模块,用于将所述读取的地址信息与所述通过监听重复地址检测获取的地址信息进行匹配;如能匹配,则将MLD成员关系报告报文通过接收端口所在VLAN内预设的信任端口转发出去;否则,丢弃所述MLD成员关系报告报文。
全文摘要
本发明公开了一种安全的组播侦听者发现协议窥探方法和装置,通过设置信任端口,只有从信任端口收到的MLD普遍组查询报文才被转发;启用重复地址检测监听并获取主机地址信息,如果收到的MLD成员关系报告报文,其源主机地址信息不在主机地址信息表中,则将报文丢弃;预设每个IP地址可请求组播组的最大个数,超过最大请求个数的报文将被丢弃。本发明有效解决了网络中的MLD普遍组查询欺骗、MLD源地址欺骗和MLD成员报告报文攻击等问题。
文档编号H04L29/06GK102546670SQ20121005220
公开日2012年7月4日 申请日期2012年3月1日 优先权日2012年3月1日
发明者梁小冰 申请人:神州数码网络(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1