一种浮动地址的处理方法及电子设备与流程

文档序号:11216016阅读:351来源:国知局
一种浮动地址的处理方法及电子设备与流程

本发明涉及互联网技术领域,尤其涉及一种浮动地址的处理方法及电子设备。



背景技术:

由于ip资源有限,在云计算环境中为了节省资源和成本,同时从安全上考虑,一般不会默认为所有的虚拟机(vm,virtualmachine)分配公网ip,而是采用浮动地址(floatingip)的方式,即:租用一组floatingip作为ip池,在某个vm需要floatingip时,通过网络地址转换(nat,networkaddresstranslation)方式将其映射到相应的vm上,如图1所示,通过虚拟机路由器(vrouter)实现目标地址转换(dnat)和源地址转换(snat),其中,dnat是将floatingip转换为vm在内网的ip,snat是将vm在内网的ip转换为相应的floatingip。

现有方案至少存在以下缺点:

1)vm的用户(user)在vm中无法看到自己的vm是否有floatingip以及floatingip是多少,这会给用户造成困扰,比如用户通过安全外壳协议(ssh,secureshell)登陆了一个vm,在vm中看到ip与实际ip不一致,无法确认是否正确登陆。

2)因为用户在vm中无法看到floatingip,所以用户的应用就无法直接使用该floatingip,会给用户应用带来不便,比如mysql服务,其服务地址为10.100.211.100:3306,从应用配置和安全角度考虑,需要监听10.100.211.100这个ip,但在这种情况下是无法实现的。



技术实现要素:

为解决上述技术问题,本发明实施例提供了一种浮动地址的处理方法及电子设备。

本发明实施例提供的浮动地址的处理方法,包括:

第一设备接收到第二设备转发的数据包时,对所述数据包进行解析;

根据所述数据包的解析结果,判定所述数据包是否携带标识信息;

如果所述数据包携带所述标识信息,则将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址;

如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。

本发明一实施方式中,所述方法还包括:

所述第一设备接收所述第二设备发送的配置信息;

所述第一设备基于所述配置信息,在所述虚拟机上增加所述第一网卡,并将所述虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有所述第二网卡,所述第二网卡对应所述虚拟机的内网地址。

本发明一实施方式中,在所述数据包的扩展属性字段中携带所述数据包的源发送端的的地址信息,所述源发送端为第三设备;

所述方法还包括:

如果所述数据包携带所述标识信息,则从所述数据包中提取所述第三设备的地址信息,将所述第三设备的地址信息配置在所述数据包的源地址信息中。

本发明另一实施例提供的浮动地址的处理方法,包括:

第二设备接收到第三设备发送的数据包时,判定是否需要对所述数据包进行第一类地址转换,所述第一类地址转换用于将浮动地址转换为内网地址;

当需要对所述数据包进行第一类地址转换时,根据转发表将所述数据包中的浮动地址转换为对应的内网地址,并在所述数据包中携带标识信息,所述标识信息用于标识所述数据包在所述第二设备中进行了第一类地址转换;

将所述数据包发送至第一设备。

本发明一实施方式中,所述方法还包括:

在所述数据包的扩展属性字段中携带所述第三设备的地址信息。

本发明实施例提供的电子设备上设置有虚拟机,所述电子设备包括:

通信装置,用于接收到第二设备转发的数据包;

处理器,用于对所述数据包进行解析;根据所述数据包的解析结果,判定所述数据包是否携带标识信息;如果所述数据包携带所述标识信息,则将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址;如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。

本发明一实施方式中,所述通信装置,还用于接收所述第二设备发送的配置信息;

所述处理器,还用于基于所述配置信息,在所述虚拟机上增加所述第一网卡,并将所述虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有所述第二网卡,所述第二网卡对应所述虚拟机的内网地址。

本发明一实施方式中,在所述数据包的扩展属性字段中携带所述数据包的源发送端的的地址信息,所述源发送端为第三设备;

所述处理器,还用于如果所述数据包携带所述标识信息,则从所述数据包中提取所述第三设备的地址信息,将所述第三设备的地址信息配置在所述数据包的源地址信息中。

本发明另一实施例提供的电子设备,包括:

通信装置,用于接收到第三设备发送的数据包;

处理器,用于判定是否需要对所述数据包进行第一类地址转换,所述第一类地址转换用于将浮动地址转换为内网地址;当需要对所述数据包进行第一类地址转换时,根据转发表将所述数据包中的浮动地址转换为对应的内网地址,并在所述数据包中携带标识信息,所述标识信息用于标识所述数据包在所述第二设备中进行了第一类地址转换;

所述通信装置,还用于将所述数据包发送至第一设备。

