mplsL3VpnIfConfEntryがMIB情報で、OIDが1.3.6.1.2.1.10.166.11.1.2.1.1.2で取得データがmplsL3VpnIfClassification 型はinteger
プログラムを組んだその中で、疑似スイッチからの応答内容として
OID:1.3.6.1.2.1.10.166.11.1.2.1.1.2.3.65.66.67.561
全角数字の部分が新しく追加したい部分です。
内容としては
3=VRF名の文字数
65.66.67=VRF名(ASCIIコード変換すると"ABC"となります)
638=ifindex
上記のような場合にASCIIを文字変換したりする方法があるようなのですが
よくわかりません。
参考サイトなどがありましたら、教えていただけると幸いです。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
mplsL3VpnIfConfEntryは、MPLS-L3VPN-STD-MIBに定義されています。
RFC 4382
https://datatracker.ietf.org/doc/html/rfc4382
にあります。
mplsL3VpnIfConfEntryは、
asn.1
1mplsL3VpnIfConfEntry OBJECT-TYPE 2 SYNTAX MplsL3VpnIfConfEntry 3 MAX-ACCESS not-accessible 4 STATUS current 5 DESCRIPTION 6 "An entry in this table is created by an LSR for 7 every interface capable of supporting MPLS L3VPN. 8 Each entry in this table is meant to correspond to 9 an entry in the Interfaces Table." 10 INDEX { mplsL3VpnVrfName, mplsL3VpnIfConfIndex } 11 ::= { mplsL3VpnIfConfTable 1 } 12
になっています。
質問の全角数字の部分は、
INDEX { mplsL3VpnVrfName, mplsL3VpnIfConfIndex }
の定義に該当します。このINDEXは、複数あるmplsL3VpnIfClassificationの値の1つを識別する
ための値です。(データベースのインデックスと同じようなものです。)
mplsL3VpnVrfNameは
mplsL3VpnVrfName OBJECT-TYPE SYNTAX MplsL3VpnName MAX-ACCESS not-accessible STATUS current DESCRIPTION "The human-readable name of this VPN. This MAY be equivalent to the [RFC2685] VPN-ID, but may also vary. If it is set to the VPN ID, it MUST be equivalent to the value of mplsL3VpnVrfVpnId. It is strongly recommended that all sites supporting VRFs that are part of the same VPN use the same naming convention for VRFs as well as the same VPN ID." REFERENCE "[RFC2685]" ::= { mplsL3VpnVrfEntry 1 }
という定義です。
mplsL3VpnVrfNameのデータ型は
MplsL3VpnName ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "An identifier that is assigned to each MPLS/BGP VPN and is used to uniquely identify it. This is assigned by the system operator or NMS and SHOULD be unique throughout the MPLS domain. If this is the case, then this identifier can then be used at any LSR within a specific MPLS domain to identify this MPLS/BGP VPN. It may also be possible to preserve the uniqueness of this identifier across MPLS domain boundaries, in which case this identifier can then be used to uniquely identify MPLS/BGP VPNs on a more global basis. This object MAY be set to the VPN ID as defined in RFC 2685." REFERENCE "RFC 2685 Fox B., et al, 'Virtual Private Networks Identifier', September 1999." SYNTAX OCTET STRING (SIZE (0..31))
のように定義されています。簡単にいうと0から31バイトのバイト列です。
mplsL3VpnIfConfIndexは
mplsL3VpnIfConfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is a unique index for an entry in the mplsL3VpnIfConfTable. A non-zero index for an entry indicates the ifIndex for the corresponding interface entry in the MPLS-VPN-layer in the ifTable. Note that this table does not necessarily correspond one-to-one with all entries in the Interface MIB having an ifType of MPLS-layer; rather, only those that are enabled for MPLS L3VPN functionality." REFERENCE "RFC2863" ::= { mplsL3VpnIfConfEntry 1 }
これらの定義では
MAX-ACCESS not-accessible
のようになっています。これは、インデックスに含まれるMIBは、インデックスから取り出すという
方式で実装されているからです。
ご質問の意図は、OIDのインデックス部分に含まれるmplsL3VpnVrfName, mplsL3VpnIfConfIndexを
OIDから取り出したいということではないかと思っています。
私が作るとしたら、
1.3.6.1.2.1.10.166.11.1.2.1.1.2.3.65.66.67.561
のOIDを拡張MIBを読み込んでOIDを名前に変換できる状態でライブラリを使って
mplsL3VpnIfClassification.3.65.66.67.561
という文字列からドット(.)で分割してインデックス部分
3.65.66.67.561
を取り出します。その後は、
3=VRF名の文字数
65.66.67=VRF名(ASCIIコード変換すると"ABC"となります)
638=ifindex
の考え方で処理できると思います。
ちなみに、NET-SNMPのコマンドsnmpwalkなどを拡張MIBを読みんだ状態で使うと、
インデックスの部分をよしなに変換してくれます。
同じMIBではありませんが
UDP-MIB::udpEndpointProcess.ipv4."127.0.0.1".123.ipv4."0.0.0.0".0.33118 = Gauge32: 4276
のような感じです。
汎用的に変換できる処理を作りたければ、NET-SNMPの中身をみるのがよいと思います。
投稿2024/09/05 06:50
総合スコア105
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。