技术领域
[0001] 本
发明属于
软件应用技术领域,具体涉及一种海量日志转发方法。
背景技术
[0002] 随着
云计算技术的发展,云计算
数据中心的运维和管理显得十分重要,云计算数据中心运维和管理过程中大部分需要各种设备和应用的日志信息,多个管理平台同时收集设备日志,但是当设备不支持往多个目的地址发送,这样就无法满足过个平台同时收集日志的需求,如果针对syslog日志,采用syslog日志自身转发功能,可以实现syslog日志的转发,但是转发后的日志源地址发生了改变,如果接收syslog日志的平台不支持主机链查询的话,那么该平台接收syslog日志的来源IP将表示为转发主机的IP,这样该平台就无法通过来源IP识别发送syslog日志的具体设备。
发明内容
[0003] 本发明的目的是提供一种海量日志转发方法,解决了
现有技术中存在的转发平台无法通过来源IP识别发送日志的具体设备的问题。
[0004] 本发明所采用的技术方案是,一种海量日志转发方法,具体按照以下步骤实施:
[0005] 步骤1,将日志信息网络数据包进行拦截技术处理,获取网络数据的IP包,并将获取的网络IP包放入存储网络数据包的双向链表中;
[0006] 步骤2,对步骤2获取的网络数据IP包基于网络
接口和网络协议进行网络数据包过滤技术处理,得到保留IP数据包;
[0007] 步骤3,将步骤2所得到的保留IP数据包做数据包重构,将网络协议栈中的保留IP数据包进行拷贝和
修改,拷贝重新生成的网络数据包,依然使用双向链表对其进行控制和修改;
[0008] 步骤4,对步骤3中的网络数据包多次路由转发技术处理。
[0009] 本发明的特点还在于,
[0010] 步骤1中的拦截技术具体指,网络接口中定义回调函数,当网络数据包进入网络协议栈后就会调用回调函数,该回调函数位于网络的数据链路层,在网络的数据链路层,根据网络接口定义对网络数据包进行拦截处理,获取网络数据的IP包,并将获取的网络IP包放入存储网络数据包的双向链表中。
[0011] 步骤2中的过滤技术具体指,在存储网络数据包的双向链表中,通过链路层头
指针找到链路层头信息,根据链路层头信息可找到网络接口卡所有信息,对所关心的网络接口进行网络数据包的过滤。
[0012] 网络数据包过滤是指,在存储网络数据包的双向链表中,根据数据偏移量信息获取传输层头信息、传输层头信息的内容找TCP/UDP协议信息以及UDP协议的目的端口等三个条件对网络数据包进行过滤。
[0013] 步骤3中的拷贝和修改具体指,在网络接口中定义回调函数,对网络数据包完成过滤后进行调用回调函数,在该回调函数进行网络数据包的内存空间的分配,将过滤后的网络数据包拷贝至新分配的内存空间中,拷贝重新生成的网络数据包,依然使用双向链表对其进行控制和修改。在网络数据包的双向链表中获取网络层头信息,根据网络层头信息的内容对网络数据包的目的IP地址进行修改,主要是将网络数据包的目的IP修改为转发目的地址的IP。
[0014] 步骤4中的网络数据包多次路由转发技术具体指,在日志转发系统中采用数组的形式存储
指定转发目的地址IP和网络接口等参数,以循环的形式对数组进行遍历,遍历过程中将符合转
发条件的网络数据包进行拷贝和相应的目的地址修改,将改造后的网络数据包放入数据包转发模
块中,数据包转发模块根据网络数据包的目的地址IP进行路由选择,根据相应的路由信息将网络数据包发送至修改后的目的地。
[0015] 本发明的有益效果是,一种海量日志转发方法,在海量日志转发处理过程中,解决了网络设备日志不支持多目的IP发送的问题,同时保证转发后的日志信息的源IP不被修改,确保多个平台都能够通过日志的来源IP对设备进行
定位,通过使用网络数据包的过滤技术对网络数据包拷贝和修改技术进行优化,提升了网络数据包拷贝和修改效率。
附图说明
[0016] 图1是一种海量日志转发方法转发示意图;
[0017] 图2是一种海量日志转发方法转发
流程图。
具体实施方式
[0018] 下面结合附图和具体实施方式对本发明进行详细说明。
[0019] 本发明一种海量日志转发方法,转发示意图如图1所示,发送端待转发日志通过日志转发模块被发送至日志接收端的各个应用平台,具体转发流程图如图2所示,按照以下步骤实施:
[0020] 步骤1,将日志信息网络数据包进行拦截技术处理,获取网络数据的IP包,并将获取的网络IP包放入存储网络数据包的双向链表中;
[0021] 步骤2,对步骤1获取的网络数据IP包基于网络接口和网络协议进行网络数据包过滤技术处理,得到保留IP数据包;
[0022] 步骤3,将步骤2所得到的保留IP数据包做数据包重构,将网络协议栈中的保留IP数据包进行拷贝和修改,拷贝重新生成的网络数据包,依然使用双向链表对其进行控制和修改;
[0023] 步骤4,对步骤3中的网络数据包多次路由转发技术处理。
[0024] 步骤1中的拦截技术具体指,网络接口中定义回调函数,当网络数据包进入网络协议栈后就会调用回调函数,该回调函数位于网络的数据链路层,在网络的数据链路层,根据网络接口定义对网络数据包进行拦截处理,获取网络数据的IP包,并将获取的网络IP包放入存储网络数据包的双向链表中。
[0025] 步骤2中的过滤技术具体指,在存储网络数据包的双向链表中,通过链路层头指针找到链路层头信息,根据链路层头信息可找到网络接口卡所有信息,对所关心的网络接口进行网络数据包的过滤。
[0026] 网络数据包过滤是指,在存储网络数据包的双向链表中,根据数据偏移量信息获取传输层头信息、传输层头信息的内容找TCP/UDP协议信息以及UDP协议的目的端口等三个条件对网络数据包进行过滤。
[0027] 步骤3中的拷贝和修改具体指,在网络接口中定义回调函数,对网络数据包完成过滤后进行调用回调函数,在该回调函数进行网络数据包的内存空间的分配,将过滤后的网络数据包拷贝至新分配的内存空间中,拷贝重新生成的网络数据包,依然使用双向链表对其进行控制和修改。在网络数据包的双向链表中获取网络层头信息,根据网络层头信息的内容对网络数据包的目的IP地址进行修改,主要是将网络数据包的目的IP修改为转发目的地址的IP。
[0028] 步骤4中的网络数据包多次路由转发技术具体指,在日志转发系统中采用数组的形式存储指定转发目的地址IP和网络接口等参数,以循环的形式对数组进行遍历,遍历过程中将符合转发条件的网络数据包进行拷贝和相应的目的地址修改,将改造后的网络数据包放入数据包转发模块中,数据包转发模块根据网络数据包的目的地址IP进行路由选择,根据相应的路由信息将网络数据包发送至修改后的目的地。
[0029] 经过以上四个步骤,日志信息的网络数据包只是修改了数据包中的目的地址IP,并在修改数据包目的地址IP后对网络数据包进行重新路由,所以在这个过程不修改日志信息网络数据包的来源地址IP,当日志应用接收平台接收的日志后,相对于日志应用接收平台日志转发器就像是不存在一样,其效果就是日志源直接将日志发送到多个应用平台一样。
[0030] 本发明一种海量日志转发方法,对关心的数据包进行复制后,修改数据包的目的IP,最后修改好的数据包重新放入网络协议栈中,根据目的IP进行相应的路由设置,将数据包发送至转发目的地址,从而实现日志转发功能。
[0032] 步骤1,将日志信息网络数据包进行拦截技术处理,获取网络数据的IP包,并将获取的网络IP包放入存储网络数据包的双向链表中;
[0033] 步骤2,对步骤1获取的网络数据IP包基于网络接口和网络协议进行网络数据包过滤技术处理,得到保留IP数据包;
[0034] 步骤3,将步骤2所得到的保留IP数据包做数据包重构,将网络协议栈中的保留IP数据包进行拷贝和修改,拷贝重新生成的网络数据包,依然使用双向链表对其进行控制和修改;
[0035] 步骤4,对步骤3中的网络数据包多次路由转发技术处理。
[0036] 具体命令行如下:
[0037] insmod LogForward.ko src=eth0dst=eth1,eth2dstip=1.1.1.1,2.2.2.2[0038] 上述命令的含义是:通过eth0网络接口进行数据报的接收,通过eth1将数据报转发到目的IP为1.1.1.1,通过eth2将数据报转发到目的IP为2.2.2.2。
[0039] 以上实施例仅用于说明本发明的优选实施方式,但本发明并不限于上述实施方式,在所述领域普通技术人员所具备的知识范围内,本发明的精神和原则之内所作的任何修改、等同替代和改进等,其均应涵盖在本发明
请求保护的技术方案范围之内。