本发明一实施方式中,所述通信装置,还用于向所述第一设备发送配置信息,所述配置信息用于在所述第一设备上增加第一网卡,并将虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有第二网卡,所述第二网卡对应所述虚拟机的内网地址。

本发明实施例的技术方案中,第一设备接收到第二设备转发的数据包时,对所述数据包进行解析;根据所述数据包的解析结果,判定所述数据包是否携带标识信息;如果所述数据包携带所述标识信息,则将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址;如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。采用本发明实施例的技术方案,通过数据包是否携有标识信息即可确定出该数据包是对vm的floatingip的访问,还是对vm的内部地址的访问,如果是对vm的floatingip的访问,则将该数据包发送至虚拟机的第一网卡上,如果是对vm的内部地址的访问,则将该数据包发送至虚拟机的第二网卡上。vm能够知道自身是否配置了floatingip(即第一网卡的地址)以及所配置的floatingip的具体内容,因此用户可以根据需求直接使用该floatingip。

附图说明

图1为现有的地址转换框架图;

图2为本发明实施例的floatingip的处理框架图一;

图3为本发明实施例的浮动地址的处理方法的流程示意图一;

图4为本发明实施例的浮动地址的处理方法的流程示意图二;

图5为本发明实施例的浮动地址的处理方法的流程示意图三;

图6为本发明实施例的floatingip的处理框架图二;

图7为本发明实施例的数据包的示意图;

图8为本发明实施例的电子设备的结构组成示意图。

具体实施方式

为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。

本发明实施例提供了一种新型的floatingip的实现方法,使用户可以在vm中直接看到并使用该floatingip。

图2为本发明实施例的floatingip的处理框架图一,如图2所示,左侧为计算机节点(computernode),右侧为网络节点(networknode),floatingip的处理流程包括:

1.管理员通过管理平台为vm分配一个floatingip,如10.100.211.3。

2.管理平台通知networknode,在其br-ext上配置10.100.211.3,并设置转发规则,使其可以将目的地址为10.100.211.3的数据包转发给vm的内网ip,如192.168.1.101。

3.同时需要通知computenode,为vm添加一个额外的网卡,即eth_floatingip,并配置其ip为floatingip,即10.100.211.3。

4.当用户访问10.100.211.3时,networknode首先收到用户的数据包,并将其转发给该vm。

5.当computenode上的br-int收到networknode转发过来的数据包时,如果数据包携有标识信息,则将该数据包转发给eth_floatingip所对应的端口(port),如果数据包未携有标识信息,则将该数据包转发给原来的eth0所对应的端口。

本发明实施例的技术方案,1)用户能直接看到vm的floatingip,更加直观和方便;2)floatingip的实现对用户完全通明,用户不必再借助管理平台才能获取floatingip的信息;3)由于在vm中能直接看到floatingip,用户的使用更加方便和多样化,比如可以直接监听,配置自己的floatingip。

图3为本发明实施例的浮动地址的处理方法的流程示意图一,如图3所示,所述浮动地址的处理方法包括以下步骤:

步骤301:第一设备接收到第二设备转发的数据包时,对所述数据包进行解析。

本发明实施例中,第一设备是指computernode,第一设备上设置有vm。第二设备知识networknode,第二设备主要实现vm的路由功能。

本发明实施例中,第二设备首先接收用户发送的数据包,如果对数据包进行了dnat处理,则表明该数据是一个访问vm的floatingip的数据包,反之,如果未对数据包进行dnat处理,则表明该数据不是一个访问vm的floatingip的数据包。对于访问vm的floatingip的数据包而言,在该数据包中打上一个标记(即标识信息),来表示该数据包是访问vm的floatingip的数据包。

基于此,当第一设备接收到第二设备转发的数据包时,对所述数据包中携带的信息进行解析。

步骤302:根据所述数据包的解析结果,判定所述数据包是否携带标识信息。

本发明实施例中,解析结果包括两种,一种是数据包携带标识信息,这表明该数据包是访问vm的floatingip的数据包。另一种是数据包未携带标识信息,这表明该数据包是访问vm的内网ip的数据包。

步骤303:如果所述数据包携带所述标识信息,则将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址。

本发明实施例中,第一设备上具有第二网卡,除此之外,在第一设备上新增加第一网卡,这里,第一网卡的地址为vm的floatingip。具体地,第一设备接收所述第二设备发送的配置信息;所述第一设备基于所述配置信息,在所述虚拟机上增加所述第一网卡,并将所述虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有所述第二网卡,所述第二网卡对应所述虚拟机的内网地址。

这里,管理员为vm分配一个floatingip,然后,由第二设备将该floatingip配置为第一设备,第一设备增加第二网卡及相应的端口,将第二网卡的地址设置为所配置的floatingip。

基于此,如果接收到的数据包携带标识信息,则将所述数据包发送至vm的第一网卡上。

步骤304:如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。

如果接收到的数据包未携带标识信息,则将所述数据包发送至vm的第二网卡上。

上述方案中,步骤303和步骤304之间不限制执行先后顺序。

图4为本发明实施例的浮动地址的处理方法的流程示意图二,如图4所示,所述浮动地址的处理方法包括以下步骤:

步骤401:第一设备接收到第二设备转发的数据包时,对所述数据包进行解析。

本发明实施例中,第一设备是指computernode,第一设备上设置有vm。第二设备知识networknode,第二设备主要实现vm的路由功能。

本发明实施例中,第二设备首先接收用户发送的数据包,如果对数据包进行了dnat处理,则表明该数据是一个访问vm的floatingip的数据包,反之,如果未对数据包进行dnat处理,则表明该数据不是一个访问vm的floatingip的数据包。对于访问vm的floatingip的数据包而言,在该数据包中打上一个标记(即标识信息),来表示该数据包是访问vm的floatingip的数据包。

基于此,当第一设备接收到第二设备转发的数据包时,对所述数据包中携带的信息进行解析。

步骤402:根据所述数据包的解析结果,判定所述数据包是否携带标识信息。

本发明实施例中,解析结果包括两种,一种是数据包携带标识信息,这表明该数据包是访问vm的floatingip的数据包。另一种是数据包未携带标识信息,这表明该数据包是访问vm的内网ip的数据包。

步骤403:如果所述数据包携带所述标识信息,则从所述数据包中提取第三设备的地址信息,将所述第三设备的地址信息配置在所述数据包的源地址信息中,将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址。

本发明实施例中,在所述数据包的扩展属性字段中携带所述数据包的源发送端的的地址信息,所述源发送端为第三设备。例如:第三设备经过第二设备的路由向第一设备发送一个数据包,第二设备向第一设备转发来自第三设备的数据包时,该数据包的源地址信息为第二设备的地址,本发明实施例将第二设备的地址转化为源发送端的地址,也即第三设备的地址,这样,用户便可以清楚的知道数据包的发送端来自哪里,而这个第三设备的地址则是在第二设备接收到第三设备的数据包后,直接在数据包的扩展属性字段中添加上的。

本发明实施例中,第一设备上具有第二网卡,除此之外,在第一设备上新增加第一网卡,这里,第一网卡的地址为vm的floatingip。具体地,第一设备接收所述第二设备发送的配置信息;所述第一设备基于所述配置信息,在所述虚拟机上增加所述第一网卡,并将所述虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有所述第二网卡,所述第二网卡对应所述虚拟机的内网地址。

这里,管理员为vm分配一个floatingip,然后,由第二设备将该floatingip配置为第一设备,第一设备增加第二网卡及相应的端口,将第二网卡的地址设置为所配置的floatingip。

基于此,如果接收到的数据包携带标识信息,则将所述数据包发送至vm的第一网卡上。

步骤404:如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。

如果接收到的数据包未携带标识信息,则将所述数据包发送至vm的第二网卡上。

上述方案中,步骤403和步骤404之间不限制执行先后顺序。

图5为本发明实施例的浮动地址的处理方法的流程示意图三,如图5所示,所述浮动地址的处理方法包括以下步骤:

步骤501:第二设备接收到第三设备发送的数据包时,判定是否需要对所述数据包进行第一类地址转换,所述第一类地址转换用于将浮动地址转换为内网地址。

本发明实施例中,第一设备是指computernode,第一设备上设置有vm。第二设备知识networknode,第二设备主要实现vm的路由功能。第三设备是指数据包的源发送端。

本发明实施例中,第一类地址转换也称为dnat,相对于第一类地址转换而言,第二类地址转换为snat,snat和dnat是两种相反流向的数据包处理过程。

本发明实施例中,第二设备接收到第三设备发送的数据包时,判定是否需要将浮动地址转换为内网地址。

步骤502:当需要对所述数据包进行第一类地址转换时,根据转发表将所述数据包中的浮动地址转换为对应的内网地址,并在所述数据包中携带标识信息,所述标识信息用于标识所述数据包在所述第二设备中进行了第一类地址转换。

本发明实施例中,当需要将浮动地址转换为内网地址时,则表明数据包是一个访问vm的floatingip的数据包,反之,如果不需要将浮动地址转换为内网地址时,则表明数据不是一个访问vm的floatingip的数据包。对于访问vm的floatingip的数据包而言,在该数据包中打上一个标记(即标识信息),来表示该数据包是访问vm的floatingip的数据包。

此外,第二设备向所述第一设备发送配置信息,所述配置信息用于在所述第一设备上增加第一网卡,并将虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有第二网卡,所述第二网卡对应所述虚拟机的内网地址。

本发明实施例中,第二设备还在数据包的扩展属性字段中携带所述第三设备的地址信息,这样可以便于第一设备获知数据包的来源。

步骤503:将所述数据包发送至第一设备。

当第一设备接收到数据包后,执行如图4所示的方法步骤。

图6为本发明实施例的floatingip的处理框架图二,如图6所示,左侧为networknode,右侧为computernode,floatingip的处理流程包括:

1)管理员通过管理平台为vm分配一个floatingip,管理平台将分配请求发送给nova-api。

2)nova-api接收到分配请求后,将分配请求转发给neutron-server。

3)neutron-server首先调用ovs-agent在vrouter上添加一个tap口;然后调用l3-agent将对应的floatingip配置到该tap口上;最后下发两条转发流表,实现floatingip和vm的内部ip之间的dnat和snat。

本发明实施例中,如果数据包在vrouter中进行了dnat,那么表明该数据包是一个访问vm的floatingip的数据包,需要在该数据包中设置一个标记,用来区分它是一个对floatingip的访问,并将源发送端的ip(以下简称源ip)写入数据包中,具体地,将源ip写入到数据包的扩展属性字段,如图7所示。

4)neutron-server通知vm所在计算节点上的ovs-agent,创建一个新的port对,分别为qbo和qvb。

5)nova-api通知vm所在计算节点上的nova-compute为vm添加一块新的网卡,对应的port为qvb;nova-comupte调用hypervisor为vm添加新的网卡eth_floatingip,并将floatingip配置到该网卡上。

6)neutron-server为vm所在的计算节点上的br-int下发一个新的流表,br-int收到访问vm的数据包时,对数据包中的标记(也即标识信息)进行判断,如果没有标记,则表明该数据包是一个访问内部ip的数据包,将其转发给vm的eth0;反之,则是一个访问floatingip的数据包,从该数据包的扩展属性字段中取出真正的源ip,将该源ip替换至数据包中的源地址字段中,从而使vm中的用户可以看到该数据包的真实来源。

图8为本发明实施例的电子设备的结构组成示意图,本发明实施例的电子设备作为计算机节点时,所述电子设备上设置有虚拟机,所述电子设备包括:

通信装置801,用于接收到第二设备转发的数据包;

处理器802,用于对所述数据包进行解析;根据所述数据包的解析结果,判定所述数据包是否携带标识信息;如果所述数据包携带所述标识信息,则将所述数据包发送至虚拟机的第一网卡上,所述第一网卡的地址为所述虚拟机的浮动地址;如果所述数据包未携带所述标识信息,则将所述数据包发送至虚拟机的第二网卡上,所述第二网卡的地址为所述虚拟机的内网地址。

在一实施方式中,所述通信装置801,还用于接收所述第二设备发送的配置信息;

所述处理器802,还用于基于所述配置信息,在所述虚拟机上增加所述第一网卡,并将所述虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有所述第二网卡,所述第二网卡对应所述虚拟机的内网地址。

在一实施方式中,在所述数据包的扩展属性字段中携带所述数据包的源发送端的的地址信息,所述源发送端为第三设备;

所述处理器802,还用于如果所述数据包携带所述标识信息,则从所述数据包中提取所述第三设备的地址信息,将所述第三设备的地址信息配置在所述数据包的源地址信息中。

本发明实施例的电子设备作为网络节点时,所述电子设备包括:

通信装置801,用于接收到第三设备发送的数据包;

处理器802,用于判定是否需要对所述数据包进行第一类地址转换,所述第一类地址转换用于将浮动地址转换为内网地址;当需要对所述数据包进行第一类地址转换时,根据转发表将所述数据包中的浮动地址转换为对应的内网地址,并在所述数据包中携带标识信息,所述标识信息用于标识所述数据包在所述第二设备中进行了第一类地址转换;

所述通信装置801,还用于将所述数据包发送至第一设备。

在一实施方式中,所述通信装置801,还用于向所述第一设备发送配置信息,所述配置信息用于在所述第一设备上增加第一网卡,并将虚拟机的浮动地址配置到所述第一网卡上,其中,所述虚拟机上还具有第二网卡,所述第二网卡对应所述虚拟机的内网地址。

本领域技术人员应当理解,图8所示的电子设备中的各单元的实现功能可参照前述浮动地址的处理方法的相关描述而理解。

本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1