人気ブログランキング |
2010年 09月 21日 ( 3 )
(Solaris)snoopによるパケットキャプチャ
Solaris10(SunOS 5.10) 上で UDP のパケット解析をすることとなりました。

Solarisには snoop というコマンドでパケットが採れるようです。
ただ画面に描画しただけでは後からの解析がしずらいので、一旦ファイルに落としてから解析したいと思ってます。

まずパケットを取ってファイルに落とすには下記コマンドでできます。

bash-3.00# snoop -d nge0 -s 42 -o /Desktop/snoop.out udp
Using device /dev/nge0 (promiscuous mode)
4468 ^C (Ctrl+Cで終了)


snoopについては、snoop(1m)ネットワークパケットの取得および検査 (SunOS リファレンスマニュアル 1M : システム管理コマンド) - Sun Microsystemsを見てもらうとわかるんですが、上記の引数を簡単に解説しときます。
-d:パケット採取するNIC(インターフェイス)を指定(今回はnge0)
-s:パケットの指定したサイズより後ろを切り捨てる。通常は全パケットを取るので、ヘッダだけいる場合は、各プロトコルに応じた長さを指定すればいいようです。
今回はUDPパケットのヘッダだけ取りたかったので42としています。各プロトコルのに応じたヘッダのみ取得する場合は、IPのみ:34,UDP 42,TCP 53,RPC 80,NFS 120となります。
-o:ファイルに出力。
udp:UDPパケットのみ取得。この末尾部分がフィルタ指定となります。ここで、特定のIPや特定の方向等さまざまなフィルタがかけれます。


snoopで出力したファイルですが、バイナリ形式(RFC1761準拠らしい)で落ちます。
wiresharkで見れるらしいとのことだったんでが、自分の環境の場合見れませんでした。

この出力したログをsnoopを使ってみることはできるのですが、実用的では有りません。
よって、出力したログをsnoopを使って人が見やすいようにテキストファイルに落とします。下記コマンドでできます。

bash-3.00# snoop -i snoop.out -x 50 > snoop.txt

-i:これで出力したログを表示します。
-x:パケットデータを 16 進数および ASCII 形式で表示します。-xの後の数値はオフセットでパケットの一部を表示します。

上記のコマンドの場合下記のような形式のテキストファイルとして出力されます。

1 0.00000 192.168.0.5 -> HogeSRV UDP D=40368 S=51760 LEN=36
2 0.00387 192.168.0.8 -> HogeSRV UDP D=41173 S=46509 LEN=48
3 0.00470 192.168.0.99 -> HogeSRV UDP D=41819 S=63676 LEN=36
4 0.02001 HogeSRV -> 192.168.0.117 UDP D=35782 S=41985 LEN=1344


snoop で -V を付けると詳細要約モード、-v だと詳細表示モードみたいです。
-V とした場合下記のような表示形式となりました。(パケットの中身は0に置換してます。)

1 0.00000 192.168.0.16 -> HogeSRV UDP D=40368 S=51760 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
2 0.00048 192.168.0.18 -> HogeSRV UDP D=40600 S=32937 LEN=48
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
3 0.00061 192.168.0.19 -> HogeSRV UDP D=40159 S=57005 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
4 0.00188 192.168.0.13 -> HogeSRV UDP D=41484 S=57103 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
5 0.00005 192.168.0.5 -> HogeSRV UDP D=40009 S=43415 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
6 0.00013 HogeSRV -> 192.168.0.17 UDP D=60261 S=41128 LEN=392
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 0000 0000 0000 0000 0000 0000 ................
32: 0000 0000 0000 0000 0000 0000 0000 0000 ................
48: 0000 0000 0000 0000 0000 0000 0000 0000 ................
64: 0000 0000 0000 0000 0000 0000 0000 0000 ................
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 0000 0000 0000 0000 0000 ................
288: 0000 0000 0000 0000 0000 0000 0000 0000 ................
304: 0000 0000 0000 0000 0000 0000 0000 0000 ................
320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
336: 0000 0000 0000 0000 0000 0000 0000 0000 ................
352: 0000 0000 0000 0000 0000 0000 0000 0000 ................
368: 0000 0000 0000 0000 ........


