Sky's blog

Network Management Review

字数统计: 3,315阅读时长: 13 min
2018/06/05 Share

第三章 ASN.1

抽象语法标记1(ASN.1):用于提供正式、无歧义和精准的规则

巴克斯范式(BNF):
""双引号中的字符代表自己的本身
<>尖括号内包含必选项
[]方括号内包含可选项
{}大括号内包含可重复0至无数次的项
|竖线表示左右任选一项,相当于or
::=表示被定义的意思

数据类型

1.书写的布局是无效的,多个空格和制表符、空行等效于 一个空格。但是在定义符号 ::= 中不能有分隔符,否则不 能正确处理。
2.带小数点的小数形式不能在ASN.1中直接使用,在ASN.1 中实数实际定义为三个整数:尾数、基数和指数。
3.注释以两个连字符“—”开始,结束于行的结尾或者该行 中另一个双连字符。
4.用于表示值和字段的标识符、类型名和模块名由大小写 字母、数字和连字符“-” 组成。不能以连字符“-”结尾, 不能出现两个连字符(注释格式),不能出现下划线“_”。
5.值定义标识符以小写字母开头。
6.类型名和模块名以大写字母开头。
7.ASN.1定义的内部类型全部用大写字母表示。 8.关键字全部用大写字母表示。

编码规则

1.基本编码规则Basic Encoding Rules (BER)
2.规范编码规则Canonical Encoding Rules (CER)
3.唯一编码规则Distinguished Encoding Rules (DER)
4.XML编码规则XML Encoding Rules (XER)
5.压缩编码规则Packed Encoding Rules (PER)
6.通用串编码规则Generic String Encoding Rules (GSER)
7.ECN

ASN.1 编程

没仔细看,我现在也不会= =

BER 编码

以TLV方法进行编码,分为3段:
T标记、L长度、V值

标记

universal
1:bool
2:integer
3:bit string
4:octet string
5:null
6:object identifier
16:sequence
16:sequence-of
无标记:choice
无标记:ANY
tag组成:

2bit:标签类
00 universal
01 application
10 context specific
11 private

1bit:
0 简单类型
1 构造类型

5bit:
标签

tag标签值小于30时:仅在一个八位组中编码
tag标签值大于30时:标签值5位全部置1
每个后继八位组,左边第一位表示是否为最后一个八位组,1表示不是,0表示是

例如标签值91513(10110010101111001)
改写为:
xxx11111 10000101 11001010 01111001

再例如标签值6(110)
写为
xxx00110

长度

当长度小于127时:0xxx xxxx即可
当长度大于127时:
第一个八位组:1+后继八位组个数
例如:255
1000 0001 1111 11111
再如:256
1000 0010 0000 00001 0000 0000
又如:5
0000 0101

常见编码

BOOLEAN编码

tag:0000 0001(见标记中的universal)
length:0000 0001
vaule:
true: 1111 1111
false: 0000 0000

true: 01 01 00
false: 01 01 ff

字符串类型的编码

tag:0000 0100
length:后继八位组的个数
vaule:字符串的ascii码
例如:public
tag:04(见标记中的universal)
length:06
vaule:70 75 62 6c 69 63
最终答案:
04 06 70 75 62 6c 69 63

比特串类型的编码

在bit串前增加一个八位组,取值0~7,表名最后补位的个数。补0/1由发送方决定
例如:1011011101011
1011 0111 0101 1
故最后需要补3位
1011 0111 0101 1xxx
假设补0(也可补1,由发送方决定)
1011 0111 0101 1000
计数八位组:0000 0011
tag:0000 0011(见标记中的universal)
length:后继八位组个数
最终答案
03 03 03 B7 58
再如:10101
补位后
1010 1000
计数八位组
0000 0011
最终答案
03 02 03 A8

十六进制字节串类型的编码

tag:04
length:后继八位组个数
例如:
0A1B
答案:
04 02 0A 1B
再如:
01 23 45 67 89 ab cd ef
答案
04 08 01 23 45 67 89 ab cd ef
又如:ACE
答案:
04 02 AC E0

INTEGER类型的编码

若value中的最高位为1,0则需在前面补全一个全0的八位组
对于负数,value的最高位为1
tag:02
length:后继八位组的个数

