質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
SNMP

SNMPとは【Simple Network Management Protocol)】 ネットワークに接続しているデバイス等の情報を 収集し、ネットワーク監視や制御の管理を行うためのプロトコルです。

Q&A

1回答

419閲覧

SNMPでOIDの返却値のがどのように帰ってきているのかがわかりません。

alice331

総合スコア11

SNMP

SNMPとは【Simple Network Management Protocol)】 ネットワークに接続しているデバイス等の情報を 収集し、ネットワーク監視や制御の管理を行うためのプロトコルです。

0グッド

0クリップ

投稿2020/08/21 09:11

編集2020/08/30 02:05

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

archiver

2020/08/21 15:52

そもそも、どういった手段でMIBを取得しようとしているのでしょうか? プログラムを組んでその中で? 何等かのSNMPツールを使ってその結果から? (なんとなく前者のような気もしますが)
guest

回答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

TWSNMP

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問