CN109324908B - Netlink资源的容器隔离方法及装置 - Google Patents

Netlink资源的容器隔离方法及装置 Download PDF

Info

Publication number
CN109324908B
CN109324908B CN201710637129.7A CN201710637129A CN109324908B CN 109324908 B CN109324908 B CN 109324908B CN 201710637129 A CN201710637129 A CN 201710637129A CN 109324908 B CN109324908 B CN 109324908B
Authority
CN
China
Prior art keywords
netlink
container
kernel
entry
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710637129.7A
Other languages
English (en)
Other versions
CN109324908A (zh
Inventor
钟国城
张亮
杨坚锐
刘金苗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710637129.7A priority Critical patent/CN109324908B/zh
Priority to EP18841240.7A priority patent/EP3644182A4/en
Priority to PCT/CN2018/095581 priority patent/WO2019024669A1/zh
Publication of CN109324908A publication Critical patent/CN109324908A/zh
Priority to US16/777,516 priority patent/US11500666B2/en
Application granted granted Critical
Publication of CN109324908B publication Critical patent/CN109324908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

公开了一种netlink资源的容器隔离方法及装置。内核接收应用程序下发的用于创建容器的触发指令。内核根据触发指令创建对应应用程序的容器,建立容器的netlink命名空间,并向应用程序发送netlink命名空间创建成功通知。内核接收容器下发的第一netlink消息,所述第一netlink消息包括容器运行时生成的表项。内核根据netlink命名空间的标识,存储表项,以使容器从内核获取所需的表项。该方法通过创建netlink namespace机制,实现了netlink通道的隔离,减少netlink消息的广播风暴,提高了netlink组播报文的处理效率。

Description

Netlink资源的容器隔离方法及装置
技术领域
本申请涉及计算机网络领域,尤其涉及一种netlink资源的容器隔离方法及装置。
背景技术
Linux软件容器(Linux containers,LXC)是一种操作系统层虚拟化(operatingsystem–level virtualization)技术,用于隔离一个主机上使用同一个Linux内核的不同Linux系统(又称为容器)。它将应用软件系统打包成一个容器,该容器可以包括用户空间(user space),用户空间为应用程序运行的存储区域,应用程序的执行必须依托于容器所在的主机的内核提供的资源(如CPU资源、存储资源、I/O资源)。
目前使用Linux命名空间(namespace)技术隔离为不同容器分配的内核资源,这使得进程标识(process identifier,PID),进程间通信(inter-process communication,IPC)通道,网络转发表项等系统资源不再是全局性的,而是属于特定的namespace。每个namespace里面的资源对其他namespace都是不透明的(即不可见的)。namespace简单的来说就是将资源放到不同的命名空间中,各个命名空间中的资源是相互隔离的,各个命名空间中的资源被不同的进程调用。通常,一个容器对应一个容器命名空间,一个容器命名空间可以对应多个容器,该容器命名空间可以包括一个或多个子命名空间。当内核向容器发送容器订阅的信息时,内核可通过netlink通道以netlink消息的方式将该信息发送给该容器。图1为一种操作系统的逻辑结构示意图。如图1所示,操作系统分为用户空间和内核,用户空间包括容器1、容器2和容器3,内核包括命名空间1和命名空间2。容器1和容器3对应命名空间1,容器2对应命名空间2,命名空间1和应命名空间2分别通过netlink通道以netlink消息向容器1、容器2和容器3发送相应容器订阅的信息。
然而,现有容器的namespace不能实现netlink消息的隔离并且由于内核中表项资源(如arp、routing、interface等表项)的更新,都会通过netlink消息以组播或者广播的形式发送到多个容器的用户空间,即图1中命名空间1发给容器1和容器3的netlink消息容器2页可以接收。,这导致共享该内核的所有容器都会接收到该表项,造成表项广播泛滥。
发明内容
本申请提供了一种netlink资源的容器隔离方法及装置。实现netlink资源的隔离,使内核中的表项通过netlink消息广播发送后,只有对应的容器的用户空间会接收到该表项,避免共享该内核的所有进程都会接收到该表项,造成表项广播泛滥。
第一方面,提供了一种netlink资源的容器隔离方法,该方法可以包括:内核接收应用程序下发的用于创建容器的触发指令。内核根据触发指令创建对应应用程序的容器,建立容器的netlink命名空间,并向应用程序发送netlink命名空间创建成功通知。内核接收容器下发的第一netlink消息,第一netlink消息包括容器运行时生成的表项。内核根据netlink命名空间的标识,存储表项,以向所述容器的用户空间发送所述容器需要的表项。
该方法通过创建netlink namespace机制,实现了netlink通道的隔离,减少netlink消息的广播风暴,提高了netlink组播报文的处理效率。
在一个可选的实现中,内核接收容器下发的第一netlink消息之后,该方法还包括:内核解析第一netlink消息,获取netlink命名空间的标识,以便将接收到的表项同步存储到相应的命名空间中进行隔离存储。
在一个可选的实现中,存储表项之后,该方法还包括:内核确定表项中的目标表项对应的netlink命名空间的标识。内核根据netlink命名空间的标识,确定目标network命名空间。内核根据目标network命名空间的标识,向容器的用户空间单播或组播发送目标表项。目标表项为存储的表项中的全部或部分表项。
在一个可选的实现中,内核根据目标network命名空间的标识,向容器的用户空间单播或组播发送目标表项,包括:内核根据目标network命名空间的标识和目标表项,创建容器与内核间的传输通道;内核通过通道向容器的用户空间单播或组播发送目标表项。
可见,在创建netlink namespace机制下,内核中的表项管理系统发送的netlink消息,只会被生成该netlink消息中携带的表项的容器的用户空间接收到,实现netlink通道的隔离。
在一个可选的实现中,存储表项之后,该方法还可以包括:内核向用于容器间通信的转发平面发送第二netlink消息,第二netlink消息包括netlink命名空间类型和目标表项,以使转发平面获取目标表项所属netlink命名空间的标识,并根据目标表项所属netlink命名空间的标识,确定目标表项对应的容器,目标表项为存储的表项中的全部或部分表项。通过该方式,能够实现在用户空间上的数据转发,以降低数据转发时延。
第二方面,提供了一种netlink资源的容器隔离装置,该装置具有实现上述方法中netlink资源的容器隔离装置行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供了另一种netlink资源的容器隔离装置,该装置可以包括:处理器和存储器。所述存储器用于存储程序,所述处理器用于执行所述程序,所述程序在执行时能够实现上述第一方面及第一方面的各实现方式中的方法。
第四方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面及第一方面的各实现方式中的方法。
第五方面,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述第一方面及第一方面的各实现方式中的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为一种操作系统的逻辑结构示意图;
图2为另一种操作系统的逻辑结构示意图;
图3为本发明实施例提供的一种netlink资源的容器隔离方法流程示意图;
图4为本发明实施例提供的一种存储表项的方法流程图;
图5为本发明实施例提供的一种在隔离的netlink通道下传输netlink消息的过程示意图;
图6为本发明实施例提供的一种内核向容器传输表项的方法流程图;
图7为本发明实施例提供的一种netlink消息的结构示意图;
图8为本发明实施例提供的一种在用户空间上表项转发过程的示意图;
图9为本发明实施例提供一种netlink资源的容器隔离装置的结构示意图;
图10为本发明实施例提供另一种netlink资源的容器隔离装置的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
首先介绍下Netlink相关知识。
Netlink是一种异步全双工的通信方式,它支持由内核态(或称内核)主动向用户空间发起通信。Netlink使进程间通信方法在内核和用户空间间提供了一种双向全双工异步传输,支持由内核主动发起传输通信,而不需要用户空间发出(例如使用ioctl这类的单工方式)。如此用户空间在等待内核某种触发条件满足时就无需不断轮询,直接异步接收内核消息即可。并且Netlink支持组播传输,即内核可以将消息发送给用户空间的多个接收进程,这样就不用每个进程单独来查询了。
本申请提供的netlink资源的容器隔离方法可以应用在图2所示的操作系统中。如图2所示,该操作系统的用户空间可以包括多个容器,如容器1、容器2和容器3,内核可以包括多个表项(如路由、ARP、接口等),如表项1、表项2和表项3,其中,内核对表项进行存储和管理。内核可以通过netlink消息接收容器下发的表项,容器可以通过netlink消息调用内核中表项。
需要说明的是,该操作系统可以是Linux操作系统,也可以是windows操作系统,或其他可实现容器技术的操作系统。
下面本申请以Linux操作系统为例,详细进行介绍。
本申请首先在容器中创建netlink命名空间,并完成创建的初始化工作。用户空间可以向内核下发netlink触发指令,以使内核创建netlink命名空间。之后容器用户空间通过netlink消息与内核单播通信,将表项下发至内核,实现在linux容器下使用新增netlink命名空间对netlink资源进行隔离,特别是对表项进行隔离,其中,一个容器对应一个容器命名空间,一个容器命名空间可以对应多个容器,隔离是指一个命名空间所属容器的netlink通道不允许其他命名空间所属的容器使用或访问。
当内核以多播的方式发送表项时,只发送到表项所属namespace的容器用户空间,其他不相关的容器的用户空间接收不到此消息。
当在某些场景下,内核的表项通过netlink消息发送到用户空间的转发平面上(如用户空间虚拟交换机),该netlink消息包括指示该netlink消息为netlink命名空间的信息,以便在用户空间上区分目标容器用户空间,实现数据转发的过程,避免了通过内核实现容器间通信,减少了通信时延。
图3为本发明实施例提供的一种netlink资源的容器隔离方法流程示意图。该方法可以包括:
步骤300、应用程序向内核发送触发指令。
容器通过系统调用创建指令创建命名空间,如调用带有CLONE_NEW*类型的clone()system call指令以创建命名空间。命名空间可以包括进程间通信(IPC)的命名空间、网络(network)命名空间、挂载(mount)命名空间、进程(PID)命名空间、UNIX命名空间(独立出主机名和网络信息服务)和用户(user)命名空间。其中,CLONE_NEW*类型可以包括CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUTS和CLONE_NEWUSER,这些类型分别表示命名空间所隔离的资源。
用户通过应用程序向内核发送触发指令,该触发指令用于指示内核创建容器,进而创建该容器的netlink命名空间。
步骤310、内核根据触发指令创建对应应用程序的容器,建立netlink命名空间,并向应用程序发送netlink命名空间创建成功通知。
内核根据触发指令,建立容器,进而建立该容器的netlink命名空间。netlink命名空间可以包括标识,该标识可以是唯一表示该命名空间的信息,如索引节点号(inodenumber)。同时内核对其他资源进行初始化配置,完成创建netlink命名空间的初始化。
之后,内核向应用程序发送netlink命名空间创建成功通知。
步骤320、内核接收所述容器下发的第一netlink消息,该第一netlink消息携带所述容器运行时生成的表项,并存储所述表项。
内核解析该第一netlink消息,获取所述netlink命名空间的标识。
内核根据与该第一netlink消息对应的netlink命名空间的标识,将接收到的表项存储到相应的命名空间中,具体可以是将表项存储到namespace的哈希表中,从而使容器的用户空间根据netlink命名空间的标识,能够查询到属于自己的相关表项。
图4为本发明实施例提供的一种存储表项的方法流程图。如图4所示,该方法可以包括:
步骤41、内核解析该第一netlink消息,获取内核存储的该第一netlink消息的task_struct结构。
步骤42、内核根据当前的task_struct结构,获取相应的存储命名空间的模块(nsproxy)。
在task_struct结构中存在指向nsproxy的指针,故内核根据当前的task_struct结构,可以获取相应的nsproxy。其中,由于内核提供了PID,IPC,NS等多个命名空间,一个进程可能属于多个命名空间。由于nsproxy存储了一组指向各个类型命名空间的指针,因此nsproxy可以统一管理进程所属的命名空间。
步骤43、内核根据nsproxy中存储的信息,确定与该第一netlink消息对应的netlink命名空间,获取该netlink命名空间的标识。
步骤44、内核根据netlink命名空间的标识,存储所述表项,以向所述容器的用户空间发送所述容器需要的表项。
可选地,内核中可以设置定时机制,使内核中的表项管理系统(或称子系统)周期性的组播发送netlink消息。
当内核的表项管理系统周期性的组播发送netlink消息,或者由容器的用户空间触发,使内核的表项管理系统组播发送netlink消息时,执行步骤340。
需要说明的是,容器生成表项的进程和获取表项的进程可能是同一容器的不同进程或者相同的进程。
步骤330、内核获取目标表项所属的netlink命名空间的标识。
当内核需要向容器的用户空间发送表项(称为目标表项)时,内核的表项管理系统获取目标表项所属的netlink命名空间的标识,如inode number。
步骤340、内核根据netlink命名空间的标识,确定目标network命名空间,并根据目标network命名空间的标识,向该容器的用户空间单播或组播发送目标表项。
该目标表项为内核的命名空间中存储的该容器生成的表项中的全部或部分表项。
内核根据netlink命名空间的标识,首先获取相应的nsproxy,再根据nsproxy中的指针,确定目标表项对应的network命名空间,从而获取该network命名空间的标识,如报文结构等信息。
内核将network命名空间的标识和目标表项作为netlink_kernel_create函数的输入参数,创建内核的netlink内核实例,以及创建容器与内核间的传输通道,如套接字(socket)通道,以使内核的表项管理系统通过该通道向该容器的用户空间单播或组播发送目标表项。其中,当容器的用户空间中存在多个进程时,内核的表项管理系统通过该传输通道向该容器的用户空间组播发送该目标表项,当容器的用户空间中仅存在一个进程或仅存在一个需要该目标表项的进程时,内核的表项管理系统通过该传输通道向该容器的用户空间单播发送该目标表项。
由此可知,在创建netlink namespace机制下,内核中的表项管理系统发送的netlink消息,只会被生成该netlink消息中携带的表项的容器的用户空间接收到,实现netlink通道的隔离。
在一个例子中,图5为本发明实施例提供的一种在隔离的netlink通道下传输netlink消息输的过程示意图。如图5所示,内核中对应容器1的子系统1单播或组播发送的netlink消息,只有容器1中的进程1和进程2可以接收到,容器2中的进程1和进程2不能接收到;内核中对应容器2的子系统2单播或组播发送的netlink消息,只有容器2中的进程1和进程2可以接收到,容器1中的进程1和进程2不能接收到。
在一个例子中,图6为本发明实施例提供的一种内核向容器传输表项的方法流程图。如图6所示,该方法可以包括:
步骤61、容器1对应的位于内核中的子系统1根据容器1的netlink命名空间的inode number,确定容器1对应的nsproxy。
步骤62、子系统1根据nsproxy的信息,获取目标表项的表项管理系统(即系统1的表项管理系统)对应的netlink命名空间。
步骤63、将netlink命名空间的标识和目标表项作为netlink_kernel_create函数的输入参数,在内核中创建netlink内核实例。
步骤64、根据netlink命名空间的标识,创建容器1和内核间的socket通道。
步骤65、通过socket通道向容器1的用户空间组播发送netlink消息,该netlink消息包括目标表项。
可选地,在某些场景下,内核中存储的容器的表项会被发布到该容器的用户空间的转发进程(如用户态vSwitch)上,实现在用户空间上的数据转发,以降低数据转发时延,提升用户体验。
进一步地,本申请实施例通过将容器的表项发送到用于容器间通信的公共转发平面上实现容器间的数据转发。该方法是在内核对表项进行隔离存储(步骤320)之后执行的,下面对该方法进行详细介绍。
步骤350、内核创建第二netlink消息,该第二netlink消息包括netlink命名空间类型和目标表项。
第二netlink消息为内核向用于容器间通信的转发平面发送的netlink消息。
内核通过在netlink消息头中增加新的netlink命名空间类型(如NLM_F_NETLINK_NAMESPACE 32),来实现与该转发平面的。
图7为本发明实施例提供的一种netlink消息的结构示意图。如图7所示,netlink消息包括netlink消息头和netlink消息体,在netlink消息头包括长度字段、类型字段、标志字段、顺序号字段和进程标识(identifier,ID)字段。
其中,长度字段指定消息的总长度,占用4个字节。类型字段用于应用内部定义消息的类型,占用2个字节。标志字段用于设置消息标识,占用2个字节。顺序号字段用于追踪消息,表示顺序号,占用4个字节。进程标识字段用于追踪消息,表示消息来源进程ID,占用4个字节。
内核通过在netlink消息头的标志字段(nlmsg_flags参数)中增加NLM_F_NETLINK_NAMESPACE 32以指示所述netlink消息为netlink命名空间的消息。
该目标表项为容器发送给内核中的表项的全部或部分表项。
步骤360、内核向用于容器间通信的转发平面发送第二netlink消息。
其中,该用于容器间通信的转发平面为一个公共的转发平面,其可以是容器以及内核所在的主机上的的虚拟交换机(vSwitch)。
可选地,内核可以周期性的向该转发平面发送第二netlink消息。具体来说,一个容器对应的内核子系统周期性地向该转发平面发送包括该容器对应的目标表项的第二netlink消息。
步骤370、该转发平面解析该第二netlink消息,获取目标表项所属的netlink命名空间的标识。
可选地,第二netlink消息也可以包括目标表项所属netlink命名空间的标识,如第一inode number。
步骤380、该转发平面根据目标表项所属netlink命名空间的标识,确定目标表项对应的容器。
在执行步骤380之前,该转发平面需要获取转发平面所在的主机上所有容器的netlink命名空间的标识,如第二inode number。
该转发平面将第一inode number分别与该转发平面上所有容器的netlink命名空间的第二inode number进行匹配。若匹配成功,即第一inode number与第二inode number相同时,该转发平面确定该第二inode number所属的容器为接收该目标表项的目标容器。也就是说,该转发平面通过识别第一inode number与第二inode number的一致性,确定需要该目标表项对应的目标容器。
在一个例子中,图8为本发明实施例提供的一种在用户空间上表项转发过程的示意图。如图8所示,服务器上的应用程序通过应用容器引擎(docker)部署虚拟网络功能(Virtual Network Function,VNF)容器实例VNF1,VNF2…VNFn,内核在创建VNF容器后,相应创建该VNF容器的netlink命名空间,如命名空间1、命名空间2…命名空间n。VNF容器存在私有表项,VNF1容器的私有表项A通过netlink1消息发送到内核,并由内核隔离存储到命名空间1中,VNF2容器的私有表项B通过netlink2消息发送到内核,并由内核隔离存储到命名空间2中,以此类推,VNFn容器的私有表项N通过netlink消息发送到内核,并由内核隔离存储到命名空间n中。
进一步地,内核中的私有表项(如表项A、表项B至表项N中的至少一个表项)可以通过netlink消息同步到用于容器间通信的转发平面,例如,快转平面(fastpath),fastpath通过解析netlink消息,获取表项所属netlink命名空间的inode number。fastpath根据获取的表项所属netlink命名空间的inode number与所有VNF容器的netlink命名空间的inode number,确定该表项的目标VNF容器。也就是说,fastpath通过inode number建立VNF容器实例与表项之间的关联关系。VNF容器实例间可通过fastpath进行数据交换。
当VNF1和VNF2发送表项到内核,然后再由内核将VNF1和VNF2的表项发布到fastpath后,VNF1和VNF2通过fastpath可直接进行数据交互。
由此可知,该方法通过创建netlink namespace机制,实现了netlink通道的隔离,减少netlink消息的广播风暴,提高了netlink组播报文的处理效率。
与上述方法对应的本发明实施例还提供一种netlink资源的容器隔离装置,如图9所示,该装置可以包括:接收单元910、处理单元920、存储单元930和发送单元940。
接收单元910,用于接收应用程序下发的用于创建容器的触发指令。
处理单元920,用于根据触发指令创建对应所述应用程序的容器,建立所述容器的netlink命名空间。
发送单元940,用于向应用程序发送netlink命名空间创建成功通知。
接收单元910,还用于接收容器下发的第一netlink消息,第一netlink消息包括容器运行时生成的表项。
存储单元930,还用于根据netlink命名空间的标识,存储表项,以向所述容器的用户空间发送所述容器需要的表项。
可选地,处理单元920,还用于解析第一netlink消息的消息类型,获取所述netlink命名空间的标识。
可选地,该装置还包括发送单元940,
处理单元920,还用于确定所述表项中的目标表项对应的netlink命名空间的标识,并根据netlink命名空间的标识,确定目标network命名空间;
发送单元940,用于根据目标network命名空间的标识,向容器的用户空间单播或组播发送目标表项。
可选地,处理单元920,还用于根据目标network命名空间的标识和目标表项,创建所属容器与内核间的传输通道。
发送单元940,用于通过通道向容器的用户空间单播或组播发送目标表项。
可选地,发送单元940,还用于向用于容器间通信的的转发平面发送第二netlink消息,第二netlink消息包括netlink命名空间类型和目标表项,以使转发平面获取目标表项所属netlink命名空间的标识,并根据待发送表项所属netlink命名空间的标识,确定目标表项对应的容器,目标表项为存储的表项中的全部或部分表项。
由于上述实施例中该装置的各单元解决问题的实施方式以及有益效果可以参见方法实施方式以及有益效果,故在此不复赘述。
图10为本发明实施例提供另一种netlink资源的容器隔离装置的结构示意图。随着云化及VNF技术的发展,该装置可通过VNF的形式部署在服务器上。该装置适用于服务器、网络设备等(只要能部署容器技术即适用),不限制于中央处理器(central processingunit,CPU)。如图10所示,该装置可以包括:存储器1010和处理器1020。
存储器1010可通过总线与处理器1020连接。存储器1010可以是非易失存储器,例如硬盘驱动器和闪存,存储器1010中具有软件程序和设备驱动程序。软件程序能够执行本发明上述方法的各种功能;设备驱动程序可以是网络和接口驱动程序。
所述处理器用于执行所述软件程序,所述程序在执行时,能够本发明各实施方式中的方法。
由于上述实施例中该装置的各器件解决问题的实施方式以及有益效果可以参见方法实施方式以及有益效果,故在此不复赘述。
需要说明的是,本发明实施例还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,该程序被处理器1020执行。
本发明实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机上运行时,使得处理器1020执行上述图3所述的方法。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM)存储器、电可擦可编程只读存储器存储器(英文:electrically erasable programmable read-only memory,EEPROM)、硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。存储介质也可以是处理器的组成部分。处理器和存储介质也可以作为分立组件存在于用户设备中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、改进等,均应包括在本申请的保护范围之内。

Claims (10)

1.一种netlink资源的容器隔离方法,其特征在于,所述方法包括:
内核接收应用程序下发的用于创建容器的触发指令;
所述内核根据所述触发指令创建对应所述应用程序的容器,建立所述容器的netlink命名空间,并向所述应用程序发送netlink命名空间创建成功通知;
所述内核接收所述容器下发的第一netlink消息,所述第一netlink消息包括所述容器运行时生成的表项;
所述内核解析所述第一netlink消息,获取所述netlink命名空间的标识;
所述内核根据所述netlink命名空间的标识,存储所述表项,以向所述容器的用户空间发送所述容器需要的表项,以便其他netlink命名空间的容器的用户空间不接收所述表项。
2.根据权利要求1所述的方法,其特征在于,所述存储所述表项之后,所述方法还包括:
所述内核确定所述表项中的目标表项对应的所述netlink命名空间的标识;
所述内核根据所述netlink命名空间的标识,确定目标netlink命名空间;所述内核根据所述目标netlink命名空间的标识,向所述容器的用户空间单播或组播发送所述目标表项;
所述目标表项为所述存储的表项中的全部或部分表项。
3.根据权利要求2所述的方法,其特征在于,所述内核根据所述目标netlink命名空间的标识,向所述容器的用户空间单播或组播发送所述目标表项,包括:
所述内核根据所述目标netlink命名空间的标识和所述目标表项,创建所述容器与所述内核间的传输通道;
所述内核通过所述通道向所述容器的用户空间单播或组播发送所述目标表项。
4.根据权利要求1所述的方法,其特征在于,所述存储所述表项之后,所述方法还包括:
所述内核向用于容器间通信的转发平面发送第二netlink消息,所述第二netlink消息包括netlink命名空间类型和目标表项,以使所述转发平面获取所述目标表项所属netlink命名空间的标识,并根据所述目标表项所属netlink命名空间的标识,确定所述目标表项对应的容器,所述目标表项为所述存储的表项中的全部或部分表项。
5.一种netlink资源的容器隔离装置,其特征在于,所述装置包括:
接收单元,用于接收应用程序下发的用于创建容器的触发指令;
处理单元,用于根据所述触发指令创建对应所述应用程序的容器,建立所述容器的netlink命名空间;
发送单元,用于向所述应用程序发送netlink命名空间创建成功通知;
所述接收单元,还用于接收所述容器下发的第一netlink消息,所述第一netlink消息包括所述容器运行时生成的表项;
所述处理单元,还用于解析所述第一netlink消息,获取所述netlink命名空间的标识;
所述装置还包括存储单元,用于根据所述netlink命名空间的标识,存储所述表项,以向所述容器的用户空间发送所述容器需要的表项,以便其他netlink命名空间的容器的用户空间不接收所述表项。
6.根据权利要求5所述的装置,其特征在于,
所述处理单元,还用于确定所述表项中的目标表项对应的所述netlink命名空间的标识,并根据所述netlink命名空间的标识,确定目标netlink命名空间;
所述发送单元,用于根据所述目标netlink命名空间的标识,向所述容器的用户空间单播或组播发送所述目标表项;
所述目标表项为所述存储的表项中的全部或部分表项。
7.根据权利要求6所述的装置,其特征在于,所述处理单元,还用于根据所述目标netlink命名空间的标识和所述目标表项,创建所述容器与内核间的传输通道;
所述发送单元,用于通过所述通道向所述容器的用户空间单播或组播发送所述目标表项。
8.根据权利要求5所述的装置,其特征在于,
所述发送单元,还用于向用于容器间通信的转发平面发送第二netlink消息,所述第二netlink消息包括netlink命名空间类型和目标表项,以使所述转发平面获取所述目标表项所属netlink命名空间的标识,并根据所述目标表项所属netlink命名空间的标识,确定所述目标表项对应的容器,所述目标表项为所述存储的表项中的全部或部分表项。
9.一种netlink资源的容器隔离装置,其特征在于,所述装置包括:
处理器和存储器,所述存储器用于存储程序,所述处理器用于执行所述程序,所述程序在执行时,能够实现权利要求1至4中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4任意一项所述的方法。
CN201710637129.7A 2017-07-31 2017-07-31 Netlink资源的容器隔离方法及装置 Active CN109324908B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710637129.7A CN109324908B (zh) 2017-07-31 2017-07-31 Netlink资源的容器隔离方法及装置
EP18841240.7A EP3644182A4 (en) 2017-07-31 2018-07-13 CONTAINER ISOLATION METHOD AND DEVICE FOR NETWORK LINK RESOURCE
PCT/CN2018/095581 WO2019024669A1 (zh) 2017-07-31 2018-07-13 Netlink资源的容器隔离方法及装置
US16/777,516 US11500666B2 (en) 2017-07-31 2020-01-30 Container isolation method and apparatus for netlink resource

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710637129.7A CN109324908B (zh) 2017-07-31 2017-07-31 Netlink资源的容器隔离方法及装置

