見出し画像

MIB-IIによるネットワーク管理(system,interface編)

「実践SNNMP教科書」の第10章から復刻した記事です。

MIB-II(2)は、TCP/IPで通信する機器の標準的なMIBです。RFC1213で定義されて以来、ほとんどのSNMP対応機器が対応しています。MIB-IIは、9つのグループから構成されています。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
コラム:MIB-IIとMIB-I
MIB-IIのII(2)は、MIB-I(1)の後継バージョンという意味です。SNMPで最初に定義されたのがMIB-Iです。もともとはMIBと呼ばれていました。ネットワーク製品のカタログなどで、MIB-I/MIB-II対応などと記載されたものを見かけます。しかし、厳密には、この表現は正しくありません。MIB-Iは、もはや標準仕様ではないのと、MIB-IIは、MIB-Iの仕様を包含しているので、MIB-II対応というだけで十分だと思います。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


実践SNMP教科書

systemグループ

systemグループは、主に、エージェントが搭載された機器の情報を提供するためのグループです。


systemグループのツリー構造

+--system(1)
   |
   +-- -R-- String    sysDescr(1)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- ObjID     sysObjectID(2)
   +-- -R-- TimeTicks sysUpTime(3)
   +-- -RW- String    sysContact(4)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -RW- String    sysName(5)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -RW- String    sysLocation(6)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- INTEGER   sysServices(7)
   |        Range: 0..127
   +-- -R-- TimeTicks sysORLastChange(8)
   |        Textual Convention: TimeStamp
   |
   +--sysORTable(9)
      |
      +--sysOREntry(1)
         |  Index: sysORIndex
         |
         +-- ---- INTEGER   sysORIndex(1)
         |        Range: 1..2147483647
         +-- -R-- ObjID     sysORID(2)
         +-- -R-- String    sysORDescr(3)
         |        Textual Convention: DisplayString
         |        Size: 0..255
         +-- -R-- TimeTicks sysORUpTime(4)
                  Textual Convention: TimeStamp


systemグループの取得例(実践SNMP教科書の原稿)
systemグループの取得例(TWSNMP FCで2023年に取得)

systemグループを利用したネットワーク管理のポイントを以下に説明します。

①ノード検索時のノード種別の特定
主に、sysObjectIDの値によって、ノードの種別を特定できます。SNMPマネージャは、ノードの種別によって、アイコンの変更や実施するポーリングの登録を行います。

②管理者、設置場所、ノードの名前などの管理情報の取得/設定

③sysUpTimeによる稼働時間の取得。
sysUpTimeにより再起動の発生を監視することができます。図10-3に示すように、sysUpTimeを定期的に取得し、差分を計算します。もし再起動が発生すれば、差分値は、負の値になります。この方法により、PINGなどのポーリングによりノードのダウンが検出できなかった場合でも再起動の発生が検出できるのです。

実践SNMP教科書原稿


sysUpTimeによる再起動の監視

④対応しているMIBモジュールの確認
sysORTableを取得することによりエージェントが対応しているMIBモジュールを確認することができます。但し、sysORTableに情報を正しく対応しているエージェントは、少ないのが現状です。

実践SNMP教科書

interfaceグループ

interfaceグループは、管理対象ノードのネットワークI/Fに関する情報を提供します。MIB-IIが定義された当初は、ネットワークI/Fのうち、ノード自身がIPパケットを送受信するために使用するI/Fのみが、interfaceグループの対象とされていました。しかし、現状は、スイッチングHUBなどのポートもinterfaceグループの対象となっています。interfaceグループの情報は、ネットワークI/Fの種類に依存しない汎用的な情報になっています。このため、SNMPマネージャが管理対象ノードとネットワークとの接続状態を管理するために欠かせない情報です。

interfaceグループのツリー構造

