发起问题
0

OpenStack Neutron rpc调用的疑问

提问于 2015-05-06 04:59:11 -0500

creasyboy2002 图像

Neutron Plugin和agent通信是rpc完成的。但代码中ml2 plugin通过port_update rpc 通知ovs_neutron_agent时是怎么指定通知的agent,就是怎么指定通知的运行在哪个compute节点上的ovs_neutron_agent的?我理解每个port和compute节点上的一个vm关联,plugin怎么知道这个vm在哪个compute节点?

我看调用rpc时topic没有指定host。

def port_update(self, context, port, network_type, segmentation_id,
                physical_network):
    cctxt = self.client.prepare(topic=self.topic_port_update,
                                fanout=True)
    cctxt.cast(context, 'port_update', port=port,
               network_type=network_type, segmentation_id=segmentation_id,
               physical_network=physical_network)
edit retag flag offensive close merge delete
0

回答 2015-05-21 04:47:16 -0500

Javeme 图像

1.port更改时,会通知所有的agent,agent可获得更新的port列表。结果记为updated_ports。

2.agent循环扫描当前存在的端口,如果有vm创建了一个新的port,那么下一次扫描时可以获取到。扫描结果记为cur_ports。

3.通过上述2步的结果相与(updated_ports & cur_ports),得出的结果即为本节点vm变化了的ports。

4.基于第3步结果做下一步处理,如更新安全组、绑定端口。

详见代码:

class OVSNeutronAgent
    port_update()
    scan_ports()
    process_network_ports()
edit flag offensive delete link 更多

你的回答

Please start posting anonymously - your entry will be published after you log in or create a new account.

开始回答

提问工具

1 follower

统计

已提问: 2015-05-06 04:59:11 -0500

已查看: 418 次

最后更新: May 21 '15