OpenDaylight通过netconf对接netopeer2

article/2025/11/10 2:47:18

目的

利用OpenDaylight(client)的南向接口netconf对接netopeer2(server)

搭建netopeer2

  • 启动Ubuntu20的docker,将内部830端口映射为主机的22830端口
admin@ubuntu20:~$ docker run -d --name netopeer2_server --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 22830:830 jrei/systemd-ubuntu:20.04
  • 之前搭建过netopeer2,参考这里。
  • 需要注意的是相关组件的版本可能已经升级,例如libsysrepo.so.6已经更新为libsysrepo.so.7
  • 需要在make install的时候,关注编译出的target的名称和路径
  • 进入docker,创建用户名netconf,设置密码也为netconf
# useradd -m netconf -d /home/netconf -s /bin/bash     
# passwd netconf
New password: 
Retype new password: 
passwd: password updated successfully
  • 启动netopeer2-server
# /usr/local/bin/netopeer2-server -d -v 2

运行OpenDaylight

  • 开始去OpenDaylight的网站下载最新版,最后放弃,原因有二:
    • dlux这个GUI已经从源中删除
    • netconf连接不上netopeer2-server
  • 从这里下载一个比较老的版本
admin@ubuntu20:~$ wget https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/karaf/0.7.3/karaf-0.7.3.tar.gz
admin@ubuntu20:~$ 
admin@ubuntu20:~$ tar -zxvf karaf-0.7.3.tar.gz 
  • 配套的java8安装一下
admin@ubuntu20:~$ sudo apt install openjdk-8-jre-headless  -y
  • 启动ODL(忽略一些报错)
