1、调度程序
调度程序是SNMP引擎中的关键部分,每个SNMP引擎只有一个调度程序。其任务是调度任务给各个版本相应的消息处理模型,将PDU调度给相关的应用程序。
对于外流的消息,某个应用程序将提供被发送的PDU,添加一些准备和发送信息需要的数据之后,应用程序确定将要使用的消息处理模型的版本以及期望的安全处理。
对于引入的消息,调度程序确定版本信息,并将该消息传送给相应版本的消息处理模型提取消息数据,协同安全处理服务对该消息进行处理。版本确定之后,PDU调度程序决定该PDU应当发送给哪个应用程序。
2、消息处理子系统
消息处理子系统是SNMP引擎的一部分,它同调度程序交互处理对应版本的消息,消息处理子系统包含一个或多个消息处理模型。
3、消息处理和调度的元素
在RFC3411中定义了如下元素:
contextEngineID
contextName
scopedPDU
maxSizeResponseScopedPDU
securityModel
securityName
securityLevel
messageProcessingModel
上述元素的值,对于引入的消息来说,相应版本的消息处理模块将它们的值提供给调度程序。对于流出的消息来说,由应用程序提供它们的值给调度程序。
对于某些版本的消息处理模块,这些值是从收到的消息中萃取而来;而对于其他的版本,这些值是通过某种算法计算或某种定义好的机制而来。而这种机制定义的值与调度程序不相关。
(1) 消息处理模型(messageProcessingModel)
messageProcessingModel的值标识消息处理模型。消息处理模型描述从消息中萃取数据的特定版本过程、产生消息、调用安全模型对消息提供安全服务;消息处理模型还负责将数据从特定版本的消息格式转换为一般格式数据,或者将一般格式数据转换成特定版本格式的数据。
(2) Pdu版本(PduVersion)
PduVersion的值描述协议操作的详细版本信息和与其关联的PDU格式。例如:SNMPv1、SNMPv2等。这个值还明确了消息中包含的PDU版本,同时指明了处理该PDU的应用程序。调度程序并不直接使用该值。
当应用程序请求调度程序向其他SNMP引擎发送PDU时,它将指定PduVeesion给调度程序,调度程序将该PduVersion传递给消息处理模型,消息处理模型将知道该如何处理该PDU