Publications (2)

Publication Number Publication Date
CN109324908A CN109324908A (zh) 2019-02-12
CN109324908B true CN109324908B (zh) 2021-09-07

Family

ID=65232271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710637129.7A Active CN109324908B (zh) 2017-07-31 2017-07-31 Netlink资源的容器隔离方法及装置

Country Status (4)

Country Link
US (1) US11500666B2 (zh)
EP (1) EP3644182A4 (zh)
CN (1) CN109324908B (zh)
WO (1) WO2019024669A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111669356B (zh) * 2019-03-08 2022-05-27 厦门网宿有限公司 IPsec VPN服务器中批量处理网络隔离空间的方法及IPsec VPN服务器
CN110430132B (zh) * 2019-07-05 2021-04-27 杭州迪普信息技术有限公司 绑定Socket与VRF的方法和装置
CN112540773B (zh) * 2020-12-14 2023-08-01 咪咕互动娱乐有限公司 一种云游戏安装方法、装置、电子设备及存储介质
CN113824622B (zh) * 2021-09-13 2023-06-27 京东科技信息技术有限公司 容器之间的通信控制方法、装置、计算机设备及存储介质
CN114244891B (zh) * 2021-12-22 2024-01-23 北京天融信网络安全技术有限公司 一种容器间的通信方法、装置、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050051277A (ko) * 2003-11-27 2005-06-01 한국전자통신연구원 해쉬 키를 이용한 주소 정보 처리 방법 및 이를 이용한라우터 장치
CN101330390A (zh) * 2008-03-12 2008-12-24 武汉理工大学 基于多核网络处理器的慢速路径、快速路径及其接口设计方法
CN102349276A (zh) * 2009-03-12 2012-02-08 Nec欧洲有限公司 支持用户或实体的分布式数据的管理和交换的方法
CN103514030A (zh) * 2012-07-24 2014-01-15 Tcl集团股份有限公司 Android系统的事件收集上报系统及其收集上报方法
CN103716244A (zh) * 2013-12-27 2014-04-09 杭州华三通信技术有限公司 一种实现组播跨vpn转发的方法及装置
CN105487933A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种基于核间异步消息队列与共享内存的域间通信方法
CN105550576A (zh) * 2015-12-11 2016-05-04 华为技术服务有限公司 容器间通信的方法与装置
CN105939365A (zh) * 2015-06-29 2016-09-14 杭州迪普科技有限公司 主控板用户态从业务板内核态获取数据的方法及装置
CN106095413A (zh) * 2016-05-31 2016-11-09 青岛海信电器股份有限公司 一种蓝牙驱动程序的配置方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698741B2 (en) * 2005-12-06 2010-04-13 Microsoft Corporation Controlling the isolation of an object
US8019915B2 (en) * 2007-04-16 2011-09-13 Tixel Gmbh Method and device for controlling access to multiple applications
US8656412B2 (en) * 2009-12-25 2014-02-18 International Business Machines Corporation Pipeline across isolated computing environments
US8819163B2 (en) * 2010-12-08 2014-08-26 Yottastor, Llc Method, system, and apparatus for enterprise wide storage and retrieval of large amounts of data
US8665890B2 (en) * 2011-05-20 2014-03-04 The Regents Of The University Of California Hybrid cross-layer routing protocol for MANETs
US8893261B2 (en) * 2011-11-22 2014-11-18 Vmware, Inc. Method and system for VPN isolation using network namespaces
US20150317169A1 (en) * 2014-05-04 2015-11-05 Midfin Systems Inc. Constructing and operating high-performance unified compute infrastructure across geo-distributed datacenters
US9552250B2 (en) * 2015-03-26 2017-01-24 Vmware, Inc. Detecting X86 CPU register corruption from kernel crash dumps
US9973935B2 (en) * 2015-07-24 2018-05-15 Parallel Wireless, Inc. SON-controlled DFS
CN105099706A (zh) * 2015-08-25 2015-11-25 华为技术有限公司 一种数据通信方法、用户设备和服务器
US10146936B1 (en) * 2015-11-12 2018-12-04 EMC IP Holding Company LLC Intrusion detection for storage resources provisioned to containers in multi-tenant environments
US10452419B2 (en) * 2016-09-09 2019-10-22 Huawei Technologies Co., Ltd. Device virtualization for containers

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050051277A (ko) * 2003-11-27 2005-06-01 한국전자통신연구원 해쉬 키를 이용한 주소 정보 처리 방법 및 이를 이용한라우터 장치
CN101330390A (zh) * 2008-03-12 2008-12-24 武汉理工大学 基于多核网络处理器的慢速路径、快速路径及其接口设计方法
CN102349276A (zh) * 2009-03-12 2012-02-08 Nec欧洲有限公司 支持用户或实体的分布式数据的管理和交换的方法
CN103514030A (zh) * 2012-07-24 2014-01-15 Tcl集团股份有限公司 Android系统的事件收集上报系统及其收集上报方法
CN103716244A (zh) * 2013-12-27 2014-04-09 杭州华三通信技术有限公司 一种实现组播跨vpn转发的方法及装置
CN105939365A (zh) * 2015-06-29 2016-09-14 杭州迪普科技有限公司 主控板用户态从业务板内核态获取数据的方法及装置
CN105487933A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种基于核间异步消息队列与共享内存的域间通信方法
CN105550576A (zh) * 2015-12-11 2016-05-04 华为技术服务有限公司 容器间通信的方法与装置
CN106095413A (zh) * 2016-05-31 2016-11-09 青岛海信电器股份有限公司 一种蓝牙驱动程序的配置方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Communication between the kernel and user-space in Linux using Nerlink sockets;Pablo Neira-Ayuso ET AL;《Software Practice& Experience,Wiley&Sons,Bognor Regis,GB》;20100801;第40卷(第9期);全文 *
基于netlink机制内核空间与用户空间通信的分析;董昱等;《测控技术》;20071231;第26卷(第9期);全文 *