admin@ubuntu20:~/karaf-0.7.3/bin$ ./karaf ________                       ________                .__  .__       .__     __       \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \<   |  ||  | |  |/ ___\|  |  \   __\    /    |    \  |_> >  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  >   Y  \  |      \_______  /   __/ \___  >___|  /_______  (____  / ____||____/__\___  /|___|  /__|      \/|__|        \/     \/        \/     \/\/            /_____/      \/          Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.opendaylight-user@root>feature:install odl-netconf-connector-all odl-netconf-topology odl-restconf
opendaylight-user@root>
  • 安装必要的组件
opendaylight-user@root>feature:install odl-netconf-connector-all odl-netconf-topology odl-restconf
opendaylight-user@root>

对接

  • 参考官方文档
  • 因为PUT操作需要加payload,直接用curl不方便写,那么就借助postman
  • 下载
admin@ubuntu20:~$ wget https://dl.pstmn.io/download/latest/linux64
admin@ubuntu20:~$ mv linux64 postman-linux-x64.tar.gz
admin@ubuntu20:~$ 
admin@ubuntu20:~$ tar -zxvf postman-linux-x64.tar.gz 
  • 在Linux的图形界面运行postman
  • 填入内容如下
PUT http://localhost:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/netopeer2Headers:
Accept: application/xml
Content-Type: application/xml
Payload:<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"><node-id>netopeer2</node-id><host xmlns="urn:opendaylight:netconf-node-topology">127.0.0.1</host><port xmlns="urn:opendaylight:netconf-node-topology">22830</port><username xmlns="urn:opendaylight:netconf-node-topology">netconf</username><password xmlns="urn:opendaylight:netconf-node-topology">netconf</password><tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only><!-- non-mandatory fields with default values, you can safely remove these if you do not wish to override any of these values--><reconnect-on-changed-schema xmlns="urn:opendaylight:netconf-node-topology">false</reconnect-on-changed-schema><connection-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">20000</connection-timeout-millis><max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">0</max-connection-attempts><between-attempts-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">2000</between-attempts-timeout-millis><sleep-factor xmlns="urn:opendaylight:netconf-node-topology">1.5</sleep-factor><!-- keepalive-delay set to 0 turns off keepalives--><keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">120</keepalive-delay>
</node>
  • 几点说明

    • URL最后的device_name(这里是netopeer2),跟下面payload的node-id需要保持一致
    • payload里面的port需要跟端口映射保持一致,当然也可以写docker的IP+830端口
    • username/password需要是docker已有的可以ssh登录的用户名/密码
    • 放几张截图,认证填入用户名密码是ODL本身的用户名/密码
      在这里插入图片描述


    在这里插入图片描述

    • 点击"Send",返回"201 Created"
      在这里插入图片描述

验证

  • 在主机上用curl获取config信息
admin@ubuntu20:~$ curl -u admin:admin http://localhost:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/netopeer2 | python3 -m json.tool % Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   545    0   545    0     0  45416      0 --:--:-- --:--:-- --:--:-- 49545
{"node": [{"node-id": "netopeer2","netconf-node-topology:tcp-only": false,"netconf-node-topology:reconnect-on-changed-schema": false,"netconf-node-topology:between-attempts-timeout-millis": 2000,"netconf-node-topology:host": "127.0.0.1","netconf-node-topology:port": 22830,"netconf-node-topology:connection-timeout-millis": 20000,"netconf-node-topology:username": "netconf","netconf-node-topology:password": "netconf","netconf-node-topology:max-connection-attempts": 0,"netconf-node-topology:sleep-factor": 1.5,"netconf-node-topology:keepalive-delay": 120}]
}
admin@ubuntu20:~$ 
  • 获取operational的信息
admin@ubuntu20:~$ curl -u admin:admin http://localhost:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/netopeer2 | python3 -m json.tool % Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  3709    0  3709    0     0   402k      0 --:--:-- --:--:-- --:--:--  402k
{"node": [{"node-id": "netopeer2","netconf-node-topology:available-capabilities": {"available-capability": [{"capability": "urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all,report-all-tagged,trim,explicit","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&content-id=26","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:base:1.1","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:validate:1.1","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:base:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:xpath:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:startup:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:confirmed-commit:1.1","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:writable-running:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:interleave:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:rollback-on-error:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:candidate:1.0","capability-origin": "device-advertised"},{"capability": "urn:ietf:params:netconf:capability:notification:1.0","capability-origin": "device-advertised"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","capability-origin": "device-advertised"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","capability-origin": "device-advertised"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","capability-origin": "device-advertised"},{"capability": "(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","capability-origin": "device-advertised"},{"capability": "(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","capability-origin": "device-advertised"}]},"netconf-node-topology:host": "127.0.0.1","netconf-node-topology:unavailable-capabilities": {"unavailable-capability": [{"capability": "(urn:ietf:params:xml:ns:yang:1?revision=2022-06-16)yang","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","failure-reason": "unable-to-resolve"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm","failure-reason": "missing-source"},{"capability": "(urn:sysrepo:plugind?revision=2022-03-10)sysrepo-plugind","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash","failure-reason": "missing-source"},{"capability": "(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2013-09-29)ietf-netconf","failure-reason": "missing-source"}]},"netconf-node-topology:connection-status": "connected","netconf-node-topology:port": 22830}]
}
admin@ubuntu20:~$ 

http://chatgpt.dhexx.cn/article/oDeV95yb.shtml

相关文章

ORAN专题系列-16:5G O-RAN FrontHaul前传接口的网络配置管理协议netconf

前言 前传接口&#xff08;FrontHual&#xff09;是传统的BBU与RU之间的接口&#xff0c;在O-RAN之前&#xff0c;前传接口虽然定义了物理连接的CPRI接口规范标准&#xff0c;但CPRI之上承载的M plane的配置管理数据格式&#xff0c;却是设备厂家私有的。 有基于TCP的、有基于…

实验三:Netconf 接口配置实验(基于Schema API)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Netconf简介1.基本网络架构2.协议框架3.报文格式4.会话建立过程 二、实验步骤1.设备预配2.运维代码编写3.实验结果 前言 云时代对网络的关键诉求之一是网络…

Java NetConf 使用

1. 参考资料 工具包GIT地址 : https://github.com/Juniper/netconf-java 使用教程 : https://www.juniper.net/documentation/cn/zh/software/junos/netconf-java-toolkit/topics/task/netconf-java-toolkit-program-creating-and-executing.html 2. 下载&编译工具包 # 1. …

ComNet

1 ComNet 简介 ComNet设计的核心思想就是用深度神经网络来代替OFDM接收机&#xff0c;和FC-DNN类似。但是最大的不同之处&#xff0c;对接收机进行细化&#xff0c;将接收机分为了为信道估计子网和信号检测子网。每个子网由一个DNN构造&#xff0c;使用现有的简单、传统的解决…

「Python 网络自动化」NETCONF —— Python 使用 NETCONF 管理配置 H3C 网络设备

「Python 网络自动化」系列文章总目录 Nornir 中文手册——基于 Nornir3.0 官方文档的不完全翻译 文章目录 NETCONF 简单介绍NETCONF 协议结构NETCONF 报文结构请求报文格式报文回复格式 NETCONF 配置数据库NETCONF 支持的操作 实验操作基础环境配置网络环境设备配置代码环境 …

OF-CONFIG和NETCONF协议

一、OF-CONFIG协议 1.1 OF-CONFIG设计需求 1.1.1 实现对OF v1.3.1协议设备进行配置的设计需求 1.1.2 实现操作运维的设计需求 1.1.3交换机管理协议需求 1.2 OF-CONFIG协议的数据模型 1.3 OF-CONFIG的传输协议 二、NETCONF协议 2.1 NETCONF协议相对SNMP协议的优点 2.2 …

netconf是啥

netconf是啥 1 历史路由器配置方法&#xff1a;2 问题来了3 解决4 Netconf 是什么参考 1 历史路由器配置方法&#xff1a; 传统路由器配置方法中&#xff0c;以路由器来看&#xff0c;那就要去官网上查看文档&#xff0c;学习产品文档&#xff0c;然后在交换机上输入命令&…

从NETCONF/YANG看网络配置自动化

阅读冗长的NETCONF/YANG的RFC文档是相当乏味枯燥的&#xff0c;结合开发实践&#xff0c;本文试图删其繁&#xff0c;撮其要&#xff0c;给出NETCONF/YANG的轮廓和要点。 引子 NETCONF和YANG的目的是以可编程的方式实现网络配置的自动化&#xff0c;从而简化和加快网络设备和服…

SDN之NETCONF Call Home

本文主要内容都来自于今年二月发布的RFC8071 - NETCONF Call Home and RESTCONF Call Home&#xff0c;该RFC从2015年4月提出到最终发布一共修改了17个版本&#xff0c;其间修改内容可以点击查看详细内容。 介绍 NETCONF Call Home支持两种安全传输网络配置协议分别是Secure …

NETCONF原理

NETCONF简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF YANG原理

NETCONF YANG原理 网络管理技术背景NETCONF协议介绍YAGN建模语言介绍RESTCONF协议 网络管理技术背景 前言 对于设备的配置管理&#xff0c;工程师更习惯使用CLI命令行的方式与设备交互。该方式简单直接&#xff0c;便于理解。但是在网络自动化领域&#xff0c;CLI方式与设备交…

NetConf Brower使用

1.下载MG-SOFT NETCONF Browser Professional Edition 官方地址 2. 安装MG-SOFT NETCONF Browser 下一步下一步操作即可。 3.连接设备 打开的时候选择Continue即可&#xff0c;无须license。 点击File->Connect ,如下&#xff1a; 输入设备用户名称&#xff1a; 这…

Netconf协议学习笔记

Netconf简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF、RESTCONF和YANG

目录 一、NETCONF、RESTCONF和YANG是之间什么关系&#xff1f; 二、Netconf简介 2.1、一般使用工具&#xff1a;MG-Soft 简介 三、Netconf YANG 原理与实践 3.1、NETCONF协议 3.2、YANG建模语言 3.3、RESTCONF协议 网管协议&#xff1a; SNMP&#xff08;基于UDP&#…

NETCONF--从NETCONF/YANG看网络配置自动化

阅读冗长的NETCONF/YANG的RFC文档是相当乏味枯燥的&#xff0c;结合开发实践&#xff0c;本文试图删其繁&#xff0c;撮其要&#xff0c;给出NETCONF/YANG的轮廓和要点。 引子 NETCONF和YANG的目的是以可编程的方式实现网络配置的自动化&#xff0c;从而简化和加快网络设备和服…

Netconf

Netconf属于软件定义网络的管理和控制协议。 ETCONF协议&#xff0c;由RFC 6241定义&#xff0c;用以替代命令行界面(command line interface, CLI)、简单网络管理协议(Simple Network Management Protocol, SNMP)以及其它专有配置机制。管理软件可以使用NETCONF协议将配置数据…

NetConf简介之一篇文章读懂NetConf

一、背景 有的人早上不起床刷手机&#xff0c;有的人起床之后再卫生间刷手机&#xff0c;有的人在上班的地铁上刷手机&#xff0c;有的人在下班之后的班车上刷手机&#xff0c;有的人在晚上不睡觉刷手机。这其中有许多离不开技术&#xff0c;其中有一个技术就是网络。 网络互…

NETCONF协议详解

目录 目录概述NETCONF11协议详解 1 安全传输层2 消息层 21 hello 211 几种常用的能力 22 rpc和rpc-reply23 notification 3 操作层 31 get32 get-config33 edit-config34 copy-config35 delete-config36 lock37 unlock38 close-session39 kill-session 4 内容层 标准地图相关网…

netconf简介

简介 根据rfc6241 Network Configuration Protocol (NETCONF)介绍&#xff0c;netconf协议提供一种简单的机制&#xff0c;通过该机制网络设备进行管理。协议可以是设备对外提供一套完整并且规范的配置接口&#xff0c;管理者可以通过这些标准接口对设备进行配置操作。 netconf…

五、南向接口协议(四)——NetConf协议

文章目录 1 什么是NetConf协议2 NetConf协议的其他特点3 NETCONF协议框架3.1 NETCONF传输层3.2 NETCONF消息层&#xff08;采用RPC协议&#xff09;3.3 NETCONF操作层&#xff08;NETCONF核心&#xff09;3.4 NETCONF内容层 4 操作举例4.1 <get-config>4.2 <edit-conf…