Lazy loaded image
技术分享
vdsm中network模块的dhcp-monitor
00 分钟
2024-2-1
2024-12-27
type
status
date
slug
summary
tags
category
icon
password
dhcp_monitor 是 VDSM 的 network 模块中的一部分,这里单独记录下源码分析。
对应到前面,执行这个 _dhcp_event_handler,其中 address.address, address.prefixlen 对应 ip address 和 network mask。这里的 address 和 iface 是从 event 中读取的,EventField.IFACE 和 EventField.ADDRESS 是常量:
然后 add_dynamic_source_route_rules -> _setup_desired_state -> setup -> state_apply, state_apply 是 libnmstate 的方法,也就是设置网络的期望状态(声明式网络管理器API),也就是说,这里提交了该物理机期望的网络状态,提交给 nmstate,由 nmstate 去设置。
generate_dynamic_source_route_rule_state 用于生成网络配置信息。
查看helper ,目前只支持 IPv4 的 source routing
最后调用 NetworkingState 生成了一个 networkingstate 对象,里面设置了 ip,mask,gateway。 此时 NetworkingState 对象的其它方法就可以通过 network api 去调用,去修改 vdsm host 网络的信息。比如 lib/vdsm/network/nmstate/state.py 中的 update_mtu() 方法,在 lib/vdsm/network/nmstate/api.py 中的 generate_state 接口调用,而 generate_state 在 lib/vdsm/network/netswitch/configurator.py 的 _setup_nmstate 中调用,一直到最上层,就是 setupNetworks 接口。
Cif 的 notify 方法位置: lib/vdsm/clientIF.py 中的 notify
跟网络相关的,很多地方使用 event.get() 获取的数据,_event 是从 _nl_monitor 中获取的
nl_monitor 实际上是 lib/vdsm/network/netlink/monitor.py 中的 Monitor,而这个 Monitor 实际上是 netlink 的 monitor,跟 libnl.GROUPS 对应。netlink 参考 Netlink 和 libnl 基础
上一篇
vdsm中的qos
下一篇
vdsm源码阅读