如何通过python基于netconf协议获取网络中网元的配置数据(以华为NE40为例),实现企业网络控制自动化

举报
数通开发者合作测试 发表于 2020/11/25 19:36:17 2020/11/25
【摘要】 【背景】 在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网络的运行状态可视化,网络配置自动化等,如下就以华为的NE40E网元为例,说明如何通过python基于netconf协议实现对于网元配置数据的获取。【原理介绍】 通过NETCONF...

背景

    在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网络的运行状态可视化,网络配置自动化等,如下就以华为的NE40E网元为例,说明如何通过python基于netconf协议实现对于网元配置数据的获取。

原理介绍

    通过NETCONF,网管能够用可视化的界面统一管理网络中的设备,并且安全性高、可靠性强、扩展性强。如下图所示,网管与网络中的所有交换机之间建立NETCONF会话,用户即可在网管提供的可视化界面上对网络中的所有交换机进行统一的管理,提高网络运维效率。

               网管通过NETCONF对设备进行管理组网图

image.png

开发流程介绍

首先进行网元的配置开通netconf协议相关篇配置,然后编写python调用netconf模块:

image.png

网元配置

登录ne40e的管理口,按照如下命令配置,配置说明参见上面图示中网元配置

system-view

aaa

local-user netconf001 password irreversible-cipher Root@123

local-user netconf001 service-type ssh

local-user netconf001 user-group manage-ug 

ssh user netconf001

ssh user netconf001 authentication-type password

ssh user netconf001 service-type all

snetconf server enable

默认netconf的端口是SSH端口22,也可以用如下命令修改为其他端口:

protocol inbound ssh port 830

python代码示例

    建议使用第三方库ncclient实现netconf的调用:

  1. 安装ncclient

    pip install ncclient


  2. Python引用ncclient

    from ncclient import manager


  3. Python通过netconf的get能力获取网元的接口状态信息


    #建立连接

    conn = manager.connect(host="10.10.10.10", port=22,

                                        username="netconf001", password="Root@123",

                                        hostkey_verify=False,

                                        device_params={'name': 'huawei'},

                                        allow_agent=False,

                                        look_for_keys=False)

    #设定获取端口的状态信息(down或者up)

    message = '''<ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">

                      <interfaces>

                          <interface>

                              <ifName/>

                              <ifDynamicInfo>

                                  <ifPhyStatus/>

                                  <ifLinkStatus/>

                              </ifDynamicInfo>

                          </interface>

                      </interfaces>

                  </ifm>'''


    #get调用

    ret = conn.get(("subtree", message ))


    #打印返回的信息

    print(ret)

  4. 返回信息参加如下样例,可以看到端口GigabitEthernet0/0/0是up

<?xml version="1.0" encoding="UTF-8"?>

<rpc-reply message-id="urn:uuid:ec1e9c29-5ff6-4582-8880-e887ceb8c512" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

  <data>

    <ifm xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">

      <interfaces>

        <interface>

          <ifName>GigabitEthernet0/0/0</ifName>

          <ifDynamicInfo>

            <ifPhyStatus>up</ifPhyStatus>

            <ifLinkStatus>up</ifLinkStatus>

          </ifDynamicInfo>

        </interface>

      </interfaces>

    </ifm>

  </data>

</rpc-reply>

总结

基于以上流程和华为ne40的netconf功能介绍,可以实现配置获取,配置下发等相关操作,用于企业网络自动化开发。

ne40e的netconf相关资料参见链接:https://support.huawei.com/hedex/hdx.do?lib=EDOC1100168803AZJ11174&docid=EDOC1100168803&lang=zh&v=03&tocLib=EDOC1100168803AZJ11174&tocV=03&id=ZH-CN_CONCEPT_0139427194&tocURL=resources%2525252Fsoftware%2525252Fnev8r10_vrpv8r16%2525252Fuser%2525252Fvrp%2525252Ffeature_0003993139.html&p=t&fe=1&ui=3&keyword=netconf%2525252525u539f%2525252525u7406

话题互动有奖活动规则说明

为了促进技术交流,欢迎大家积极参与话题互动有奖活动。

话题1:关键词

在本主题帖回帖盖楼,帖子内容:“华为数通开发社区”即可。

回帖示例:华为数通开发者社区

话题2:加入社区

微信扫描下方二维码或直接访问数通开发者社区网站,通过华为云注册后访问到社区首页,截图+华为云账号回帖即可.

image.png

华为数通开发者社区二维码

https://devzone.huawei.com/cn/network/portal.html

回帖示例:华为云账号XXXX+社区首页截图

image.png

【活动奖品&规则】

参与话题 奖项分类 奖品 数量 发放规则
话题1 二等奖 三合一数据线 10 参与话题1的用户,随机发放10个纪念品
话题2 一等奖 保温杯 5 注册成功且按格式回帖,随机抽取5名幸运用户

【奖品展示】

               图片参考实物图片                                       image.png                                        

                三合一数据线                                                        保温杯                

注意

1、 以上2个话题均可参加,且盖楼评价相互独立。

2、 每种话题发帖数不超过5条,参与度越高获奖机会越大。若单个话题回帖超过5个,视为取消活动资格。

3、 为了让更多的用户参与评奖,若活动中出现参与了2种及以上话题且均获奖的用户,原则上只发放活动中价值最高的奖品。

4、 该活动将在博客和论坛上同时进行,同一类奖品不可重复领取。

5、 中奖后博主或版主会跟你回帖交流,请反馈收件地址,奖品会在活动结束后7个工作日统一邮寄发出。

6、 活动时间:2020.11.25-2020.12.25

7、 本次活动解释权归华为数通开发者社区所有



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。