对于正数
例如:64
64的二进制为:
0100 0000
故此答案为:
02 01 40
再如:128
二进制为:
1000 0000
故此答案为
02 02 00 80
对于负数
绝对值二进制+按位取反+末位加1即可
例如:
-64
绝对值的二进制为
0100 0000
按位取反
1011 1111
末位加1
1100 0000
所以答案为
02 01 C0
再如:-257
二进制为:0000000100000001
按位取反
1111 1110 1111 1110
末位加一
1111 1110 1111 1111
答案为
02 02 FE FF
快捷运算方法
对于大数,强行取余倒叙排列计算2进制肯定太慢了,这里选择拆分成256(256的幂数)的因子形式
例如:
49468=193256+60
我们知道
193为1100 0001即C1
256为1 0000 0000即100
60为0011 1100即3C
故此可以写成
`C1
100+3C因此编码直接可以写为 C1 3C 又因为最高位为1,而该数是正数,所以补一个全0的八位组 最终答案: 02 03 00 C1 3C 再如负大数:-49769 由于256^2=6553620 但是负数最高位需要为1,作为标志位 因此256^2最大只能表示-32768 故此选择256^3,最大可表示-8388608 然后我们可以将256^3-49769 得到16727447 即255256^2+61256+151`
得到编码
255 61 151

FF 3D 97
故此答案为
02 03 FF 3D 97
解码
解码也很容易
先去除tag和length
首先看最高位是否为1
若为1即为负数
否则为正数
例如:02 02 96 46
我们计算出96 46为38470
由于其最高位为1
所以我们用它去减2^16,即可得到结果-27066

对象标识符编码

tag:06
首两个id:X40+Y
如果有大于127的项,需要进行拆分
即最后一个字节的最高位为0,其余字节最高位为1
例如:810 = 11 0010 1010
即从后往前,8个一组
由于要补1或0,所以7个一组
1000 0110 0010 1010
所以答案为:86 2A
例如题目为:
1 3 6 1 810 1
首先将1,2项合并为
`1
40+3=43`

0010 1011

2B
所以为
2B 6 1 810 1
然后将超过127的部分拆分

2B 06 01 86 2A 01
最终结果为
06 06 2B 06 01 86 2A 01

空值类型编码

05 00
就这么多

sequence组合类型的编码

tag:30
length:后继八位组个数
value:每个类型按之前的排即可(tag+length+vaule)

set集合类型的编码

tag:31
length:后继八位组个数

BER的不足

带来了大量的冗余,增加了通信量的开销
主要出现在TLV三个字段的每个部分
增加了约50%的数据

第四章 IETF网络管理模型

本章个人认为主要讲了tcp/ip的网络管理方式和编程

网络管理的发展

ICMP协议

1.提供了路由器与主机、主机与主机直接传送控制信息的方法
2.Echo / Echo Reply(ping)
测试网络时延、网络设备可达性

SGMP协议

标志着TCP/IP专门管理工具的出现

CMOT协议(CMIP over TCP/IP)

基于TCP/IP协议的公共管理信息协议
CMOT协议集的组成:
1.关联控制服务元素(ISO ACSE)
2.远程操作服务元素(ISO DIS ROSE)
3.通用管理信息协议(ISO CMIP)
4.轻量级表示协议(LPP)
5.用户数据报协议(UDP)
6.传输控制协议(TCP)
7.网际协议(IP)

SNMP协议

特点:简单,容易实现且成本低

SNMP协议

发展历程

RMON
1.远程监控(RMON)为网络管理者提供了监控整个子网的能力,而不是各个单独设备的能力,是SNMP向互联网管理过渡的重要步骤。
2.对基本的SNMP MIB进行了扩充,可以提供有关互联网管理的主要信息。
SNMPv2
1.在管理信息结构和功能上对SNMP进行了扩充增加了安全性
2.1996年:去掉了SNMPv2的安全特性
SNMPv3
全面引入安全机制
三者相辅相成,相互兼容

SNMP网络管理模型

SNMP网络管理模型包括四个关键元素:
管理站、代理者、管理信息库、网络管理协议

管理站:
一般由专用设备构成,配置manager实体和一组管理应用程序,提供网络的故障、配置、计费、性能、安全等管理功能
代理者
装备了SNMP的平台
代理者对来自管理站的信息请求和动作请求进行应答,并随机地为管理站报告一些重要的意外事件。
管理信息库MIB
1.每一个被管理的资源就是一个对象,被称为managed object(MO)
2.各个代理系统中被管对象的集合构成该系统的MIB
管理站通过读取MIB中的对象的值来进行网络监控
在每一个网络节点(NE)都有自己私有的MIB
1.监视设备状态:通过读取MIB中的MO的值
2.控制设备:通过更改MIB中的MO的值
网络管理协议SNMP
SNMP只有两种基本的管理功能:
1.“读”操作,用get报文来检测各被管对象的状况;
2.“写”操作,用set报文来改变各被管对象的状况。管理站采用轮询的方式,SNMP 管理进程定时向被管理设备周期性地发送探询信息,对各个代理中的管理信息进行访问。
轮询的好处:
1.可使系统相对简单。
2.能限制通过网络所产生的管理信息通信量。
简单轮询方式的缺点
1.被管设备太多,则监测周期过长;
2.有些数据不需要,浪费通信资源。