+--interfaces(2)
   |
   +-- -R-- INTEGER   ifNumber(1)
   |
   +--ifTable(2)
      |
      +--ifEntry(1)
         |  Index: ifIndex
         |
         +-- -R-- INTEGER   ifIndex(1)
         +-- -R-- String    ifDescr(2)
         |        Textual Convention: DisplayString
         |        Size: 0..255
         +-- -R-- EnumVal   ifType(3)
         |        Values: other(1), regular1822(2), hdh1822(3), ddn-x25(4),
         |                rfc877-x25(5), ethernet-csmacd(6),
         |                iso88023-csmacd(7), iso88024-tokenBus(8),
         |                iso88025-tokenRing(9), iso88026-man(10),
         |                starLan(11), proteon-10Mbit(12), proteon-80Mbit(13),
         |                hyperchannel(14), fddi(15), lapb(16), sdlc(17),
         |                ds1(18), e1(19), basicISDN(20), primaryISDN(21),
         |                propPointToPointSerial(22), ppp(23),
         |                softwareLoopback(24), eon(25), ethernet-3Mbit(26),
         |                nsip(27), slip(28), ultra(29), ds3(30), sip(31),
         |                frame-relay(32)
         +-- -R-- INTEGER   ifMtu(4)
         +-- -R-- Gauge     ifSpeed(5)
         +-- -R-- String    ifPhysAddress(6)
         |        Textual Convention: PhysAddress
         +-- -RW- EnumVal   ifAdminStatus(7)
         |        Values: up(1), down(2), testing(3)
         +-- -R-- EnumVal   ifOperStatus(8)
         |        Values: up(1), down(2), testing(3)
         +-- -R-- TimeTicks ifLastChange(9)
         +-- -R-- Counter   ifInOctets(10)
         +-- -R-- Counter   ifInUcastPkts(11)
         +-- -R-- Counter   ifInNUcastPkts(12)
         +-- -R-- Counter   ifInDiscards(13)
         +-- -R-- Counter   ifInErrors(14)
         +-- -R-- Counter   ifInUnknownProtos(15)
         +-- -R-- Counter   ifOutOctets(16)
         +-- -R-- Counter   ifOutUcastPkts(17)
         +-- -R-- Counter   ifOutNUcastPkts(18)
         +-- -R-- Counter   ifOutDiscards(19)
         +-- -R-- Counter   ifOutErrors(20)
         +-- -R-- Gauge     ifOutQLen(21)
         +-- -R-- ObjID     ifSpecific(22)

interfaceグループのMIBオブジェクトは、以下のように分類できます。

①ネットワークI/Fの数
ifNumberによって、ネットワークI/Fの数を取得できますが、ifTableの行数によって取得できるので、あまり意味のない情報です。

②ネットワークI/Fの属性
ifTableから、ネットワークI/Fの種類、スピード、MACアドレス、MTUサイズなどの属性が取得できます。

実践SNMP教科書原稿
ネットワークI/Fの属性取得例(実践SNMP教科書の原稿)


ifTableの取得例(TWSNMP FCで2023年に取得)

③ネットワークI/Fの状態
SNMPマネージャからの監視にいおいて、ネットワークI/Fの状態は、管理MAP上の回線の接続状態を決めるために必要です。ネットワークI/Fの状態は、ifTableのifAdminStatusとifOperStatusを取得して決定します。
また、ifAdminStatusの値を書き換えることによりネットワークI/Fの起動/停止が可能です。但し、管理用のネットワークI/Fを停止してしまうと、同じマネージャからは元には戻せなくなるので注意が必要です。

実践SNMP教科書原稿
ネットワークI/Fの状態の決定

④ネットワークI/Fの通信統計情報
ネットワークI/Fの通信統計情報の取得値は、取得したまま判断するのではなく、単位時間値などに変換して、トラフィック量、エラー発生量などの判断や、グラフ表示を行います。

実践SNMP教科書


ネットワークI/Fの通信統計情報の取得例

TWSNMP FCではパネルによりネットワークI/Fの状態と通信量を取得できます。

TWSNMP FCのパネル

⑤ネットワークI/Fの詳細情報
interfaceグループのMIBオブジェクトは、ネットワークI/Fの種類に依存しない汎用的な情報です。エージェントが、特定の種類(イーサネットなど)のI/FのMIBをサポートしている場合は、ifSpecificの値によって、対応しているMIBの種類を示します。イーサネットMIBなどが定義されていますが、実装されているエージェントが少ないので、これらの情報が参照されることは、ほとんどありません。

最近のネットワークの管理のために通信量を測定するためにMIB-IIのifTableを使うことはおすすめしません。ネットワークの通信が高速化されているので32ビットのカウンターだとするぐに0に戻るためです。代わりにifXTable を使うのがよいです。

ifXTable

バイト数が64ビットのカウンターになっています。
取得すると

ifXTableの取得例

TWSNMP FCのパネルやトラフィック測定ではifXTableが利用できる場合には自動でその値を利用します。

ここから先は

0字
SNMPの仕様について解説した本やサイトは、沢山あると思います。 独自の拡張MIBを自分で設計してMIBファイルやエージェントを作る方法を解説した教科書はないと思います。

20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…

期間限定 PayPay支払いすると抽選でお得に!

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。