参考:
iT-folder IT関連情報を配信
Solarisでいきましょか? -各種トレース機能
南アラバ公国: Solarisでのパケットキャプチャー
tcpdump でキャプチャしたファイルを WireShark で解析 | bluegold
ネットワークを調査する 50 の方法 : やっぱり Sun がスキ! Solarisでの各種ネットワークコマンドや調査方法が分かりやすく載っています。
by jehoshaphat | 2010-09-21 23:59 | ネットワーク
スイッチングハブ(L2スイッチ)の性能の見方
最近あまりネットワーク関係から離れてたので、基本用語も忘れかけの今日この頃です。
サーバ室とかに置くような基幹ハブはやはり性能や安定性を重視しないといけないわけで。。。
ということで、スイッチングハブ(L2スイッチ)についてちょっと調べてみました。

L2スイッチの種類
まず、よくWEBカタログでスイッチングハブの分類としてよく見かける用語として、「インテリジェント・ハブ」、「スマート・スイッチ」というのがあります。

インテリジェントハブというのはSNMPエージェント機能を持つということを知っていましたが、スマートスイッチというのはあまり聞いたことがありませんでした。
調べてみると、スマートスイッチとはVLANやQoS、認証に対応したスイッチのようです。WEB管理画面を持ってるのもあるようですね。

つまり、機能順的に インテリジェントスイッチ ← スマートスイッチ ← 普通のスイッチ となるようです。

参考:
ITpro:インテリジェントってどういう意味?
スマートスイッチとは 【smart switch】 - 意味/解説/説明/定義 : IT用語辞典


今回はVLANやインテリジェントは関係なくただ処理性能が高いハブの調査が必要だったため、処理能力のカタログ表記について調べてみました。(ほんとはVLANはあまり必要性感じないまでもSNMPはほしいので、インテリジェントハブがほしいんですが、上がそれを認めてくれないので。。。。)

スループット
まずはスイッチング能力です。カタログによってはスループットや最大パケット転送能力と書いてたりもします。
単位は PPS(Packet Per Second) であらわし一秒当たりのパケット(フレーム)転送能力を示すようです。
大抵どのカタログもイーサネットの最短フレームサイズの64バイト時での結果を書いてるようです。(フレームが小さい方が負荷がかかるようなので)

このスループット(pps)ですが、各イーサネットの規格による各ポートの理論値は下記のようになるようです。
10Mbps : 14880pps
100Mbps : 148800pps
1000Mbps : 1488000pps

カタログの表記がこの数値以上であればワイヤスピード(理論上最大転送能力)を満たすようですね。
カタログによってはスイッチ全体のパケット転送能力を書いてる場合があるようです。


スイッチング容量
もうひとつがスイッチング容量というもので、スイッチングファブリックとか総帯域幅とかバックプレーンとか書いてたりします。
これはスイッチ全体で1秒間で処理できるデータ量を表すようです。
単位は馴染み深い bps(bit per second) で表します。

このスイッチング容量の理論値は下記のような式で求められるようです。

 各ポートの転送速度 * 2(全二重通信) * ポート数

たとえばギガビットポートを持つハブで24ポートの場合は下記のようになります。

 1000Mbps * 2 * 24 = 48,000Mbps = 48Gbps

カタログ表記が48Gbpsより大きければ100%の転送量を保証することができるようですね。


スイッチング能力、スイッチング容量ともに、理論値を上回るなら、ノンブロッキングと呼ばれ、論上の最大負荷を処理できることが保証されるようです。


なかなかスイッチの世界もややこしいですね。


余談ですが、業務向けスイッチにはいろいろな機能があります。
オートネゴシエーション、フロー制御、カスケード接続とスタック接続、VLAN、スパニングツリー、リンクアグリゲーション、QoS(品質保証)、IEEE802.1x(セキュリティ)、SNMP 等です。
それらについて、ASCII.jp:高価な企業向けスイッチはここがすごい!|図で解剖!スイッチ&ルータで簡単に紹介されてました。Ethernetの基本を知る上でも役立ちます。


参考:
第15回 リピータ、ブリッジとL2スイッチ/キーマンズネット
スイッチの処理性能
ネットワークエンジニアを目指して・ネットワーク機器の処理性能について
ハブの転送能力について - 質問・相談ならMSN相談箱
LAN技術研究室【ハブとスイッチ(2)】
by jehoshaphat | 2010-09-21 23:58 | ネットワーク
SunRay2で画面描画が遅く残像らしきものが残る
SunRay2デスクトップユニット(DTU)で、Sun Ray Connector for Windows を使いWindowsターミナルサーバに接続しています。

そこで画面の描画が遅いという問い合わせが殺到しました。
見てみたところ、特に描画負荷が高い画像等を表示するときに描画が間に合ってない感がします。しばらく待ってれば描画されるんですが、画像多めのWEBページとかをスクロールした日には昔の画面が崩れるウイルスのような感じでしたね。
まぁ全く使えないほどではないのでとりあえずユーザにはそのまま使ってもらうことに。

SunRayサーバやターミナルサーバには負荷がかかってる様子はなかったので、ちょうど先日SunRayサーバ周りのネットワーク構成を少し変えたのでそれが原因かなと思いました。

まずネットワーク障害で多いループによるブロードキャストストームを疑いました。しかし、L2スイッチ(ハブ)のLEDもそれほど激しくはなく、PCでパケットキャプチャしてもブロードキャストパケットはそれほど多くはありません。
(ブロードキャストストームについては、下記サイトが参考になります。
ITpro:[設計編]LANスイッチでループ構造を作ってはいけない
Ethereal_キャプチャの手順
@IT:連載:ネットワーク運用管理入門)

また、SunRay DTU からターミナルサーバではなく、直接Solarisの画面を表示してもはやり、描画が間に合っていません。

実はSunRayからWindowsターミナルサーバとの間は別ネットワークとして構築してます。
下記のような感じです。

クライアント←(192.168.0.0/24)→SunRayサーバ←(192.168.100.0/24)→Windowsターミナルサーバ

これはSunRayとWindowsターミナルサーバとの間のネットワーク負荷が高いとのクラスタ構成が関係していました。

で、この 192.168.100.0/24 のネットワークにSuRay DTUを置いてSunRayサーバのSolarisの画面表示したら遅延なく表示されました。
ということで、どうやら 192.168.0.0 のネットワークがおかしいようです。(まぁいじったのもそっちのネットワークだったので。。。)

先般実施したネットワーク構成変更ってのも、新規別サーバ増設とL2スイッチの移動だけでした。

ここで思いついたのはパケット損失です。
(このときMTUも疑いましたが、pingで調査したところ問題ありませんでした。pingによるMTUサイズの調査方法は@IT:pingでMTUサイズを調査する参照)

まず、SunRay2 がどういうプロトコルでやり取りしてるのか調べました。

ポートとプロトコル - Sun Ray Server Software 4.2, Japanese - wikis.sun.comにどのようなプロトコルを使うか載ってました。
結構いろんなポート・プロトコル使うんですね。。
注目したのは一番データが多そうである、ALP-RENDER と呼ばれてる画面描画プロトコルです。
UDPを使っているんですよね。。。

UDPって投げっぱなしのプロトコル。つまり、途中で破棄されたらそのままです。
どうも今回はこの可能性が高いのではないかと疑いました。

で、夜にSunRayサーバが繋がってたもともとのハブに差し替えたところ、なんと画面描画遅延が発生しなくなりました。

やはりハブが原因だったようです。


ただ、カタログ見る限りはもともとのハブは100Mbpsでネットワーク構成変更で繋ぎ換えたハブは1000Mbpsでスループットも上なんですよね。。。
カタログ表記にない何かが影響したのかどうか詳しくはわかりませんが、まぁ遅延なくなって助かりました。

もしかしたら、L2スイッチとサーバ側NICの相性問題かもしれません。
もしくはオートネゴシエーションの問題が、フロー制御かな。。。


ちなみに、SunというかOracleはSunRayの使用に300kbpsを推奨しています。
(参考:サン・マイクロシステムズ - Sun Ray 2 - FAQ@IT:Special: よりセキュアに、より環境に優しく、 ――シンクライアントSun Rayの実像)
これって結構大きいのかなと思います。


ターミナルサーバやリモートデスクトップで使う RDT プロトコルは 64kbps の帯域で、メタフレームはさらにその半分の帯域で済むようですし。。
(参考:ネットワークスペシャリスト試験に楽々合格ITpro:大和証券,シン・クライアントを1500台導入パソコン制御とシンクライアント)


後気になったのは、このSunRayサーバに ping を飛ばすと最初の一回目が Time Out となる時があるのです。
Time Out となるのは arp キャッシュがクリアされている時のようです。
(Windows の場合 arp -d * でMACアドレスのキャッシュをクリアできます。)

やはりネットワーク負荷がかかってるんでしょうかね。。。
(ARPに関しては、@IT:ARPコマンドで通信先を特定するが参考になります。

補足(2013/3/16)
遅延の原因が分かりました。詳しくは、SunRay2で画面描画が遅く残像らしきものが残る Part2を参考。
by jehoshaphat | 2010-09-21 23:53 | ネットワーク