前言
搞sdwan也搞了一段时间了,数据交互用的是netconf,sysrepo相当于是一个数据库。本文着重介绍一下sysrepo的使用方式。
sysrepo
- Sysrepo是一个开源的配置数据存储库,它用于存储网络设备的配置和状态数据。
- 它提供了一个层次化的数据模型,允许将配置和状态信息以树形结构的方式组织和管理。
- Sysrepo支持YANG数据模型,这是一种用于描述网络设备配置和状态的标准化语言。
其与netconf的关系: - Sysrepo提供了一个用于存储和管理配置数据的基础设施,这些数据可以是基于YANG数据模型的。
- NETCONF客户端可以使用NETCONF协议与网络设备通信,读取和更改配置数据。
- Sysrepo通常用作NETCONF服务器端的一部分,它负责存储和管理设备的配置数据,以便NETCONF客户端可以通过NETCONF协议访问和操作这些数据。
- 这种集成允许网络管理员和运维人员使用NETCONF协议与设备进行交互,通过Sysrepo的支持,可以更方便地管理和配置网络设备,确保网络的可靠性和一致性。
综上所述,Sysrepo和NETCONF是一对强大的组合,用于简化网络设备的配置和管理,使网络管理员能够更有效地操作和维护网络基础设施。
sysrepo与libyang的关系
- Sysrepo使用libyang作为其YANG数据模型处理的基础库。当Sysrepo需要解析、验证、加载或操作YANG数据模型时,它会依赖于libyang提供的功能。
- XPath是一种用于在XML文档中进行高级搜索和定位的查询语言,它通常与libyang一起使用。libyang允许您使用XPath查询来过滤和检索YANG数据模型的数据实例,以便更方便地访问所需的信息。
- 使用libyang的XPath功能,您可以编写XPath表达式来选择YANG数据模型中的特定节点或值,这对于从复杂的YANG数据模型中提取所需信息非常有用。
综上所述,Sysrepo与libyang之间的关系在于,Sysrepo依赖于libyang来处理YANG数据模型,而libyang则提供了XPath支持,以便更灵活地操作和查询YANG数据模型的数据实例。这种集成使得在网络设备配置和管理中更容易使用YANG数据模型和XPath来处理和操作数据。
sysrepo常用
change方式配置数据
rc = sr_module_change_subscribe(session,
"XXX-xxx",
"/xxx-xxx:xxx",
my_cfg_cb,
*private_ctx,
0,
SR_SUBSCR_DEFAULT,
&vrf_sub);
用于订阅特定 YANG 模块的配置数据更改事件。这个函数允许注册回调函数,以便在配置数据发生更改时接收通知并执行自定义操作。通过使用 sr_module_change_subscribe 函数,您可以在应用程序中实现对特定 YANG 模块配置数据更改的监听和响应。
get方式得到状态数据
rc = sr_oper_get_items_subscribe(session,"xxx-routing",
"/xxx-routing:routing-state", my_provider_cb,
NULL,SR_SUBSCR_CTX_REUSE, &route_plugin->subscription);
在回调函数中,您可以处理操作数据获取请求,根据请求提供自定义的操作数据。回调函数的参数包括请求的 XPath 表达式、请求的 ID、以及用于存储操作数据的值(values 数组)等。
通过使用 sr_oper_get_items_subscribe 函数,您可以实现对特定 YANG 模块操作数据的动态生成和提供。一般用于get状态数据。
rpc方式下发一条指令
rc = sr_rpc_subscribe(session,
MY_XPATH,
exec_cmd_cb,
*private_ctx,
0,
SR_SUBSCR_CTX_REUSE,
&g_devcmd_sub);
该函数用于订阅特定 YANG 模块的远程过程调用(RPC)请求。一般用于下发一条指令。
以后台进程方式监听事件
sysrepo的使用不仅可以以回调函数的方式应用,还可以与sysrepo建立链接。本人一般的应用是有事件时进行通知。
建立连接:
sr_conn_ctx_t *connection = NULL;
rc = sr_connect(SR_CONN_DEFAULT, &connection);
if (SR_ERR_OK != rc) {
return -1;
}
rc = sr_session_start(connection, SR_DS_RUNNING, &session);
if (SR_ERR_OK != rc) {
return -1;
}
上报通知事件:
rc = sr_event_notif_send(session, MY_XPATH, values, ALM_ATTR_MAX);
sr_event_notif_send 函数的应用场景涵盖了许多领域,其中包括实时监控、通信、报警、集成和审计等。它允许应用程序在关键事件发生时通知其他组件,并支持实时响应和协作。
sysrepo命令
sysrepo几大工具分别是:
- sysrepo-plugind,sysrepo的后台进程,加载所有的动态库监听事件, 具体请看https://lovecpro.github.io/2020/09/26/sysrepo-src/
- sysrepoctl,主要是操作yang文件
- sysrepocfg,对数据库数据的操作
sysrepoctl
sysrepoctl
是与 Sysrepo 配置数据存储库管理和操作工具相关的命令行实用程序。它用于执行各种与 Sysrepo 存储库相关的操作,以便更轻松地配置、管理和维护网络设备的配置数据。以下是一些常用的 sysrepoctl
命令:
1.安装yang模型
sysrepoctl --install -p <path_to_yang_file>
通过这个命令,您可以安装一个或多个 YANG 数据模型,以便将它们添加到 Sysrepo 存储库中,以供后续的配置和管理使用。
2.卸载yang模型
sysrepoctl --uninstall -p <path_to_yang_file>
这个命令允许您卸载已安装的 YANG 数据模型,从而将其从 Sysrepo 存储库中移除。
3.查看已安装yang模型
sysrepoctl -l
这个命令您可以列出当前在 Sysrepo 存储库中安装的所有 YANG 数据模型。
sysrepocfg
- sysrepocfg 是 Sysrepo 的一个客户端工具,用于与 Sysrepo 存储库进行交互。
使用 sysrepocfg,管理员可以执行以下操作:
- 读取当前配置数据
- 编辑和修改配置数据
- 添加新的配置数据
- 删除配置数据
- 验证配置数据的合法性
sysrepocfg 允许管理员在命令行中直接操作 Sysrepo 存储库中的配置,这在设备配置和管理中非常有用。
总之,sysrepocfg 是一个用于管理 Sysrepo 存储库配置数据的命令行工具,它与 Sysrepo 密切合作,允许管理员手动配置和管理网络设备的行为。这种集成使得管理员可以更灵活地操作配置数据,以适应特定的网络需求。
常用命令示例如下:
1.编辑配置
sysrepocfg --edit=$FILE -d startup -f xml -m ietf-netconf-server -v2
通过这个命令,以交互方式编辑 Sysrepo 配置数据存储库中的配置数据。通过这个命令,您可以打开一个文本编辑器,编辑配置数据,然后将更改保存回 Sysrepo 存储库。
2.导出配置
sysrepoctl --export -m <module_name> -o <output_file>
执行此命令后,Sysrepo 将从指定的 YANG 模块中导出配置数据,并将其保存到指定的输出文件中。导出的数据通常以 XML 或其他适合配置数据的格式进行保存,具体格式可能取决于 Sysrepo 的配置和指定的 YANG 模块。
这种导出功能对于定期备份配置数据或将配置数据从一个设备迁移到另一个设备非常有用。一旦配置数据导出到文件中,您可以在需要时使用 sysrepocfg --import 命令将其导入到另一个 Sysrepo 存储库中。
3.导入配置
sysrepocfg --import -m <模块名称> -f <输入文件>
执行此命令时,Sysrepo 将从输入文件中读取配置数据,并将其加载到指定的 YANG 模块中,存储在 Sysrepo 数据存储库中。这允许将以前导出的配置数据重新导入到 Sysrepo 中,以还原或恢复配置。
欢迎关注个人博客沟通交流 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。