一种用于数据包转发的模型的制作方法

文档序号:7982327阅读:207来源:国知局
一种用于数据包转发的模型的制作方法【专利摘要】本发明涉及一种用于数据包转发的模型,该模型包括:Java数据模块:用于完成用户空间与Linux内核空间数据格式的转化;数据转发库:用于接受来自用户空间传送来的请求数据,并对所述请求数据进行操作,实现数据包转发;Linux内核模块:被所述数据包转发库调用。该模型通过Java的API接口来支持操作iptables在Linux内核中的防火墙规则,从而用很优雅的方式实现数据包的转发以及iptables做到的其他所有功能。该模型对各种各样的通信协议“透明”地进行转发,程序的运行安全高。【专利说明】一种用于数据包转发的模型【
技术领域
】[0001]本发明涉及一种模型,具体涉及一种用于数据包转发的模型。【
背景技术
】[0002]在网络之间数据传递的时候,如果两个节点之间不能直接进行数据的传输,就必须借助一个中间节点(类似于一个中转站)来实现功能,这就涉及到数据包的转发问题,例如:A节点要和C节点通信,由于不能直接连通,所以就需要使数据包从A节点通过B节点传输到了C节点,数据包在B节点实现了转发功能。而需要转发的数据,可能会是被各种协议所封装的数据包。[0003]现有的一些数据包转发技术,有通过硬件来实现(这种方案在软件开发中不宜采用)、也有通过软件来实现(都是针对某一种通信协议的实现方案)。例如:可以通过路由器、硬件防火墙来做到上述的功能,通过SSH加密通信协议实现数据包的转发。而为了能做到对各种各样的通信协议“透明”地进行转发,这就需要找到一种可以对各种协议的数据包都可以进行转发的方案。[0004]利用安全外壳协议(SecureShellProtocol,SSH)通道做数据转发是有很大的弊端的,例如只支持TCP协议的数据转发。另外,目前其他的很多做数据包转发的软件也都不适合在软件开发中使用(不利于做二次开发)。[0005]iptables是在Linux下用于操作防火墙规则的命令行工具,可以利用Shell编程的方式来做到同样的效果;但存在的问题是,这样会使程序的逻辑、代码风格受到很大的影响,从程序的运行安全角度来看也是很有问题的,另外这也一种效率低下的方式。【
发明内容】[0006]针对现有技术的不足,本发明提供一种用于数据包转发的模型,该模型通过Java的API接口来支持操作iptables在Linux内核中的防火墙规则,从而用很优雅的方式实现数据包的转发以及iptables做到的其他所有功能。该模型对各种各样的通信协议“透明”地进行转发,程序的运行安全高。[0007]本发明的目的是采用下述技术方案实现的:[0008]一种用于数据包转发的模型,其改进之处在于,所述模型包括:[0009]Java数据模块:用于完成用户空间与Linux内核空间数据格式的转化;[0010]数据转发库:用于接受来自用户空间传送来的请求数据,并对所述请求数据进行操作,实现数据包转发;[0011]Linux内核模块:被所述数据包转发库调用。[0012]其中,所述Java数据模块与通过JNI技术与所述数据转发库进行数据交互;所述数据转发库调用所述Linux内核模块并添加转发规则实现数据包转发。[0013]其中,所述转化规则包括Linux内核模块的防火墙规则。[0014]其中,所述Java数据模块用于接受用户调用请求、传递请求数据和返回执行结果,同时与所述数据转发库进行数据交互,完成用户空间与内核空间数据格式的转化(用户空间和内核之间的数据交互是利用第三方的开发库Iibnetfilter实现的)。[0015]其中,所述Java数据模块的API接口支持操作iptables在Linux内核中的防火墙规则。[0016]其中,所述数据转发库用于接受来自用户空间传送过来的请求数据,并对所述请求数据进行调用Linux函数和Linux内核模块操作,最后返回执行结果。[0017]其中,所述请求数据是转化为Linux内核模块识别的数据格式。[0018]与现有技术比,本发明达到的有益效果是:[0019]1、本发明提供的用于数据包转发的模型,首先采用Java语言来实现对Linux内核模块(netfilter)进行操作,提供了丰富的API接口,方便了Java程序员的程序开发;[0020]2、本发明提供的用于数据包转发的模型,通过Java的API接口来支持操作iptables在Linux内核模块中的防火墙规则,从而用很优雅的方式实现数据包的转发以及iptables做到的其他所有功能。【专利附图】【附图说明】[0021]图1是本发明提供的用于数据包转发的模型的示意图。【具体实施方式】[0022]下面结合附图对本发明的【具体实施方式】作进一步的详细说明。[0023]本发明提供的用于数据包转发的模型如图1所示,该模型包括Java数据模块、数据转发库和Linux内核模块Java数据模块与通过JNI技术与所述数据转发库进行数据交互;所述数据转发库调用所述Linux内核模块并添加转发规则实现数据包转发。转化规则包括Linux内核模块的防火墙规则。[0024]Java数据模块:是本技术方案直接面对用户的部分,用于接受用户调用请求、传递请求数据和返回执行结果,同时与所述数据转发库进行数据交互,属于中间层面,完成用户空间与内核空间数据格式的转化(用户空间和内核之间的数据交互是利用第三方的开发库Iibnetfilter实现的)。Java数据模块的API接口支持操作iptables在Linux内核中的防火墙规则。Java数据模块对于编译、运行的环境没有做任何的要求。[0025]数据转发库:是本技术方案的核心模块,用于接受来自用户空间传送过来的请求数据,并对所述请求数据进行调用Linux函数和Linux内核模块操作,最后返回执行结果。请求数据是转化为Linux内核模块识别的数据格式,数据转发库需要在Linux环境下进行编译、链接、调试。[0026]Linux内核模块:被所述数据包转发库调用。[0027]本发明提供的用于数据包转发的模型,该模型提供一个数据转发库,让Java数据模块来调用,间接地操作Linux内核模块,添加相应的转发规则最终达到功能的实现。[0028]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的【具体实施方式】进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。【权利要求】1.一种用于数据包转发的模型,其特征在于,所述模型包括:Java数据模块:用于完成用户空间与Linux内核空间数据格式的转化;数据转发库:用于接受来自用户空间传送来的请求数据,并对所述请求数据进行操作,实现数据包转发;Linux内核模块:被所述数据包转发库调用。2.如权利要求1所述的用于数据包转发的模型,其特征在于,所述Java数据模块与通过JNI技术与所述数据转发库进行数据交互;所述数据转发库调用所述Linux内核模块并添加转发规则实现数据包转发。3.如权利要求1所述的用于数据包转发的模型,其特征在于,所述转化规则包括Linux内核模块的防火墙规则。4.如权利要求1所述的用于数据包转发的模型,其特征在于,所述Java数据模块用于接受用户调用请求、传递请求数据和返回执行结果,同时与所述数据转发库进行数据交互,完成用户空间与内核空间数据格式的转化。5.如权利要求4所述的用于数据包转发的模型,其特征在于,所述Java数据模块的API接口支持操作iptables在Linux内核中的防火墙规则。6.如权利要求1所述的用于数据包转发的模型,其特征在于,所述数据转发库用于接受来自用户空间传送过来的请求数据,并对所述请求数据进行调用Linux函数和Linux内核模块操作,最后返回执行结果。7.如权利要求6所述的用于数据包转发的模型,其特征在于,所述请求数据是转化为Linux内核模块识别的数据格式。【文档编号】H04L12/70GK103634206SQ201210299405【公开日】2014年3月12日申请日期:2012年8月21日优先权日:2012年8月21日【发明者】赵晓杰,赵欢,解文龙,刘瑞贤申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1