一种igmp报文处理方法以及装置的制造方法

文档序号:9551215阅读:536来源:国知局
一种igmp报文处理方法以及装置的制造方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种IGMP报文处理方法以及装置。
【背景技术】
[0002] IGMP(InternetGroupManagementProtocol,互联网组管理协议)是TCP/ IP(TransmissionControlProtocol/InternetProtocol,传输控制协议 / 因特网互联协 议)协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器 之间建立、维护组播组成员关系。
[0003] 随着组播技术在网络应用的普及,对于网络设备处理突发组播报文的能力要求越 来越高,特别是在现实应用和压力测试时,对于IGMP报文要达到实时处理,才不会出现丢 包的情况。
[0004] 目前的网络设备在内核接收到的IGMP报文经过协议栈后,根据socket队列限制 的长度将一定数量的IGMP报文通过socket机制上送组播进程,等待进程依次处理。在用 户较多,或有突发IGMP组播报文时,由于socket上送队列限制,在队列排满后,则会导致后 续接收到的IGMP报文因为无法排列到队列中而被丢掉。

【发明内容】

[0005] 有鉴于此,本发明提供了一种IGMP报文处理方法以及装置来解决上述问题。
[0006] 本发明提供一种IGMP报文处理方法,应用于IGMP设备,其中该方法包括:
[0007] 调用内核接收IGMP报文,解析并提取出所述IGMP报文的指定信息;
[0008] 将所述IGMP报文的指定信息储存于缓存模块;
[0009] 在进程接收到信息获取信号时,调用进程读取并处理所述缓存模块储存的所有指 定信息。
[0010] 本发明还提供一种IGMP报文处理装置,应用于IGMP设备,其中该装置包括:
[0011] 内核调用单元,用于调用内核接收IGMP报文,解析并提取出所述IGMP报文的指定 信息;
[0012] 信息存储单元,用于将所述IGMP报文的指定信息存储于缓存模块;
[0013] 进程调用单元,用于在进程接收到信息获取信号时,调用进程读取并处理所述缓 存模块储存的所有指定信息。
[0014] 本发明提供的IGMP报文处理方法通过调用内核接收IGMP报文,提取并存储其指 定信息,同时调用进程读取并处理该指定信息,能有效减少内存占用,防止更多的IGMP报 文被丢弃。
【附图说明】
[0015] 图1是本发明IGMP报文处理装置所在网络设备的硬件架构示意图;
[0016] 图2是本发明的IGMP报文处理装置逻辑结构示意图;
[0017] 图3是本发明的IGMP报文处理方法流程示意图。
【具体实施方式】
[0018]目前的网络设备在内核接收到的IGMP报文经过协议栈后,根据socket队列限制 的长度将一定数量的IGMP报文通过socket机制上送组播进程,该一定数量的IGMP报文会 被排列在队列中等待进程依次处理。然而,内核接收报文的过程和进程处理报文的过程无 法同步进行,只有进程处理完一个报文,队列才能接收下一个报文。同时进程在处理该IGMP 报文时,只需要根据该IGMP报文中的部分信息处理即可,若将整个报文排列在队列中等待 处理则会占用很多的内存,这样就无法在待处理的队列中加入更多的IGMP报文。特别是用 户较多,或有突发IGMP组播报文时,由于socket上送队列限制,在队列排满后,则会导致后 续接收到的IGMP报文因为无法排列到队列中而被丢掉。
[0019] 针对上述问题,本发明提供了一种IGMP报文处理方案,通过调用内核接收IGMP报 文,提取出所述IGMP报文的指定信息储存于缓存模块,并通知进程读取并处理所述缓存模 块储存的所有指定信息。
[0020] 本发明提供的IGMP报文处理装置应用于IGMP设备,该IGMP设备可以是路由器、 交换机等网络设备。请参考图1,为本发明IGMP报文处理装置所在网络设备的硬件架构示 意图,该IGMP设备的基本硬件环境包括CPU、内存、转发芯片、非易失性存储器以及其他硬 件。图2为该IGMP报文处理装置的逻辑结构示意图,其从本质上说是一个逻辑装置。在本 实施方式中,以软件实现为例,该IGMP报文处理装置在逻辑层面上包括:内核调用单元、信 息存储单元以及进程调用单元。
[0021] 请参考图3,在一个示例性的实施方案中,该IGMP报文处理装置在运行过程中执 行如下处理流程:
[0022] 步骤301,内核调用单元调用内核接收IGMP报文,解析并提取出所述IGMP报文的 指定信息;
[0023] 所述内核调用单元还包括报文识别子单元,用于在中央处理器CPU调用内核接收 报文,根据报文的协议号判断该报文是何种协议的报文,并从中过滤出IGMP报文。例如, IGMP协议的协议号为"2",那么协议号为"2"的报文则为IGMP报文。
[0024] 所述内核调用单元还包括解析执行子单元,用于在根据协议号过滤出IGMP报 文之后,进一步判断接收该IGMP报文的端口是否使能IGMP功能,即端口的IGMP功能为 "down"或"up"。在各接口开启IGMP功能,即端口的IGMP功能为"up",同时内核根据自身 需要向系统申请预设大小的内存作为缓存模块,以存储待处理的IGMP的指定信息。
[0025] 本发明实施方式提供的IGMP报文处理装置会事先收集各端口的IGMP配置信息, 该IGMP配置信息包括端口的IGMP使能情况。并将收集的IGMP配置信息通过系统调用下 发至内核保存。若期间某端口的IGMP使能情况发生改变,该内核保存的IGMP配置信息也 会随之更新。
[0026] 对于内核接收的IGMP报文,首先检查内核保存的IGMP配置信息中接收该IGMP报 文端口的IGMP功能使能情况,若为"down",说明该端口未使能IGMP功能,则丢弃所述接收 的IGMP报文;若为"up",说明该端口使能IGMP功能,并对该IGMP报文进一步处理。
[0027] 具体地,在接收IGMP报文的端口使能IGMP功能的情况下,内核对接收的IGMP报 文进行解析,并提取出IGMP报文的指定信息,以调用进程对该IGMP报文进行处理。该指定 信息可以包括:所述IGMP报文的目的IP地址、所述IGMP报文的加组信息、所述IGMP报文 的离组信息以及所述IGMP报文的接收端口信息中的至少一项。
[0028] 步骤302,信息存储单元将所述IGMP报文的指定信息储存于缓存模块;
[0029] 现有技术中,当调用内核接收到IGMP报文后,根据socket队列限制的长度将一定 数量的待处理的IGMP报文整个排列在队列中。然而,进程在处理该IGMP报文时,只需要根 据该IGMP报文中的部分信息处理即可,若将整个报文排列在队列中等待处理则会占用很 多的内存。本发明实施方式根据进程处理IGMP报文的规则,将IGMP报文中进程所需要的 指定信息提取出来,并仅将该提取的指定信息存储于开启IGMP协议时所申请的内存中,即 所述缓存模块中,并不是如现有技术中将整个IGMP报文排列在处理队列中,这样就可以批 量处理更多的IGMP报文,避免丢弃较多的IGMP报文。
[0030] 由于IGMP报文可包括IGMP加组报文以及IGMP离组报文,上述缓存模块可根据 IGMP报文的不同设为多个缓存模块,或者将该缓存模块进行分区,分别存储IGMP加组报文 的指定信息以及IGMP离组报文的指定信息。例如该缓存模块可以分为igmp_join_buf以 及igmp_leave_buf,其中,igmp_join_buf用以存储从IGMP加组报文中提取出来的指定信 息,igmp_leaVe_buf用以存储从IGMP离组报文中提取出来的指定信息。
[0031] 本发明优选地实施方式中,该IGMP报文处理装置还包括信号发送单元,用于在提 取到IGMP报文的指定信息后,首先检查所述缓存模块是否为空,若该缓存模块为空,那么 可以在将该指定信息存储于缓存模块后,调用socket机制向进程发送信息获取信号,通知 进程读取该缓存模块中存储的指定信息,同时内核同步接收新的IGMP报文,解析并存储提 取其中的指定信息。
[0032] 具体地,判断缓存模块是否为空可以为:
[0033]内核在将提取的指定信息存储于缓存模块时,对所述缓存模块进行计数。在存储 第一个报文的指定信息之前,该缓存模块会被初始化为空,即计数为〇,在存储第一个报文 的指定信息之后,对该缓存模块计数为1,后续每存储一个指定信息,该计数会递增1。因此 在存储指定信息前,若该缓存计数为〇,则判断该缓存模块为空。
[0034] 在判断缓存模块为空时,将该指定信息存储于缓存模块,之后向进程发送信息获 取信号,通知进程读取该缓存模块中存储的指定信息。其中向进程发送信息获取信号可以 为:
[0035] 将接收的第一个IGMP报文通过调用socket机制发送至进程,以通知进程可以读 取该缓存模块中存储的指定信息。当然,上述判断缓存模块是
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1