可经由多种现代化协议下发至设备,实现配置与状态的集中管控:NETCONF:基于SSH协议,提供事务性配置机制与精准的数据操作能力,适用于对可靠性要求极高的电信级网络;以下是一个典型的数据中心带外管理网拓扑:RESTCONF :基于HTTP协议,提供RESTful风格的API接口,便于与Ansible、Python等DevOps工具集成,支持快速开发与自动化编排;与 NETCONF相比,RESTCONF 提供基本的 CRUD 支持情况截至2025年底,运行最新版本AsterNOS的星融元交换机,包含数据中心、园区和边缘智能网关/路由产品系列,已支持新一代的基于 YANG 数据模型的运维管理接口,其中包括 NETCONF,RESTCONF
switch ovsk,protocols=OpenFlow13 在控制器页面查看到的拓扑图 使用postman查看交换机id信息,交换机id为1 http://192.168.123.10:8080/restconf /operational/network-topology:network-topology 下发第一条流表 PUT http://192.168.123.10:8080/restconf/config /action> </apply-actions> </instruction> </instructions> </flow> 下发第二条流表 http://192.168.123.10:8080/restconf instruction> </instructions> </flow> 登陆交换机,查看流表 ovs-ofctl dump-flows s1 删除第一条流表 http://192.168.123.10:8080/restconf config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1 删除第二条流表 http://192.168.123.10:8080/restconf
4.RESTCONF RESTCONF[6]是基于REST模式、用于网络配置与管理的协议,目的在于为WEB应用提供一个获取配置数据、状态数据、通知事件的标准机制。 RESTCONF和NETCONF对比 具体来说,与其他REST协议类似,一个RESTCONF操作是由HTTP方法和被请求资源的URI构成。 除了PATCH方法可以操作多个数据存储外,RESTCONF的每个操作都只能限定一个对象。在RESTCONF协议中,操作的对象实际上是层次化的资源,每个资源都代表设备内的一个可管理部件。 RESTCONF的操作格式如图4所示,其中方法(method)为GET、PUT等HTTP方法名,入口(entry)为RESTCONF固定的"/restconf",资源(resource)为标识资源的表达式 ,查询(query)为此RESTCONF消息携带的参数(以键值对的形式出现),最后一项“fragment”在RESTCONF中不使用。
--<feature version='${<em>restconf</em>.version}'>odl-restconf</feature>--> <bundle>mvn:org.opendaylight.ODL-skeleton 然后读取: curl --verbose -u admin:admin http://localhost:8181/restconf/config/skeleton:Skeleton 截图如下: ? curl --verbose -u admin:admin http://localhost:8181/restconf/config/skeleton:Skeleton 返回的json结果如下: {" 然后我们再获取一次数据,看数据是否已经存入datastore,curl命令如下: curl --verbose -u admin:admin http://localhost:8181/restconf --<feature version='${<em>restconf</em>.version}'>odl-restconf</feature>--><bundle>mvn:org.opendaylight.ODL-skeleton
Carbon版本包含最新的标准化的RFC 8040,RESTCONF的实现。 到目前为止,OpenDaylight用户可能最熟悉与RESTCONF Draft 02 API进行交互,Draft 02 API仍然在OpenDaylight中很好的兼容,因为很多软件仍然依赖该API实现 新的RFC 8040RESTCONF API通过单独的端点提供,OpenDaylight鼓励用户开始探索并使用标准版本的API,因为社区支持DRAFT 02版本的时间具有很大的不确定性。 此外,通过在AAA项目中添加基于模型的授权模式,可以提高RESTCONF的安全性。运营商现在可以在运行时将URL端点集合动态限制为特定类别的用户,这种加强的授权机制适用于两种RESTCONF版本。 相比较于RESTCONF、NETCONF或其他一些北向接口,应用程序开发人员可以挂接总线来操纵数据,实际上这解锁了使用支持ZMQ集成的非JRE语言编写控制器应用程序的功能,从这个角度来说,它开创了一套全新的开发人员参与项目的能力
4RESTCONF RESTCONF[6]是基于REST模式、用于网络配置与管理的协议,目的在于为WEB应用提供一个获取配置数据、状态数据、通知事件的标准机制。 RESTCONF和NETCONF对比 具体来说,与其他REST协议类似,一个RESTCONF操作是由HTTP方法和被请求资源的URI构成。 除了PATCH方法可以操作多个数据存储外,RESTCONF的每个操作都只能限定一个对象。在RESTCONF协议中,操作的对象实际上是层次化的资源,每个资源都代表设备内的一个可管理部件。 RESTCONF的操作格式如图4所示,其中方法(method)为GET、PUT等HTTP方法名,入口(entry)为RESTCONF固定的"/restconf",资源(resource)为标识资源的表达式 ,查询(query)为此RESTCONF消息携带的参数(以键值对的形式出现),最后一项“fragment”在RESTCONF中不使用。
application/xml Accept: application/xml Authorization: [方法如下] 如下图,在URL地址中输入: http://127.0.0.1:8181/restconf application/xml Accept: application/xml Authorization: [方法如下] 在URL地址栏中输入以下命令: http://127.0.0.1:8181/restconf application/xml Accept: application/xml Authorization: [方法如下] 在URL地址栏中输入以下命令: http://127.0.0.1:8181/restconf With XML: 在URL地址栏中输入以下命令: http://127.0.0.1:8181/restconf/operations/sal-flow:add-flow 提交方式: POST Content 方法如下: 在URL地址栏中输入以下命令: http://127.0.0.1:8181/restconf/operations/sal-flow:update-flow 提交方式: POST Content
tcp 2551/tcp 8181/tcp 8181/udp masquerade: no forward-ports: icmp-blocks: rich rules: 端口8181用于restconf /bin/karaf 3.安装集群组件 安装集群组件,如odl-mdsal-clustering、odl-openflowplugin-flow-services和odl-restconf-all后,在控制器目录中的 configuration目录内会有initial目录生成,下文的配置文件均位于该initial目录内,安装odl-openflowplugin-flow-services和odl-restconf-all 下文会利用restconf向config datastore中写入flow。 karaf> feature:install odl-mdsal-clustering odl-openflowplugin-flow-services odl-restconf-all 注:可以在karaf
TNSR 具有 RESTCONF API(支持对多个实例进行编排管理)以及用于单实例管理的 CLI。 TNSR 在 Linux 主机操作系统(ubuntu系统)上运行。 TNSR 的所有管理(包括配置、故障排除和更新)均在控制台或通过 RESTCONF 执行。 在云或虚拟环境中,控制台访问可能可用,但建议的配置仍然是专用于 RESTCONF API 访问的主机操作系统接口。 默认情况下,面向管理的服务(例如 SSH、RESTCONF API 和 SNMP)在命名 空间中运行host,但这些服务能够使用单独的实例同时在两个命名空间中运行。 TNSR 是使用开源软件项目从头开始设计和构建的,如下: 矢量包处理(VPP) 数据平面开发套件(DPDK) YANG用于数据建模 Clixon系统管理 命令行界面 (CLI) RESTCONF用于nginx
go-zero/core/conf" "github.com/tal-tech/go-zero/rest")func main() { var c struct { rest.RestConf } conf.MustLoad("configs/config.yaml", &c) engine := rest.NewServer(c.RestConf) defer engine.Stop
1 简介 本文主要介绍基于OpenDaylight子项目OVSDB中的southbound组件来搭建VxLAN网络,包括初始环境搭建和southbound RestConf API调用等。 Southbound-api的ovsdb.yang定义了southbound的restconf API的格式和含义,使用southbound rest api之前建议浏览下。 也可以用postman调用RESTConf API来新建bridge。 opendaylight-postman-vxlan/ 5 总结 本文分析了基于OpenDaylight子项目OVSDB中的southbound组件来搭建VxLAN网络,详细介绍了通过Postman下发RESTConf
128983913991 5)postman支持多种格式,例如JSON/XML/HTML,下面以JSON为例 显示流表 照例填入(修改适当的DPID),点send即可 http://10.10.33.28:8181/restconf 下发流表 "normal"的便签页写入网址,action选"PUT" http://10.10.33.28:8181/restconf/config/opendaylight-inventory:nodes
IspSrv上的工作任务 在 IspSrv 上导入 OpenDayLight 软件包; 启动 OpenDayLight 的 karaf 程序,并安装如下组件: feature:install odl-restconf IspSrv:~# source /etc/profile 安装组件: opendaylight-user@root> opendaylight-user@root>feature:install odl-restconf
在odl控制台中执行 feature:install odl-dlux-all feature:install odl-l2switch-all feature:install odl-restconf-all 7、重要的地方 http://192.168.65.129:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1
Postman实现流表下发 使用Opendaylight虚拟机 安装jdk1.8,并启动opendaylight 安装组件: 图片 首先清理旧数据 DELETE http://127.0.0.1:8181/restconf
配置交换机P3 往交换机P3上加meter 方法: PUT URI: http://{controller-IP}:8181/restconf/config/opendaylight-inventory 往交换机P3上加带有meter的flow entry (从源IP到目的IP) 方法: PUT URI: http://{controller-IP}:8181/restconf/config/opendaylight-inventory 往交换机P3上加从目的IP到源IP的flow entry 方法: PUT URI: http://{controller-ip}:8181/restconf/config/opendaylight-inventory
第2版将在第1版的基础上添加TextFSM详解、Netmiko详解、Nornir详解、NETCONF详解及RESTCONF详解等5章内容,并去掉pyping、pyntc、netdev等一些不再流行或者作者已经公开宣布不再维护的模块内容 网路行者”作者联合“网工手艺”作者全新打造 ★ 面向Python零基础网工的Go-To Book再版升级,基于Python 3.10 ★ 新增TextFSM、Netmiko、Nornir、NETCONF、RESTCONF
• 示例代码:engine := rest.MustNewServer(c.RestConf) engine.AddRoute(rest.WithSSE("/sse", sseHandler)) 2.
//go:embed static/* var staticFiles embed.FS func main() { server := rest.MustNewServer(rest.RestConf 持续性能剖析集成 持续性能剖析功能内置于框架中,启动服务器时开启即可: . server := rest.MustNewServer(rest.RestConf{ Host: "0.0.0.0"
HTTPBasicAuth('admin', 'admin')) return resp if __name__ == "__main__": url = 'http://10.10.11.80:8181/restconf