目录
- 导语
- [一、5.7.1 网络管理框架](#一、5.7.1 网络管理框架)
- [二、5.7.2 简单网络管理协议和管理信息库](#二、5.7.2 简单网络管理协议和管理信息库)
- [三、5.7.3 NETCONF和YANG](#三、5.7.3 NETCONF和YANG)
- 本节核心总结(必看)
- 结语
导语
大家好呀~前面几节我们学习了路由选择协议(OSPF、BGP)、SDN控制平面和ICMP。这一节我们来学习一个运维向的话题------网络管理(Network Management)。
你可能会问:网络管理不就是"管网络"吗?有什么好学的?其实,网络管理是一门专门的学科------一个大型网络(比如ISP的骨干网、数据中心网络)可能有几万台设备,怎么监控它们的状态?怎么配置它们?怎么发现故障?怎么收集流量统计?这些都需要专门的协议和框架。
这一节我们会学习网络管理的基本框架,然后深入两个最重要的协议:传统的SNMP(简单网络管理协议)和新一代的NETCONF/YANG。SNMP是过去30年网络管理的标准,而NETCONF/YANG代表了网络管理的未来------可编程、自动化、模型驱动。准备好了吗?让我们开始~

一、5.7.1 网络管理框架
1. 什么是网络管理?
**网络管理(Network Management)**是指对网络设备进行监控、配置、故障诊断和性能优化的过程。ISO定义了网络管理的五大功能领域(FCAPS):
- F(Fault Management,故障管理):检测、定位和修复网络故障
- C(Configuration Management,配置管理):管理设备配置,跟踪配置变更
- A(Accounting Management,计费管理):统计用户资源使用,用于计费
- P(Performance Management,性能管理):监控和优化网络性能(带宽、延迟、丢包率)
- S(Security Management,安全管理):管理用户认证、访问控制、安全策略
通俗类比:网络管理就像城市的交通管理中心------监控每个路口的车流量(性能管理),发现交通事故后派交警处理(故障管理),调整红绿灯配时(配置管理),统计各路段的通行量用于收费(计费管理),设置交通管制和监控摄像头(安全管理)。
2. 网络管理的基本架构
网络管理系统通常采用**管理者-代理(Manager-Agent)**架构:
- 管理者(Manager):运行在管理服务器上的网络管理软件(如Zabbix、SolarWinds、Cacti),负责收集设备信息、下发配置、展示网络状态。
- 代理(Agent):运行在被管理设备(路由器、交换机、服务器)上的软件,负责收集本地信息、响应管理者的请求、主动上报异常事件。
- 管理协议:管理者和代理之间通信的协议,如SNMP、NETCONF。
- 管理信息库(MIB):定义了设备上哪些信息可以被管理、信息的结构和含义。
工作流程:管理者通过管理协议向代理发送请求(如"查询端口1的流量"),代理查询本地MIB,返回结果。代理也可以在发生异常时(如端口down、CPU过高)主动向管理者发送**陷阱(Trap)**消息。
3. 网络管理的演进
网络管理经历了几代演进:
- 第一代(1980s):简单网络监控,用ICMP ping检测设备存活,用SNMPv1收集基本信息。
- 第二代(1990s-2000s):SNMPv2c/v3普及,MIB标准化,出现专业的NMS(网络管理系统)如HP OpenView、CiscoWorks。
- 第三代(2010s):NETCONF/YANG兴起,网络配置自动化,SDN和网络编排出现,DevOps/NetDevOps理念普及。
- 第四代(现在):意图驱动网络(IBN)、AI运维(AIOps)、网络自动化和遥测(Streaming Telemetry)。
二、5.7.2 简单网络管理协议和管理信息库
1. SNMP概述

**SNMP(Simple Network Management Protocol,简单网络管理协议)**是最广泛使用的网络管理协议,定义在RFC 1157(v1)、RFC 1901-1908(v2c)、RFC 3411-3418(v3)中。
SNMP使用UDP作为传输层协议:
- 代理监听UDP 161端口,接收管理者的请求
- 管理者监听UDP 162端口,接收代理的Trap通知
SNMP有三个版本:
- SNMPv1:最早版本,只支持明文的团体字(community string)认证,安全性差。只支持基本的操作。
- SNMPv2c:增加了批量获取(GetBulk)、64位计数器等改进,但仍然用明文团体字认证,安全性没有本质提升。v2c是目前最广泛使用的版本。
- SNMPv3:增加了安全机制------支持认证(MD5/SHA)和加密(DES/AES),支持基于用户的访问控制(USM)和基于视图的访问控制(VACM)。安全性最好,但配置复杂。
2. SNMP操作
SNMP定义了几种基本操作:
- Get:管理者请求代理获取一个或多个MIB变量的值。
- GetNext:获取指定OID的下一个变量的值,用于遍历MIB树。
- GetBulk(v2+):批量获取大量数据,比反复GetNext高效,常用于获取整个表(如路由表、ARP表)。
- Set:管理者设置代理上的MIB变量的值(如修改配置、关闭端口)。
- Trap:代理主动向管理者发送的异常通知(如端口up/down、CPU过高、认证失败)。不需要管理者请求。
- Inform(v2+):和Trap类似,但需要管理者确认,更可靠。
3. MIB(管理信息库)
MIB(Management Information Base,管理信息库)定义了设备上可以被管理的对象的集合。MIB不是一个物理数据库,而是一个虚拟的信息树,每个节点代表一个可管理的对象。
MIB使用**OID(Object Identifier,对象标识符)**来唯一标识每个对象。OID是一个点分十进制的数字序列,从根开始逐级编号,比如:
1.3.6.1.2.1.1.1= sysDescr(系统描述)1.3.6.1.2.1.2.2.1.10= ifInOctets(端口入方向字节数)1.3.6.1.2.1.4.20= ipAddrTable(IP地址表)
MIB树的结构:
iso(1)
org(3)
dod(6)
internet(1)
mgmt(2)
mib-2(1)
system(1)
interfaces(2)
ip(4)
tcp(6)
udp(7)
...
MIB分为标准MIB和私有MIB:
- 标准MIB(MIB-II,RFC 1213):定义了所有设备都应该支持的通用对象(系统信息、接口、IP、TCP、UDP等)。
- 私有MIB(Enterprise MIB) :各厂商定义的私有对象(如思科的CPU利用率、华为的光模块功率等),在
1.3.6.1.4.1分支下。
MIB用**ASN.1(抽象语法标记1)定义,用BER(基本编码规则)**编码。这是一种比较古老的建模和编码方式,可读性差,这也是后来YANG出现的原因之一。
4. SNMP的优缺点
SNMP的优点:
- 简单、轻量,几乎所有网络设备都支持
- 标准化程度高,跨厂商兼容
- 适合监控类操作(读取状态、流量统计)
SNMP的缺点:
- 不适合配置管理(Set操作功能弱,没有事务机制,配置错误难以回滚)
- MIB用ASN.1定义,可读性差,扩展困难
- v1/v2c安全性差(明文团体字),v3配置复杂
- 基于请求-响应模式,不适合实时推送大量数据(被Streaming Telemetry取代)
三、5.7.3 NETCONF和YANG
1. 为什么需要NETCONF/YANG?

SNMP在监控领域表现不错,但在配置管理方面力不从心。传统网络设备的配置主要靠CLI(命令行界面)------工程师手动敲命令,或者用Expect脚本自动化。但CLI是给人用的,不是给程序用的:
- 不同厂商的CLI语法不同,难以统一
- CLI输出是文本格式,程序解析困难
- 没有事务机制,配置出错难以回滚
- 没有标准的数据模型
为了解决这些问题,IETF定义了NETCONF(RFC 6241) ------一种基于XML的网络配置协议,配合YANG(RFC 7950)------一种现代化的数据建模语言。NETCONF/YANG代表了网络管理的未来方向,也是SDN和网络自动化的基础。
2. NETCONF协议
**NETCONF(Network Configuration Protocol)**是一种用于网络设备配置和管理的协议,特点:
- 基于SSH传输:NETCONF over SSH(端口830),安全可靠。也支持TLS和SOAP。
- 基于XML编码:所有消息和数据都用XML格式,结构化、可解析。
- 分层架构 :
- 内容层:配置数据和状态数据(用YANG建模)
- 操作层:
<get>、<get-config>、<edit-config>、<commit>、<copy-config>等操作 - 消息层:
<rpc>、<rpc-reply>、<notification>消息封装 - 传输层:SSH/TLS
NETCONF的核心操作:
<get>:获取配置数据和状态数据<get-config>:只获取配置数据(从指定的配置数据库)<edit-config>:修改配置数据(支持merge、replace、create、delete等操作)<commit>:提交候选配置到运行配置(候选配置机制)<copy-config>:复制配置(如从running复制到startup)<delete-config>:删除配置数据库<lock>/<unlock>:锁定配置数据库,防止多人同时修改<kill-session>:终止另一个会话
NETCONF的一个重要特性是候选配置(Candidate Configuration) :你可以先把修改写入候选配置数据库,验证无误后再<commit>提交到运行配置。如果出错,可以<discard-changes>放弃修改。这提供了事务性和回滚能力,是SNMP完全不具备的。
3. YANG数据建模语言
**YANG(Yet Another Next Generation)**是一种用于建模网络配置和状态数据的语言。它替代了SNMP的ASN.1 MIB,具有以下特点:
- 可读性强:YANG的语法类似C/Java,人可以直接阅读和编写。
- 层次化结构:用容器(container)、列表(list)、叶子(leaf)等构建层次化的数据模型。
- 丰富的数据类型:支持内置类型(int、string、boolean等)和派生类型(typedef)。
- 约束和验证:支持must表达式、when条件、默认值、范围限制等,数据可以被验证。
- 可扩展:支持augment(扩展现有模型)和deviation(偏离标准模型)。
- 可翻译:YANG模型可以翻译成XML(NETCONF用)、JSON(RESTCONF用)、CBOR等格式。
YANG模型示例(简化的接口配置):
yang
container interfaces {
list interface {
key "name";
leaf name { type string; }
leaf type { type string; }
leaf enabled { type boolean; default true; }
container ipv4 {
list address {
key "ip";
leaf ip { type inet:ipv4-address; }
leaf prefix-length { type uint8; range "1..32"; }
}
}
}
}
YANG模型分为:
- 标准模型:IETF定义的通用模型(如ietf-interfaces、ietf-routing、ietf-system)
- 厂商模型:思科、华为等厂商定义的私有扩展模型
- 开源模型:OpenConfig(由Google、微软等发起的开放配置模型项目)
4. NETCONF/YANG的生态
NETCONF/YANG已经形成了完整的生态:
- RESTCONF(RFC 8040):NETCONF的HTTP版本,用REST API + JSON,更适合Web应用和云原生环境。
- gNMI(gRPC Network Management Interface):谷歌推出的基于gRPC的网络管理接口,支持流式遥测(Streaming Telemetry)。
- Ansible/NETCONF模块:用Ansible自动化管理支持NETCONF的设备。
- ncclient:Python的NETCONF客户端库。
- pyang:YANG模型的编译器和验证工具。
越来越多的网络设备(思科IOS-XR/NX-OS、华为VRP、Juniper Junos、Arista EOS)都支持NETCONF/YANG,网络自动化正在从"CLI脚本"向"模型驱动"转变。
本节核心总结(必看)
这一节学习了网络管理,核心要点:
一、网络管理框架
- FCAPS五大功能:故障、配置、计费、性能、安全管理
- 管理者-代理架构:管理者(NMS)+ 代理(设备上)+ 管理协议 + MIB
- 演进:SNMP → NETCONF/YANG → 意图驱动网络/AIOps
二、SNMP和MIB
- SNMPv1/v2c(明文团体字,v2c最常用)/v3(认证+加密)
- 操作:Get、GetNext、GetBulk、Set、Trap、Inform
- UDP 161(代理)/162(管理者Trap)
- MIB:用OID标识管理对象的虚拟信息树,ASN.1定义
- MIB-II标准模型 + 厂商私有模型
- 优点:简单通用;缺点:配置管理弱、安全性差、MIB可读性差
三、NETCONF和YANG
- NETCONF:基于SSH+XML的配置协议,支持候选配置和事务提交
- 操作:get、get-config、edit-config、commit、lock等
- YANG:现代化数据建模语言,可读性强、层次化、可验证
- RESTCONF:NETCONF的HTTP/JSON版本
- gNMI:gRPC网络管理接口,支持流式遥测
- 代表网络自动化和模型驱动的未来
关键概念清单
- 网络管理(Network Management):监控、配置、管理网络设备
- FCAPS:网络管理五大功能领域
- 管理者-代理(Manager-Agent):网络管理的基本架构
- SNMP(简单网络管理协议):传统网络管理协议
- MIB(管理信息库):可管理对象的虚拟信息树
- OID(对象标识符):MIB对象的唯一标识
- Trap:代理主动上报的异常通知
- NETCONF:基于XML的网络配置协议
- YANG:网络数据建模语言
- 候选配置(Candidate Config):NETCONF的事务性配置机制
- RESTCONF:NETCONF的HTTP版本
- Streaming Telemetry:流式遥测,实时推送设备数据
结语
这一节我们学习了网络管理------从传统的SNMP/MIB到新一代的NETCONF/YANG。网络管理是保证网络稳定运行的关键,也是网络工程师和运维工程师的核心技能。随着SDN、网络自动化和云原生的发展,网络管理正在从"手动CLI"向"模型驱动、自动化、意图驱动"演进。
到这里,第5章的所有技术内容(5.1-5.7)就全部学完了。下一节5.8我们会做全章总结,梳理知识图谱,做课后习题,还有Wireshark ICMP实验------用Wireshark实际抓包看看ICMP报文长什么样、ping和traceroute在网络中到底传输了什么。让我们用一节精彩的总结和实验来结束第5章吧!
如果你觉得这篇笔记对你有帮助,欢迎点赞收藏~有问题也欢迎留言讨论,我们一起进步!