一种基于核间异步消息队列与共享内存的域间通信方法

文档序号:9727210阅读:518来源:国知局
一种基于核间异步消息队列与共享内存的域间通信方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体涉及一种基于核间异步消息队列与共享内存的域间通信方法。
【背景技术】
[0002]当前,基于虚拟机的域间通信的典型示例是Xen及KVM(Kernel Virtual Monitor内核虚拟监控器),二者实现域间通信的主要方式是虚拟网络,直接通过通信双方的虚拟网卡来实现的den还提供了一种事件通道的方式来实现虚拟域和VMM之间、虚拟域以及虚拟域之间的简单通信。
[0003]在现有技术中,基于虚拟网络的域间通信要求通信双方的角色都是用户进程,而没有考虑到通信双方可能是操作系统内核或B1S。而且其中,Xen基于事件通道实现的虚拟域间的简单通信则是将通信消息放置于Xen的一片共享内存中,由通信对方发送消息到这片内存或者从这片内存处接收消息,这片共享内存对于通信双方域都是可见的,一旦恶意攻击者获取了某一方信息处理域的访问权限,也就意味着可以获取对这片共享内存的操作权限,进而危害通信双方传输信息的安全可靠性。另一方面,现有的域间通信技术并未考虑为用户提供灵活的用户层通信接口。

【发明内容】