Also Published As

Publication number Publication date
EP3644182A4 (en) 2020-06-10
US11500666B2 (en) 2022-11-15
CN109324908A (zh) 2019-02-12
US20200167186A1 (en) 2020-05-28
EP3644182A1 (en) 2020-04-29
WO2019024669A1 (zh) 2019-02-07

Similar Documents

Publication Publication Date Title
CN109324908B (zh) Netlink资源的容器隔离方法及装置
US9110884B2 (en) Message publishing and subscribing method and apparatus
CN109194559B (zh) 组播方法及vtep设备
CN104954468A (zh) 资源的分配方法及装置
CN103647853A (zh) 一种在VxLAN中发送ARP报文发送方法、VTEP及VxLAN控制器
CN112799825A (zh) 一种任务处理方法和网络设备
CN109194589B (zh) 一种mdc实现方法及装置
US20230161541A1 (en) Screen projection method and system
CN111225070B (zh) 流量控制方法、装置、系统和sdn控制器
US20180262560A1 (en) Method and system for transmitting communication data
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
CN108347472B (zh) Ip地址的配置方法、云服务器、云平台及可读存储介质
CN108540408B (zh) 一种基于Openstack的分布式虚拟交换机的管理方法及系统
US9268621B2 (en) Reducing latency in multicast traffic reception
US11048555B2 (en) Method, apparatus, and computer program product for optimizing execution of commands in a distributed system
WO2023169270A1 (zh) 报文处理方法及电子设备
KR20200087673A (ko) 전자 메시지 적응
CN108353017B (zh) 计算系统和用于操作多网关虚拟机上的多个网关的方法
US20220263679A1 (en) Information synchronization method, terminal and information synchronization system
CN110737530B (zh) 一种提升handle标识解析系统收包能力的方法
CN111669355B (zh) 一种批量处理nginx网络隔离空间的方法及nginx服务器
CN109309583B (zh) 基于分布式系统的信息获取方法、装置、电子设备和介质
US20220358055A1 (en) Method and apparatus for acquiring device information, storage medium and electronic device
CN116662037B (zh) 一种共享内存的处理方法、装置、电子设备及存储介质
CN111355818B (zh) 地址解析调度方法、装置及地址解析系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant