特集
» 2007年05月21日 08時34分 UPDATE

SNMPによるネットワークモニタリング「第2版」:第5回 図解で知るSNMP――MIB情報のすべて (8/8)

[大澤文孝,ITmedia]
前のページへ 1|2|3|4|5|6|7|8       

TCPコネクションの構造

 TCPコネクションの状態は、tcpサブツリーの「tcpConnectionTable」「tcpListenerTable」にある。前者は「現在接続中のコネクション」、後者は「LISTENしている(待ち受け状態にある)コネクション」を示す。

 これらはテーブル構造をとっているが、ここまで説明してきたように、インデックス番号に「1」「2」といった連番ではなく、IPアドレスやポート番号を採用している。

 ここでは、現在のコネクション数を示す「tcpConnectionTable」を見てみよう。実際にsnmpwalkを使って、tcpConnectionTableを調べると、例えば次のようになる。


$ snmpwalk -Of -c hogeprivate -v 1 localhost .tcpConnectionTable
.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionState.ipv4."192.168.0.170".34327.ipv4."72.21.40.11".80 = INTEGER: closeWait(8)
〜中略〜
.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionState.ipv6."00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:aa".22.ipv6."00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:6c".53807 = INTEGER: established(5)
.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionProcess.ipv4."192.168.0.170".34327.ipv4."72.21.40.11".80 = Gauge32: 0
〜中略〜
.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionProcess.ipv6."00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:aa".22.ipv6."00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:6c".53807 = Gauge32: 0

 この例は、自身のIPアドレスが「192.168.0.170」ならびに「00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:aa」であり、

  • 自身のポート34327から、72.21.40.11のポート80に対して切断待ち(CLOSE-WAIT)
  • 自身のポート22に00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:00:6cからポート53807で接続されている

 という状況を示している。

 この結果から分かるように、表6に示したTCPコネクションの状態を示すオブジェクトのインスタンスは、


tcpConnectionTable.tcpConnectionEntry.tcpConnectionState.ローカルIP種別.ローカルIP.ローカルポート.リモートIP種別.リモートIP.リモートポート

という書式で示される。

 同様にしてコネクションを利用しているプロセスIDを保持するオブジェクトのインスタンスは、


tcpConnectionTable.tcpConnectionEntry.tcpConnectionProcess.ローカルIP種別.ローカルIP.ローカルポート.リモートIP種別.リモートIP.リモートポート

である。

 つまりインデックス番号として、「ローカルIP種別.ローカルIP.ローカルポート.リモートIP種別.リモートIP.リモートポート」が採用されていることが分かる。

 このようにIPアドレスやポート番号がインデックスとして採用されているのは、tcpConnectionTableが、次のように定義されているためだ。


tcpConnectionTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF TcpConnectionEntry
〜中略〜
    ::= { tcp 19 }
tcpConnectionEntry OBJECT-TYPE
    SYNTAX     TcpConnectionEntry
〜中略〜
    INDEX   { tcpConnectionLocalAddressType,
              tcpConnectionLocalAddress,
              tcpConnectionLocalPort,
              tcpConnectionRemAddressType,
              tcpConnectionRemAddress,
              tcpConnectionRemPort }
    ::= { tcpConnectionTable 1 }
TcpConnectionEntry ::= SEQUENCE {
  tcpConnectionLocalAddressType  InetAddressType,
  tcpConnectionLocalAddress  InetAddress,
  tcpConnectionLocalPort  InetPortNumber,
  tcpConnectionRemAddressType  InetAddressType,
  tcpConnectionRemAddress  InetAddress,
  tcpConnectionRemPort  InetPortNumber,
  tcpConnectionState  INTEGER,
  tcpConnectionProcess  Unsigned32
}

 ここから分かるように、インデックスとして、「tcpConnectionLocalAddressType」「tcpConnectionLocalAddress」「tcpConnectionLocalPort」「tcpConnectionRemAddressType」「tcpConnectionRemAddress」「tcpConnectionRemPort」が順に設定されているために、このような書式となるわけだ。

 この構造を図示すると、次のようになる。

fig03_07.gif 図7■tcpConnectionTableの構造

 ここでは示さないが、同様にLISTENしているTCP情報を保持するtcpListenerTableも、


IP種別.アドレス.ポート番号

という書式のインデックスを用いる。

 ここまでMIBのオブジェクトのアクセス方法について説明してきた。

 単一値であれば「.0」を付ければよいが、構造体の場合には、SMIを調べて、どんなインデックスが採用されているのかを調べる必要があるので、やや複雑だ。

 この記事では、詳しくOIDの構造を説明したが、実際には、親のOIDを指定してsnmpwalkコマンドを実行し、ツリーを調べて、アタリを付けていくというのが、現実的かもしれない。記事の関係上、MIB-IIツリーに関しては、「system」「interface」「tcp」という3つのサブツリーしか説明できなかったが、ほかのサブツリーも同様にしてアクセスできるので必要に応じて試してみてほしい。

 次回は、Net-SNMP独自のMIBツリーを使って、「CPU負荷」「メモリ」「ディスク」「プロセス」の状態を知る方法を説明しよう。

この記事に関連するキーワード

SNMP |オープンソース | Linux


前のページへ 1|2|3|4|5|6|7|8       

Copyright© 2012 ITmedia, Inc. All Rights Reserved.

オンラインムック Special

- PR -

Special

- PR -

Special

- PR -

節電お役立ち情報(スマートジャパン)

news023.jpg

東京電力や関西電力が、一般家庭向け電気料金値上げとともに、1日の時間帯に応じて電気料...

news105.jpg

欧米で約150社の大手企業が導入している電力管理システムが日本でも市場拡大に乗り出す。...

news103.jpg

照明器具の用途は、人間が暮らす空間を照らすという用途だけではない。屋外に立っている...