📄 rfc1904.txt
字号:
"current"
| "obsolete"
ReferPart ::=
"REFERENCE" Text
| empty
ModulePart ::=
Modules
| empty
Modules ::=
Module
| Modules Module
Module ::=
-- name of module --
"SUPPORTS" ModuleName
"INCLUDES" "{" Groups "}"
VariationPart
ModuleName ::=
identifier ModuleIdentifier
ModuleIdentifier ::=
value(ModuleID OBJECT IDENTIFIER)
| empty
Groups ::=
Group
| Groups "," Group
Group ::=
value(Name OBJECT IDENTIFIER)
VariationPart ::=
Variations
| empty
Variations ::=
Variation
| Variations Variation
Variation ::=
ObjectVariation
| NotificationVariation
NotificationVariation ::=
"VARIATION" value(Name NotificationName)
AccessPart
"DESCRIPTION" Text
ObjectVariation ::=
"VARIATION" value(Name ObjectName)
SyntaxPart
WriteSyntaxPart
AccessPart
CreationPart
DefValPart
"DESCRIPTION" Text
-- 必须是对象SYNTAX 子句的精确描述
SyntaxPart ::=
"SYNTAX" type(SYNTAX)
| empty
-- 必须是对象SYNTAX 子句的精确描述
WriteSyntaxPart ::=
"WRITE-SYNTAX" type(WriteSYNTAX)
| empty
AccessPart ::=
"ACCESS" Access
| empty
Access ::=
"not-implemented"
-- only "not-implemented" for notifications
| "accessible-for-notify"
| "read-only"
| "read-write"
| "read-create"
-- following is for backward-compatibility only
| "write-only"
CreationPart ::=
"CREATION-REQUIRES" "{" Cells "}"
| empty
Cells ::=
Cell
| Cells "," Cell
Cell ::=
value(Cell ObjectName)
DefValPart ::=
"DEFVAL" "{" value(Defval ObjectSyntax) "}"
| empty
-- 使用NVT ASCII字符集
Text ::= """" string """"
END
END
3 OBJECT-GROUP宏映射
为了一致性的目的,把相关的被管理对象定义成一个集合是很有用的。OBJECT-GROUP
宏用来定义这样的每一个相关对象集合。应该注意的是,从概念上说,OBJECT-GROUP
的宏扩展发生在实现阶段而不是运行阶段。
为了“操作”一个对象,针对管理协议的检索操作,担任代理角色的SNMPv2实体必须
返回一个有意义的精确数值。与此类似,如果对象是可写的,那么要响应管理协议的设置操
作,SNMPv2实体必须有能力且有意义的改变下面的被管理实体。如果担任代理角色的
SNMPv2实体不能操作一个对象,管理协议为SNMPv2实体提供了一个返回异常或错误,
例如noSuchObject [4]。在任何情况下,SNMPv2实体都不应该返回一个没有进行操作的
对象的数值——必须返回一个相应的异常或错误,在协议规范[4]中对此进行了描述。
3.1 OBJECTS子句映射
OBJECTS子句用来命名包括在一致性组中的所有对象,该子句必须出现。有
OBJECT-GROUP宏出现时,每一个被命名的对象必须定义在同一个信息模块中,并且必
须有一个MAX-ACCESS子句,其值为"accessible-for-notify"、 "read-only" 、"read-write"
或者"read-create"。
有必要的是,每一个定义在信息模块中对象,如果具有一个MAX-ACCESS子句而不
是"not-accessible",那么至少应该有一个对象组包括该对象。这避免了把一个新对象加入
到信息模块中而忘记把其加入到一个组中时常犯的错误。
3.2 STATUS子句映射
STATUS子句表明了本定义是当前状态还是历史状态,该子句必须出现。
"current"和"obsolete"值本身说明的很清楚。"deprecated"值表明该定义是过的,但是操
作者可能希望支持这个组与旧的操作协同工作。
3.3 DESCRIPTION子句映射
DESCRIPTION子句是组的文本定义,描述了与其他组的所有关系,该子句是必须出现
的。注意,一般的遵循需求不应该在该子句中说明。然而,本组与其他组的实现关系可以定
义在该子句中。
3.4 REFERENCE子句映射
REFERENCE子句包括一个组的文本交叉引用,该组定义在其他的信息模块中,这个子
句不一定要出现。当分离一个其他组织生成的MIB模块时是很有用的。
3.5 OBJECT-GROUP值映射
OBJECT-GROUP宏调用的一个值是组名,它是一个OBJECT IDENTIFIER,即一个被
管理分配的名字。
3.6 语法举例
SNMP Group [3]的描述如下:
snmpGroup OBJECT-GROUP
OBJECTS { snmpInPkts,
snmpInBadVersions,
snmpInASNParseErrs,
snmpBadOperations,
snmpSilentDrops,
snmpProxyDrops,
snmpEnableAuthenTraps }
STATUS current
DESCRIPTION
"A collection of objects providing basic instrumentation and
control of an SNMPv2 entity."
::= { snmpMIBGroups 8 }
根据这种调用,一致性组名字为{ snmpMIBGroups 8 },包括7个对象。
4 NOTIFICATION-GROUP宏映射
为了一致性的目的,定义一个通知集合是有用的。NOTIFICATION-GROUP宏就是为这
一目的服务的。应该注意的是,从概念上讲NOTIFICATION-GROUP宏扩展发生在实现阶
段而不是在运行阶段。
4.1 NOTIFICATIONS子句映射
NOTIFACATONS子句用来命名一致性组中包括的每一个通知,该子句必须出现。当出
现NOTIFACATION-GROUP宏时,每一个命名的通知必须定义在相同的信息模块中。
4.2 STATUS子句映射
STATUS子句表明了本定义是当前状态还是历史状态,该子句必须出现。
"current"和"obsolete"值本身说明的很清楚。"deprecated"值表明该定义是过的,但是操
作者可能希望支持这个组与旧的操作协同工作。
4.3 DESRIPTION子句映射
DESCRIPTION子句是组的文本定义,描述了与其他组的所有关系,该子句是必须出
现的。注意,一般的遵循需求不应该在该子句中说明。然而,本组与其他组的实现关系可以
定义在该子句中。
4.4 REFERENCE子句映射
REFERENCE子句包括一个组的文本交叉引用,该组定义在其他的信息模块中,这个子
句不一定要出现。当分离一个其他组织生成的MIB模块时是很有用的。
4.5 NOTIFACATION-GROUP值映射
NOTIFACTION-GROUP宏调用的一个值是组名,它是一个OBJECT IDENTIFIER,即
一个被管理分配的名字。
4.6 用法举例
SNMP Basic Notifications Group [3]的描述如下:
snmpBasicNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS { coldStart, authenticationFailure }
STATUS current
DESCRIPTION
"The two notifications which an SNMPv2 entity is required to
implement."
::= { snmpMIBGroups 7 }
根据这种调用,一致性组的名字为{ snmpMIBGroups 1 },它包括两个通知。
5 MODULE-COMPLIANCE宏映射
MODULE-COMPLIANCE宏根据一个或多个MIB模块的实现,用来传达需求的最小集
合。应该注意的是,从概念上讲,MODULE-COMPLIANCE宏扩展发生在实现阶段而不是
运行阶段。
对所有“标准”MIB模块的一种需求是还要定义一种相应的MODULE-COMPLIANCE
规范,可以在相同的信息模块中定义,也可以在一个相伴的信息模块中定义。
5.1 STATUS子句映射
STATUS子句表明了本定义是当前状态还是历史状态,该子句必须出现。
"current"和"obsolete"值本身说明的很清楚。"deprecated"值表明该定义是过的,但是操
作者可能希望支持这个组与旧的操作协同工作。
5.2 DESCRIPTION子句映射
DESCRIPTION子句包括本遵循说明的文本定义,并且应该包括与本说明关联的以
ASN.1注释形式通信的任何信息,该子句是必须出现的。
5.3 REFERENCE子句映射
REFERENCE子句包括一个组的文本交叉引用,该组定义在其他的信息模块中,这个
子句不一定要出现。
5.4 MODULE子句映射
MODULE子句被重复的用来命名每一个MIB模块,以规范这些模块所遵循的需求,该
子句必须出现。每一个MIB模块由其模块名命名,作为可选项,有时也带上它的OBJECT
IDENTIFIER。当MODULE-COMPLIANCE调用发生在一个MIB模块内部,并且指向的是
围绕的这个MIB模块时,可以省略模块名。
5.4.1 MANDATORY-GROUP子句映射
MANDATORY-GROUP子句命名一个或多个对象或通知组,它们位于一个相应的MIB
模块中,该模块是无条件强制实现的。这个子句没有必要出现。如果一个担任代理角色的
SNMPv2实体声明遵循这个MIB模块,那么它必须实现每一个一致性组列出的所有对象和
通知。也就是说,如果SNMPv2实体在响应管理协议的获取操作[4]时,返回了一个
noSuchObject异常,而这个对象位于MIB视图的任意强制性一致组中;或者SNMPv2实
体在合适的情况下不能产生任意一致性组中列出的所有通知,那么该SNMPv2实体就不是
这个MIB模块的一致性执行实体。
5.4.2 GROUP子句映射
GROUP子句用来重复的命名每一个对象和通知组,这些组有条件的强制遵循MIB模块
或者无条件的可选择性遵循该MIB模块。GROUP子句没有必要出现。在GROUP组中命
名的一个组绝对不能出现在相应的MANDATORY-GROUPS子句中。
有条件强制性组包括那些只有实现特定协议或实现另外的一个组时才是强制的组。
GROUP子句的DESCRIPTION说明了在什么条件下这个组才是有条件强制性的组。
既没有在MANDATORY-GROUPS子句中命名,没有在GROUP子句中命名的组对MIB
模块来说是无条件可选择性的。
5.4.3 OBJECT子句映射
OBJECT子句用来重复的命名每一个MIB对象,根据MIB模块的定义,这些对象遵循
一种精确的必要条件。OBJECT子句没有必要出现。MIB对象必须出现在一个一致性组中,
该组由MANDOTORY-GROUP子句或者GROUP子句命名。
根据定义,OBJECT子句中说明的每一个对象后面跟随一个MODULE子句,该子句命
名了定义该对象的信息模块。因此,使用一个IMPORTS语句来说明从哪里引入的这些对象
在信息模块中是多余的、没有必要的。
5.4.3.1 SYNTAX子句映射
SYNTAX子句用来为相应OBJECT子句中命名的对象提供精确的SYNTAX,该子句没
有必要出现。注意,如果同时出现了该子句和WRITE-SYNTAX子句,那么,只有当读取
OBJECT子句中命名的对象的实例时,才应用该子句。
参考[2]的第9部分,获取精确语法的更多信息。
5.4.3.2 WRITE-SYNTAX子句映射
当写在相应OBJECT子句中命名的对象的实例时,WRITE-SYNTAX子句提供该对象的
精确SYNTAX,该子句不是必要的。
参考[2]的第9部分,获取精确语法的更多信息。
5.4.3.3.MIN-ACCESS子句映射
MIN-ACCESS子句用来定义在相应OBJECT子句中命名的对象的最低级别访问权,该子
句没有必要出现。如果省略了该子句,那么最低级别访问与OBJECT-TYPE宏调用中确定
的最高级别访问相同。如果该子句出现,那么它绝对不能设置比OBJECT-TYPE宏调用中
的确定的访问级别还要高的级别。
特定类型对象的访问级别与它们的语法定义紧密一致。这些类型包括:概念表和行、辅
助对象、以及语法为Counter32, Counter64 (也有可能是文本惯例的特殊类型)的对象。对于
这些对象,不应该出现MIN-ACCESS子句。
如果一种操作提供的访问级别高于或等于MODULE-COMPLIANCE宏中定义的最低访
问且低于或等于OBJECT-TYPE宏中定义的最高访问,则该操作是规范的。
5.4.4 DESRIPTION子句映射
使用每一个GROUP或OBJECT子句时,必须出现DESCRIPTION子句。对于一个
OBJECT子句,它包括一个精确定义的遵循需求的文本描述。对于一个GROUP子句,它包
括的是条件文本描述,这些条件确定了组在什么时候是有条件强制的,在什么时候是无条件
可选的。
5.5 MODULE-COMPLIANCE值映射
MODULE-COMPLIANCE宏的调用值是一个OBJECT IDENTIFIER。因此,当指向包括
在该宏调用中的遵循声明时,这个只可能是命令式分配的。
5.6 用法举例
包括在XYZv2-MIB(假设的一个MIB)中的遵循声明可能为:
xyzMIBCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for XYZv2 entities which implement
the XYZv2 MIB."
MODULE -- compliance to the containing MIB module
MANDATORY-GROUPS { xyzSystemGroup,
xyzStatsGroup, xyzTrapGroup,
xyzSetGroup,
xyzBasicNotificationsGroup }
GROUP xyzV1Group
DESCRIPTION
"The xyzV1 group is mandatory only for those
XYZv2 entities which also implement XYZv1."
::= { xyzMIBCompliances 1 }
根据这种调用,要生成名为{ xyzMIBCompliances 1 }的遵循声明的队列,系统必须实
现XYZv2-MIB的xyzSystemGroup, xyzStatsGroup, xyzTrapGroup, xyzSetGroup对象一致
性组以及xyzBasicNotificationsGroup通知组。进一步说,如果XYZv2实体也操作XYZv1,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -