【ODL源码分析04】-ovsdb 被动连接上报流程

版本:opendaylight-ovsdb项目:fluorine-sr2

说明:本文档主要关注ovsdb被动连接情况下,连接成功后的上报及处理流程;

1 ovsdb 连接服务-OvsdbConnectionService

如下流程图为ovsdb 连接模块的连接启动过程,ovsdb分主动连接和被动连接两种方式,流程着重阐述了被动连接情况下的方法处理细节:

a=主动模式
a=被动连接
SouthboundProvider--监听Topology
启动ovsdb-manaer>>>ovsdbConnection.startOvsdbManager
OvsdbConnectionService
主动方式参数全>>>>ovsdbManagerWithSsl
被动不带ssh参数>>>ovsdbManagerWithSsl
F1:添加各种handler:包括JsonRpcDecoder-StringEncoder-IdleStateHandler
F2:从连接处理-handleNewPassiveConnection
F2.1-SSL相关处理流程-连接握手状态处理
F2.2-普通从连接处理流程-handleNewPassiveConnection
F3-通知各个监听器从连接连接成功-notifyListenerForPassiveConnection
F4-通知各个监听器:listener.connected
F4.1: HwvtepConnectionManager-connected
F4.2: OvsdbConnectionManager-connected

ovsdb南向模块在节点连接成功后,会触发相关监听器,回调连接成功处理函数:connected:

  • hwvtep节点处理:HwvtepConnectionManager
  • 普通ovsdb节点处理:OvsdbConnectionManager

2 OvsdbConnectionManager的节点连接处理-connected(OvsdbClient externalClient)

连接成功处理包含三个动作:

  • 获取database> 通过externalClient获取Open_vSwitch数据库;
  • 获取ovsdb连接实例> OvsdbConnectionInstance;
  • 向集群注册实例> registerEntityForOwnership;

connectedButCallBacksNotRegistered的处理逻辑,如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHBDDPiu-1571312653014)(./pic/01-01-ovsdb-OvsdbConnectionInstance创建.png)]

为集群实体注册ConnectionInfo-registerEntityForOwnership

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obiWrgqG-1571312653016)(./pic/01-02-ovsdb-registerEntityForOwnership.png)]

3 ovsdb node节点上报的研究-1

3.1 注册回调-registerCallbacks

ovsdb/southbound/OvsdbConnectionInstance.java--registerCallbacks
定义回调:callback = new OvsdbMonitorCallback
调用回调更新:monitorTables->this.callback.update
命令模式执行各个COMMAND-OvsdbMonitorCallback>>>txInvoker.invoke...

3.2 命令模式

命令模式中包含了基本上ovsdb所有的数据处理,包括节点信息上报、数据适配更新等,在此不再详尽描述,后续另外起一个文档转本阐述ovsdb模型适配上报中的命令模式研究!

这里的关键就是OvsdbMonitorCallback的update方法,通过invoke方法调用命令聚合类,并执行所有方法的execte!

    @Override
    public void update(TableUpdates result, DatabaseSchema dbSchema) {
        txInvoker.invoke(new OvsdbOperationalCommandAggregator(instanceIdentifierCodec, key, result, dbSchema));
        LOG.trace("Updated dbSchema: {} and result: {}", dbSchema, result);
    }

在这里插入图片描述

4 关注ConnectionInfo-ovsdb node 的产生

根据3节的分析,进入命令模式后的处理,就是把ovsdb南向的json串转换成ovsdb定义的yang模型,进行各种模型的适配和上报处理,另外下发环节的Command则反之,读取yang转换成ovsdb的配置,我们仍然只是关注上报流程

在这里插入图片描述

在这里插入图片描述

可以看到正式OvsdbConnectionInstance类中包含了connectionInfo信息,再看一下哪个地方把这个模型填入了

经过分析和推断OpenVSwitchUpdateCommand构造了相关的模型,并填入node上报的信息:

在这里插入图片描述

5 总结

本文主要分析ovsdb被动连接状态下,节点状态上报的全流程,其中的部分关键流程入命令模式原理、关键模型均未展开分析,后续给出相关的详细说明;

发布了88 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xinquanv1/article/details/102613636