2010-03-02 105 views
2

假設我正在編寫SNMP v1/2代理。snmp陷阱中的變量實例號

是否需要將實例號添加到陷阱PDU中的變量OID?

在SNMP V1例如陷阱是在RFC 1157中定義,與以下字段:

  • 企業
  • 代理地址
  • 通用陷阱型
  • 具體凝汽閥編碼
  • 時間戳
  • 變量綁定

「變量綁定」部分包含變量名稱和值的列表。 根據RFC 1157:

通常,SNMP 變量的名稱是 xy形式,其中x是在 定義的MIB一個 非集合對象類型的名稱的對象標識符並且y是對象標識符 片段,其以特定於 的方式特定的對象類型標識所需的實例 。

什麼困擾我是「一般」,是.y強制性的?

回答

4

是的,必須在變量綁定中包含任何變量OID的實例子標識符。該段描述了變量OID的一般(即通用)形式,而不是「通常」用來表示非委託「好吧,通常是這樣的,但不總是」。後來的RFC使用更具體的措辭:

變量綁定列表是一個簡單的變量綁定列表。

變量的名稱是一個OBJECT IDENTIFIER其是對應的對象 - 類型的對象標識符的 級聯與OBJECT IDENTIFIER片段識別 實例在一起。相應對象類型的OBJECT IDENTIFIER是 ,稱爲變量的OBJECT IDENTIFIER前綴。

[RFC 3416,第2.1節]

+0

好知道。實際上,我們面臨着其他幾個snmp代理,它們發送陷阱時沒有提供實例編號,這導致了一些麻煩。要確定相應的實例,我們必須通過所有這些實例並與陷阱中的值進行比較。我覺得這有點冒險。 – 2010-03-02 22:59:32

+2

10 - 15年前,當我進行SNMP合規性測試時,這不是一種不常見的代理錯誤。令人驚訝的是實施者仍然錯誤! 但是,我應該注意,如果VALUE沒有標識任何實例的實例,就沒有必要擁有實例標識符。例如,SNMPv2c/v3中的linkUp陷阱標識爲snmpTrapOID.0 = linkUp(1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.4),而不是linkUp.0。但標識變量的OID必須包含實例標識符(標量總是爲0)。 – 2010-03-03 06:30:57