[0004]本发明所要解决的技术问题是针对现有技术中存在计算机安全产品中不同信息处理域之间的安全通信问题,提供一种基于核间异步消息队列与共享内存的域间通信方法,其中通信双方的角色可以不对等,可以分别是用户进程和操作系统;同时基于Netlink套接字API提供了用户层的通信接口,供用户程序在不同信息处理域间收发消息时使用,提供了高效灵活的域间安全通信方式。
[0005]根据本发明,提供了一种基于核间异步消息队列与共享内存的域间通信方法,包括:
[0006]第一步骤:创建一对Netlink套接字,分别位于用户空间和内核空间,用于实现用户与内核之间的通信;
[0007]第二步骤:发送方进程通过Netlink套接字将消息传递给内核空间,操作系统内核对消息进行预处理后,调用超级调用陷入安全通信层;其中,所述安全通信层对信息处理域的操作系统内核及用户进程都是不可见的;
[0008]第三步骤:安全通信层申请共享内存,封装待发送的消息并将其写入共享内存,并向接收方的CPU核发送MailBox核间中断,通知接收方对方消息已经到来;
[0009]第四步骤:接收方在核间中断的触发下产生特权自陷;
[0010]第五步骤:消息发送完成,释放共享内存。
[0011]优选地,发送消息的发送方或接收消息的接收方分别处于同一台物理机上的不同信息域。
[0012]优选地,所述第四步骤包括下述子步骤:
[0013]第一子步骤:接收方的安全通信模块首先进行中断的预处理;
[0014]第二子步骤:跳转到操作系统的中断例程,从中断例程中取出共享内存中的消息;
[0015]第三子步骤:判断发送方发送过来的消息的目标进程是操作系统内核还是用户进程,如果是操作系统内核,则直接在中断例程中进行处理,并返回;否则,跳转到第四子步骤;
[0016]第四子步骤:接收方将接收到的消息通过Netlink机制发送给用户层,用户层进程读取消息并处理。
[0017]随着当前信息技术的发展,信息处理域间需要频繁地在不同层次上进行协作,对域间通信的安全性和灵活性提出了很高的要求。本发明在信息处理域和硬件层之间直接引入了一个安全通信层,信息处理域之间的安全通信必须且只能通过这个安全通信层进行处理,并且这个安全通信层对信息处理域是不可见的,因此保证了信息处理域之间通信的安全性。同时,本发明还提供了供用户层使用的消息库接口,方便用户的编程使用。
【附图说明】
[0018]结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
[0019]图1示意性地示出了根据本发明优选实施例的基于核间异步消息队列与共享内存的域间通信方法的流程图。
[0020]图2示意性地示出了根据本发明优选实施例的基于核间异步消息队列与共享内存的域间通信方法的示意图。
[0021]需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
【具体实施方式】
[0022]为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
[0023]本发明结合核间异步消息队列及共享内存机制实现了一种域间安全通信方法,该方法在原有的信息处理域层与硬件层之间引入了一个安全通信层。该安全通信层对信息处理域的操作系统内核及用户进程都是不可见的,信息处理域的操作系统内核只有通过特定接口才能陷入到该层,因此从根本上保证了域间通信的安全;与此同时,本发明还基于Netlink套接字API提供了用户层的消息库接口,为用户提供了多域之间进行安全通信的灵活易用的接口。
[0024]下面将结合附图来描述本发明的具体优选实施例。
[0025]图1示意性地示出了根据本发明优选实施例的基于核间异步消息队列与共享内存的域间通信方法的流程图。图2示意性地示出了根据本发明优选实施例的基于核间异步消息队列与共享内存的域间通信方法的示意图。
[0026]其中,域间安全通信指的是共生在同一台物理机上的不同信息域之间的安全通
?目Ο
[0027]在图1和图2中,以信息处理域X与信息处理域Y之间的通信为例,阐述域间安全通信的流程(在该通信流程中,发送消息的一方称为发送方,接收消息的一方称为接收方)。其中,发送方和接收方分别处于同一台物理机上的不同信息域。例如,发送方处于信息处理域X,而接收方处于信息处理域Υ;反之亦然。
[0028]如图1和图2所示,根据本发明优选实施例的基于核间异步消息队列与共享内存的域间通信方法包括:
[0029]第一步骤S1:创建一对Netlink套接字,分别位于用户空间和内核空间,用于实现用户与内核之间的通信;
[0030]第二步骤S2:发送方进程通过Netlink套接字将消息传递给内核空间,操作系统内核对消息进行预处理后,调用超级调用陷入安全通信层;其中,所述安全通信层对信息处理域的操作系统内核及用户进程都是不可见的;
[0031]第三步骤S3:安全通信层申请共享内存,封装待发送的消息并将其写入共享内存,并向接收方的CPU核发送Mai ΙΒοχ核间中断,通知接收方对方消息已经到来;
[0032]第四步骤S4:接收方在核间中断的触发下产生特权自陷;
[0033]优选地,第四步骤S4可包括下述子步骤:
[0034]第一子步骤:接收方的安全通信模块首先进行中断的预处理;
[0035]第二子步骤:跳转到操作系统的中断例程,从中断例程中取出共享内存中的消息;
[0036]第三子步骤:判断发送方发送过来的消息的目标进程是操作系统内核还是用户进程,如果是操作系统内核,则直接在中断例程中进行处理,并返回;否则,跳转到第四子步骤;
[0037]第四子步骤:接收方将接收到的消息通过Netlink机制发送给用户层,用户层进程读取消息并处理。
[0038]第五步骤S5:消息发送完成,释放共享内存。
[0039]由此,本发明在信息处理域和硬件层直接引入安全通信层,安全通信层供所有信息处理域共享,并且对信息处理域是不可见的。信息处理域之间请求信息及数据的传输必须且只能通过安全通信层。因此保证了信息处理域之间通信的安全性。而且,本发明为不同信息处理域提供了用户层的消息库接口,便于用户的编程使用。
[0040]此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
[0041]可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种基于核间异步消息队列与共享内存的域间通信方法,其特征在于包括: 第一步骤:创建一对Netlink套接字,分别位于用户空间和内核空间,用于实现用户与内核之间的通信; 第二步骤:发送方进程通过Netlink套接字将消息传递给内核空间,操作系统内核对消息进行预处理后,调用超级调用陷入安全通信层;其中,所述安全通信层对信息处理域的操作系统内核及用户进程都是不可见的; 第三步骤:安全通信层申请共享内存,封装待发送的消息并将其写入共享内存,并向接收方的CPU核发送MailBox核间中断,通知接收方对方消息已经到来; 第四步骤:接收方在核间中断的触发下产生特权自陷; 第五步骤:消息发送完成,释放共享内存。2.根据权利要求1所述的基于核间异步消息队列与共享内存的域间通信方法,其特征在于,发送消息的发送方或接收消息的接收方分别处于同一台物理机上的不同信息域。3.根据权利要求1或2所述的基于核间异步消息队列与共享内存的域间通信方法,其特征在于,第四步骤包括下述子步骤: 第一子步骤:接收方的安全通信模块首先进行中断的预处理; 第二子步骤:跳转到操作系统的中断例程,从中断例程中取出共享内存中的消息;第三子步骤:判断发送方发送过来的消息的目标进程是操作系统内核还是用户进程,如果是操作系统内核,则直接在中断例程中进行处理,并返回;否则,跳转到第四子步骤;第四子步骤:接收方将接收到的消息通过Netlink机制发送给用户层,用户层进程读取消息并处理。
【专利摘要】本发明提供了一种基于核间异步消息队列与共享内存的域间通信方法,包括:创建一对Netlink套接字,分别位于用户空间和内核空间,用于实现用户与内核之间的通信;发送方进程通过Netlink套接字将消息传递给内核空间,操作系统内核对消息进行预处理后,调用超级调用陷入安全通信层;其中,所述安全通信层对信息处理域的操作系统内核及用户进程都是不可见的;安全通信层申请共享内存,封装待发送的消息并将其写入共享内存,并向接收方的CPU核发送MailBox核间中断,通知接收方对方消息已经到来;接收方在核间中断的触发下产生特权自陷;消息发送完成,释放共享内存。
【IPC分类】G06F9/54
【公开号】CN105487933
【申请号】CN201510830247
【发明人】何升, 殷红武, 刘了, 林海南, 雷鸣
【申请人】无锡江南计算技术研究所
【公开日】2016年4月13日
【申请日】2015年11月24日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1