ovs-agent流程

1. 代碼流程分析

neutron/plugins/openvswitch/agent/ovs_neutron_agent.py:main()  
    plugin = OVSNeutronAgent(**agent_config)  
        self.setup_integration_br() #建立br-int集成網橋並初始化流表
        self.setup_rpc()  #創建一些agent與server側經常使用的rpc通道
            self.plugin_rpc = OVSPluginApi(topics.PLUGIN) #如get_device_details/update_device_down/update_device_up/tunnel_sync
self.sg_plugin_rpc = sg_rpc.SecurityGroupServerRpcApi(topics.PLUGIN) #查詢安全組信息 self.state_rpc
= agent_rpc.PluginReportStateAPI(topics.PLUGIN) #處理report_state self.connection = agent_rpc.create_consumers(...)
          #建立如下消費者們:port update/delete, tunnel update/delete, security_group update, dvr update, l2population update host heartbeat
= loopingcall.FixedIntervalLoopingCall(self._report_state) #週期任務上報agent狀態,如br-int上有多少device,agent當前時間等 self.setup_physical_bridges(bridge_mappings)
          #處理物理網橋與br-int的關聯(採用veth對/path對),若是物理網橋不存在則直接退出agent,並初始化流表 self.setup_tunnel_br()/ self.reset_tunnel_br(tun_br)
          #建立br-tun,與br-int關聯(採用patch對),並初始化流表
          #爲啥要分開處理? self.setup_ancillary_bridges(integ_br, tun_br) # 識別出本host上除了br-int、br-tun和物理網橋以外的網橋,如br-ex self.sg_agent
= OVSSecurityGroupAgent(...) # 用於處理安全組
self.connection.consume_in_threads() # 對以上consume開啓各個線程監聽並處理 plugin.daemon_loop() self.rpc_loop()   tunnel_sync() #在agent首次啓動或有異常發生時,會進行tunnel同步。
              #上報本agent的tunnel ip到neutron server DB中,neutron server同時發送關於該tunnel ip的消息(tunnel_update)給其餘agents
              #若是沒有開啓l2pop,則在本agent上會在br-tun上建立tunnel port,其餘agents也會建立相應的remote tunnel port,並建立相應流表
       port_info = self.scan_ports()  #週期檢測br-int上的端口變化
sync = self.process_network_ports(port_info) #處理增長或刪除的port
 

 neutron-server和neutron-openvswitch-agent的消息隊列以下:安全

neutron-server可能會發生上述幾種消息廣播給neutron-openvswitch-agent。openvswitch agent會先看一下端口是否在本地,若是在本地則進行對應動做。app

 

2. nova與neutron-openvswitch-agent的交互

 

首先boot虛機時,nova-compute發消息給neutron-server請求建立port。以後,在driver裏面在br-int上創建port後,neutron-openvswitch-port循環檢測br-int會發現新增端口,對其設定合適的openflow規則以及localvlan,最後將port狀態設置爲ACTIVE。oop

 

附:ovs啓動流程圖(http://bingotree.cn/wp-content/uploads/2015/05/ovs-agent%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B1.pngspa

相關文章
相關標籤/搜索