陷阱引导轮询(Trap-directed polling)
1.管理站以不太频繁的周期(1天1次)进行一次初始化。
2.在初始化期间,轮询所有代理,将需要监测的所有关键信息读取出来;
3.有了基准以后,管理站便降低轮询频度;
4.当被管对象的代理检测到有事件发生时,就检查其门限值;
5.代理进程通过Trap消息方式只向管理进程报告达到某些门限值的事件,实现信息的过滤。
陷阱方式的好处:
1.仅在严重事件发生时才发送陷阱;
2.陷阱信息很简单且所需字节数很少。

SNMP是面向无连接的协议,管理站和代理之间没有维护中的连接,每次信息传递都是单独进行的,不同于CMIP请求和应答在一次连接中完成。且SNMP报文的传送开销较小

体系结构

非对称的二级体系结构

基本的SNMP体系结构是非对称的Manager/Agent两级结构

代管体系结构

由于利用SNMP网络管理需要管理站及其所有代理者支持UDP和IP
这限制了不支持TCP/IP协议的设备上的应用,同时很多小系统也不愿意承担维护SNMP、代理者软件和MIB的负担
为了容纳没有装载SNMP的设备,SNMP提出来代管(Proxy)的概念

RMON体系结构

1.RMON是一个中介代理,被置于管理站和代理之间,专门完成基于原始数据的信息计算
2.RMON的功能被分布式实现,从而大大补偿了网络集中管理的性能

多层体系结构

1.OSI是对称的。管理实体既可以是manager也可以是agent,结构易于扩展,有助于架构多层结构
2.SNMPv2/v3支持分层

SNMP管理信息模型

使用ASN.1描述被管对象和PDU
使用BER编码
通过传输层协议传送

管理信息结构SMI

宗旨是保持MIB的简单性和可扩展性
只允许存储标量和二维数组,不支持复杂的数据结构

MIB结构

管理信息库MIB使用一个层次型、结构化的形式,定义了一个设备可获得的网络管理信息。
这种层次树结构有3个作用:
1.表示管理和控制关系
2.提供结构化的信息组织技术
3.提供了对象命名机制

SMI的编码规则-BER

类别
1.通用类 00
2.应用类 00
3.上下文类 10
4.专用类 11

SMI的数据类型两大分类

1.简单类型
1.1 integer
类别 00
格式 0
编号 00010
tag: 0x02
1.2 octet string
类别 00
格式 0
编号 00100
tag: 0x04
1.3 object identifier
类别 00
格式 0
编号 00110
tag: 0x06
1.4 null
类别 00
格式 0
编号 00101
tag: 0x05
1.5 sequence and sequence of
类别 00
格式 1
编号 10000
tag: 0x30
1.6 ipaddress
类别 01
格式 0
编号 00000
tag: 0x40
1.7 counter
类别 01
格式 0
编号 00001
tag: 0x41
1.8 gauge
类别 01
格式 0
编号 00010
tag: 0x42
1.9 timeticks
类别 01
格式 0
编号 00011
tag: 0x43
1.10 opaque
类别 01
格式 0
编号 00100
tag: 0x44
2.结构化类型
1.sequence
2.sequence ofd

点击赞赏二维码,您的支持将鼓励我继续创作!
CATALOG
  1. 1. 第三章 ASN.1
    1. 1.1. 数据类型
    2. 1.2. 编码规则
    3. 1.3. ASN.1 编程
    4. 1.4. BER 编码
      1. 1.4.1. 标记
      2. 1.4.2. 长度
      3. 1.4.3. 常见编码
        1. 1.4.3.1. BOOLEAN编码
        2. 1.4.3.2. 字符串类型的编码
        3. 1.4.3.3. 比特串类型的编码
        4. 1.4.3.4. 十六进制字节串类型的编码
        5. 1.4.3.5. INTEGER类型的编码
        6. 1.4.3.6. 对象标识符编码
        7. 1.4.3.7. 空值类型编码
        8. 1.4.3.8. sequence组合类型的编码
        9. 1.4.3.9. set集合类型的编码
      4. 1.4.4. BER的不足
  2. 2. 第四章 IETF网络管理模型
    1. 2.1. 网络管理的发展
      1. 2.1.1. ICMP协议
      2. 2.1.2. SGMP协议
      3. 2.1.3. CMOT协议(CMIP over TCP/IP)
      4. 2.1.4. SNMP协议
    2. 2.2. SNMP协议
      1. 2.2.1. 发展历程
      2. 2.2.2. SNMP网络管理模型
      3. 2.2.3. 体系结构
        1. 2.2.3.1. 非对称的二级体系结构
        2. 2.2.3.2. 代管体系结构
        3. 2.2.3.3. RMON体系结构
        4. 2.2.3.4. 多层体系结构
      4. 2.2.4. SNMP管理信息模型
      5. 2.2.5. 管理信息结构SMI
      6. 2.2.6. MIB结构
    3. 2.3. SMI的编码规则-BER
      1. 2.3.1. SMI的数据类型两大分类