版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6使用NETCONF协议配置网络项目6使用NETCONF协议配置网6.1NETCONF协议6.2NETCONF配置6.3Pythonncclient模块6.4数据模型YANG6.5任务实施6.1NETCONF协议2003年5月,IETF成立NETCONF工作组,提出了基于XML的网络配置协议。
最新的NETCONF标准是2011年6月发布的RFC6241和RFC6242。在NETCONF定义中使用了三种传输协议,分别是SOAP、BEEP和SSH。RFC6242更新了基于SSH的传输模式。目前使用最为广泛的也是SSH协议,其使用TCP端口830作为其默认的通信端口。由于XML可以表达复杂的、模块化的管理对象以及具有内在的逻辑关系等特点,NETCONF协议完全基于XML来表示配置数据和协议消息内容。对于NETCONF中XML的数据结构的定义,RFC6242使用了新的数据模型语言YANG1NETCONF协议-发展历程6.1NETCONF协议NETCONF(NetworkConfigurationProtocol)网络配置协议,提供一套管理网络设备的机制。用户可以使用这套机制增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。NETCONF有三个对象:2NETCONF协议-协议对象NETCONF客户端NETCONF服务器NETCONF消息6.1NETCONF协议能力协商是Client和Server在会话建立阶段,通过发送消息给对方来通告自己支持的能力。当NETCONF会话打开,每一端(包括Client和Server)必须发送一个包含自身能力列表的<hello>消息。双方至少要发送NETCONF基本能力"urn:ietf:params:netconf:base:1.0"或"urn:ietf:params:netconf:base:1.1"。除了基本功能,NETCONF协议还允许客户端发现服务器端支持的其它能力列表。在交换过Hello消息后,Server等待Client发送<rpc>请求。Server为每个<rpc>请求回应<rpc-reply>。实现过程如图所示。3NETCONF协议-能力协商6.1NETCONF协议NETCONF现在已经广泛地被网络设备厂家所支持。NETCONF协议采用了分层的设计结构,和OSI网络模型类似,下层为上层提供服务,每一层是对某一个功能的分装。NETCONF协议在概念上可以划分为4层:安全传输层、消息层、操作层、内容层。4NETCONF协议-协议框架内容层操作层消息层安全传输层为客户端和服务器之间交互提供通讯路径。当前华为使用SSH协议作为NETCONF协议的承载协议。提供一种简单的不依赖传输协议层的RPC请求和回应机制。定义一组基本的操作,作为RPC的调用方法,这些操作组成了NETCONF基本能力。如get、get_config、edit_config、copy_config等操作。描述了网络管理所涉及的配置数据,而这些数据依赖于各制造商设备。目前主流的数据模型有Schema模型,YANG模型等。6.2NETCONF协议5NETCONF协议-一个完整的NETCONF报文<?xmlversion="1.0"encoding="UTF-8"?><rpcxmlns="urn:ietf:params:xml:ns:netconf:base:1.0"message-id="801"><edit-config><target><running/></target><default-operation>merge</default-operation><error-option>rollback-on-error</error-option><configxmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0"><vlanxmlns="/netconf/vrp/huawei-vlan"><vlans><vlan><vlanId>10</vlanId><protocolVlans><protocolVlanxc:operation="merge"><protocolIndex>0</protocolIndex></protocolVlan></protocolVlans></vlan></vlans>
</edit-config></rpc>一个完整的NETCONF报文是基于SSH安全传输之上,包含消息层、操作层和内容层信息。NETCONF报文使用XML编码。NETCONF报文消息(Message)NETCONF操作(Operations)NETCONF内容(Content)6.1NETCONF协议6NETCONF协议-XML编码XML作为NETCONF协议的编码格式,用文本表示复杂的层次化数据,既支持使用传统的文本编译工具,也支持使用XML专用的编辑工具读取、保存和操作配置数据。基于XML网络管理的主要思想是利用XML强大的数据表示能力,使用XML来描述被管理数据和管理操作,使管理信息成为计算机可以理解的数据库,提高计算机对网络管理数据的处理能力,从而提高网络管理能力。基于XML的网络管理的主要优点:具有强大的数据表示能力。方便高效安全的进行大量数据传输。很好的适应网络配置管理的需求。6.1NETCONF协议7NETCONF协议-传输层和消息层NETCONF使用SSH实现安全传输,使用RPC(RemoteProcedureCall)远程调用的机制实现客户端和服务端的通信。NETCONF协议使用RPC通信模式。RPC的框架与传输层独立,采用XML编码的<rpc>和<rpc-reply>元素提供独立于传输层协议的请求和回应消息框架:<rpc>用于封装从客户端到服务端的NETCONF请求。头部定义message-id标示序列。<rpc-reply>用户服务端回复<rpc>的response消息。头部message-id保持一致。<rpc-error>在<rpc-reply>中被发送。一个<rpc-reply>可以包含多个<rpc-error>。<ok>在<rpc-reply>中被发送,表示没有错误和没有数据返回。6.1NETCONF协议8NETCONF协议-操作层NETCONF定义了一系列操作:场景分类操作功能描述查询数据<get-config>查询配置数据<get>查询设备当前运行的配置和状态数据编辑数据<edit-config>修改,创建,删除配置数据备份/恢复<copy-config>导出配置,或用一套配置数据整体替换另一套配置数据<delete-config>删除配置数据集,清空startup锁定/解锁<lock>加锁,独占配置数据集的修改权<unlock>解锁,放弃对配置数据集修改权的独占事务操作<commit>提交<candidate>数据集中的配置数据成为当前运行的配置数据<cancel-commit>放弃配置提交试运行<discard-changes>放弃<candidate>中还未提交的配置数据<validate>检查指定配置数据的语法语义是否正确会话操作<close-session>正常的结束本NETCONF会话<kill-session>强制结束其他的NETCONF会话,需管理员权限6.1NETCONF协议9NETCONF协议-内容层NETCONF内容层为设备配置数据。配置数据需要有建模语言,各厂家,没有统一。NETCONF1.0对模型语言没有要求。NETCONF1.1明确了与YANG结合,开始规范NETCONF内容格式。当前华为设备支持的内容层有:
NETCONF当前有两种建模语言,Schema和YANG:Schema是为了描述XML文档而定义的一套规则。Schema文件中定义了设备所有管理对象,以及管理对象的层次关系、读写属性和约束条件。YANG是专门为NETCONF协议设计的数据建模语言,用来为NETCONF协议设计可操作的配置数据、状态数据模型、远程调用(RPCs)模型和通知机制等。Huawei-YANG、NETCONFSchema、IETF-YANG、OpenConfig-YANG项目6使用NETCONF协议配置网6.1NETCONF协议6.2NETCONF配置6.3Pythonncclient模块6.4数据模型YANG6.5任务实施6.2NETCONFSchema案例1NETCONF配置–会话基础Schema是华为基于W3Cxml标准,又扩展了私有语法的一种语言,在NETCONF标准没有确定和YANG模型绑定前,VRPV8已经实现了Schema。Schema文件中定义了设备所有管理对象,以及管理对象的层次关系、读写属性和约束条件。设备通过Schema文件向客户端提供配置和管理设备的接口。NETCONF种传输协议,目前使用最为广泛的也是SSH协议,默认使用TCP端口830。6.2NETCONFSchema案例2NETCONF配置–会话流程NETCONF会话建立和关闭的基本流程如下:1、客户端触发NETCONF会话建立,完成SSH连接建立,并进行认证与授权。2、客户端和服务器完成NETCONF会话建立和能力协商。详情请参考能力集交互。3、客户端发送一个或多个请求给服务器,进行RPC交互(鉴权)。例如:4.客户端关闭NETCONF会话。5.SSH连接关闭。修改并提交配置。查询配置数据或状态。对设备进行维护操作。6.2NETCONFSchema案例3NETCONF配置–配置NETCONF1、进入NETCONF视图2、配置NETCONF服务端口号3、使能NETCONF功能[CE1]netconf
#进入NETCONF视图[CE1-netconf]protocolinboundsshport830#配置NETCOF都按口号Info:Succeededinstartingthesshport830service.[CE1-netconf]quit[CE1]snetconfserverenable
#使能NETCONF功能Info:SucceededinstartingtheSNETCONFserveronSSHport22.[CE1]snetconfserverenable和protocolinboundsshport830都可以使能NETCONF功能。如果这两个命令都配置,表示客户端可以使用22端口号或830端口号与服务器建立NETCONF连接。NETCONF使用SSH作为承载协议。在使用前必须配置SSH,建议用户level为15。项目6使用NETCONF协议配置网6.1NETCONF协议6.2NETCONF配置6.3Pythonncclient模块6.4数据模型YANG6.5任务实施6.3NETCONFSchema案例1Pythonncclient模块ncclient是一个专门用于NETCONF客户端的Python库。它提供直观的API,将NETCONF的XML编码特性映射到Python构造和习语,并使编写网络管理脚本更容易。安装ncclient模块查看ncclient,当前使用的ncclient版本是0.6.12。C:\Users\Administrator>pipinstallncclient-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importncclient>>>ncclient.__version__'0.6.12'>>>exit()C:\Users\Administrator>6.3Pythonncclient模块2Pythonncclient模块ncclient中最重要的对象是manager,manager.connect()函数用来通过NETCONF协议连接设备。上面参数中,device_params对于华为设备有两个选择。可以配置为huawei或者huaweiyang,分别对应IETFYANG和华为的YANG模型。manager.connect(host=host,port=port,username=user,password=password,hostkey_verify=False,device_params={'name':"huawei"},allow_agent=False,
look_for_keys=False)6.3Pythonncclient模块3Pythonncclient模块manager中支持的操作,通过通过manager.OPERATIONS查看。6.3Pythonncclient模块4Pythonncclient模块
-常用方法get()方法get_config(source,filter=None)检索运行配置和设备状态信息。查询的是设备当前运行的状态数据,即只能从配置数据库中获取数据。不需要使用source参数指定配置数据库。操作成功,Server回复的元素中含有参数,中封装了获取的结果数据。否则在消息中返回。检索指定配置的全部或部分。source:指定需要查询的数据库名称。有running
(正在运行的数据库),startup
(下次设备启动配置数据库),
candidate
(两阶段运行数据库,需要commit提交生效)Filter参数不常用6.3Pythonncclient模块5Pythonncclient模块-常用方法edit_config(target,config,default_operation=None,test_option=None,error_option=None):copy_config(source,target)将指定配置的全部或部分加载到目标配置数据存储中。target:指定要配置的数据库。config:必须放在元素中,它可以指定为字符串或Elementdefault_operation:如果指定,必须是{“merge”,“replace”,or“none”}其中之一。test_option:{“test_then_set”,“set”}之一。error_option:{“stop-on-error”,“continue-on-error”,“rollback-on-error”}之一。The“rollback-on-error”error_option:rollback-on-errorcapability.源配置数据库替换目标配置数据库。如果目标配置数据库没有创建,则直接创建配置数据库,否则用源配置数据库直接覆盖目标配置数据库。source:是配置数据存储的名称,用作包含要复制的配置子树的复制操作或配置元素的源。target:是要用作复制操作目标的配置数据存储的名称。6.3Pythonncclient模块6Pythonncclient模块-常用方法delete_config(target):close_session():kill_session(session_id):删除配置数据库。target:target指定要删除的配置数据存储的名称或URL请求优雅地终止NETCONF会话,并关闭传输层会话。强制去终止一个NETCONF会话。session_id:要终止会话的NETCONF会话标识符。项目6使用NETCONF协议配置网6.1NETCONF协议6.2NETCONF配置6.3Pythonncclient模块6.4数据模型YANG6.5任务实施6.4数据模型YANG1数据模型YANG当今,NETCONF协议的传输层,RPC层和操作层已经有标准来定义,但内容层尚未有标准的数据建模语言和相关的数据模型。没有标准的数据模型NETCONF协议实际上并不能真正地普及到网络管理当中。为了使NETCONF协议成为一个互操作性强的协议,所建立的数据模型必须是独立于各种厂商的。因此,需要建立一个专门为NETCONF协议建立模型的解决方法,在这样的背景下,YANG就是专门为NETCONF服务的数据建模语言。YANG起源于NETCONF,但不仅用于NETCONF。虽然统一了YANG建模语言,但是YANG文件没有统一。YANG文件可以简单分为三类:厂家私有YANG文件,IETF标准YANG和OpenConfigYANG。6.4数据模型YANG2数据模型YANGYANG模型定义了数据的层次化结构,可用于基于NETCONF的操作。建模对象包括配置、状态数据、远程过程调用和通知。它可以对NETCONF客户端和服务器端之间发送的所有数据进行一个完整的描述。Yang有以下特点:基于层次化的树状结构建模。数据模型以模块和子模块呈现。可以和基于XML的语法的YIN(YANGIndepentNotation)模型无损转换。定义内置的数据类型和允许可扩展类型。6.4数据模型YANG3数据模型YANG–模块和子模块一个YANG文件通常可以定义为一个模块(module)或者子模块(submodule)。一个模块包含三种类型的语句:模块头(moduleheader)语句,“修订”(revision)语句和定义(definition)语句。模块头部语句描述模块并提供关于模块本身的信息,“修订”语句提供关于模块历史的信息,定义语句是定义数据模型的模块的主体。服务器可以实现多个模块,允许相同数据的多个视图或服务器数据的不相交子部分的多个视图。或者,服务器可以只实现一个定义所有可用数据的模块。基于模块设计者的需求,模块可以将其部分定义分成子模块。无论子模块的存在或大小如何,外部视图都是单个模块的外观。6.4数据模型YANG4数据模型YANG–数据节点YANG定义了数据建模的四种主要类型的数据节点。叶节点(LeafNodes)叶列表节点(Leaf-ListNodes)容器节点(ContainerNodes)列表节点(ListNodes)6.4数据模型YANG5数据模型YANG–数据节点–叶节点叶子实例包含简单的数据,如整数或字符串。它只有一个特定类型的值,没有子节点。YANG叶节点示例XML编码示例leafhost-name{typestring;description"Hostnameforthissystem.";}<host-name></host-name>6.4数据模型YANG6数据模型YANG–数据节点–叶列表节点叶列表定义了特定类型的值序列。YANG叶节点示例XML编码示例leaf-listdomain-search{typestring;description"Listofdomainnamestosearch.";}<domain-search></domain-search><domain-search></domain-search><domain-search></domain-search>6.4数据模型YANG7数据模型YANG–数据节点–容器节点一个容器节点用于分组子树中的相关节点。一个容器只有子节点,没有值。容器可以包含任何类型的任何数量的子节点(叶子,列表,容器,叶子列表,动作和通知)。YANG叶节点示例XML编码示例containersystem{containerlogin{leafmessage{typestring;description"Messagegivenatstartofloginsessio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税务师在税收宣传教育中作用的研究
- 赣州2024年小学5年级英语第六单元真题试卷
- 强化使命担当发挥统领作用推进以审判为中心刑事诉讼制度改革
- 安全员A证证考试题库及解析
- 预制菜包装、标识通则(征求意见稿)编制说明
- 2024-2025学年甘肃省兰州某中学高三(上)诊断数学试卷(含答案)
- 番禺区三室一厅房屋租赁合同(34篇)
- 工伤风险免责协议书(公司社保)(3篇)
- 小学数学教学设计15篇
- 幼师的工作总结(3篇)
- 2024年消防月全员消防安全知识专题培训-附20起典型火灾案例
- 恒牙临床解剖-上颌中切牙(牙体解剖学课件)
- 戏剧鉴赏学习通超星期末考试答案章节答案2024年
- 2024年国家公务员考试行测真题及解析(完整版)
- 《县委书记的榜样-焦裕禄》课件
- 公司工会活动积分制考核表
- 10以内口算100道题共16套-直接打印版
- A760(761)E自动变速器ppt课件
- 建设工程施工现场项目管理人员解锁申请表
- 防呆法(防错法)Poka-Yoke
- 田径运动会径赛裁判法PPT课件
评论
0/150
提交评论