您的位置:首页 > 其它

K版新增端口时ovs-agent的处理过程

2016-12-29 10:06 295 查看
作者:吕嘉伟
1. rpc_loop ovs-agent的大循环
收集ovs上的所有端口信息,然后分类,并处理

2. process_network_ports
主要搜集skipped_devices,need_binding_devices,security_disabled_ports三类端口; (通过treat_devices_added_or_updated函数)
为新增端口(port_info.get('added', set()))创建安全组规则;
调用_bind_devices 绑定need_binding_devices;
删除已经不在的端口信息(port_info.get('removed', set()))(主要是neutron-server数据库中的信息)。

3. _bind_devices 处理需要绑定的端口
首先根据端口所在的网络,提取网络的lvm号;
提取该端口在ovs上的internal tag,新端口一般为[];
比较tag和lvm是否相等,不相等则为新端口设置internal tag;
删除in_port=port.ofport的流表 ; (不清楚为什么)
更新端口的数据库状态为active; (neutron-server调用update_device_up)。

4. treat_devices_added_or_updated函数,这里主要关注need_binding_devices列表的生成。
函数遍历每一个端口,使用treat_vif_port函数判断端口是都需要绑定。
5. treat_vif_port
该函数判断端口的admin_state_up状态,若为True则调用port_bound,port_bound函数负责初始化网络流表,将port与lvm进行绑定,然后为端口配置ovs的other_config。
附:
update_device_up过程
检测端口所在的host-id和数据库中的记录的host-id是否一致;
若检测一致,则更新端口状态为active;
通知l3 agent做些路由操作

本文写的较为粗略,有不准确的地方,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: