人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ネットワークに関しての質問です。

ハンドシェイク時にsyn/ackのやり取りが終了してからデータのやり取りが始まりますが、以下の2番目で接続自体が拒否されています。
1.SYN
2.SYN-ACK
3.ACK
2番でリセットされてしまい、コネクションそのものが出来ません。
構成は
FW <=> バランサー <=> WEBサーバ
となっておりFW <=> バランサー間で時々発生します。
考えられる原因としましてはSYNflood対策などが考えられるのですが、バランサー側でそういった事はしていないようで、拒否される原因が他に思いつきません。

ハンドシェーク時に拒否される理由や原因で思いつくものがあれば識者の方のアドバイスをいただきたいと思います。

●質問者: quocard
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● yamadattt
●100ポイント

パッと思いついたものを。

その1 バランサーの処理能力を超えている

httpsの通信だとSSLの暗号化・復号化を行っていると思います。

性能を超えた通信にはRSTを返却する仕様のロードバランサーがあります。

また、セッション数の上限を超えた通信はRSTを返却する場合もあります。

その2 httpsの通信において暗号化スイートが合わない

暗号化スイートがクライアントとサーバ間で合わないとか。

その3 webサーバの処理能力を超えている

webサーバの処理能力が超えている、apache等のwebサーバで定義した以上の通信が来るとRSTを返却する仕様のロードバランサがあります。

どのような製品を使用しているか、どのような状態で発生することが多いのか(高負荷時、特定の処理の時)、どんな通信(httpなのかhttpsなのか、別の通信なのか)なのかがあれば、さらにアドバイスをもらいやすくなるかと思います。

http://q.hatena.ne.jp/1320371793


quocardさんのコメント
回答ありがとうございます。 1.バランサー自体はF5のものですがアクセス数は1時間で数万アクセス程度なので処理能力は超えていないと思いわれます。 2.プロトコルについてはHTTPのみとなります。 3.WEBサーバーの処理能力についても超えていないとは思いますが、 RSTが来た際のパケットを解析すると、RSTが来る際はあくまでFW <=> バランサー間のみでの通信しか発生しておりません。 この場合が正しい場合は、それまでの通信量からバランサー側がWEBに問合せをすることもなく自動で判断してRSTを飛ばしているということでしょうか。 バランサーの仕組みに疎いのでこういった機能があるのかが私自身にはまだわかっておりません。 しかも症状が100reqに1回とか出るため毎回ではありません。 そのため原因として思いつくものがなくお手上げ状態になっております。

yamadatttさんのコメント
処理能力やSSLが原因ではなさそうですね。 パケットキャプチャではSYNに対してのRSTになってますでしょうか? (シーケンス番号が対応づけられていますでしょうか?) ロードバランサー(LBと呼びますね)の管理しているセッションがタイムアウトになると、RSTを返却したりします。 ログアウトボタンを押してブラウザを閉じて欲しいのに、×ボタンを押されたとかだとこのような事象が発生します。 ただ、この場合はSYNの要求に対してRSTを返却するわけではないので、パケットキャプチャは確認いただければと思います。 また、思いつくのは、http以外の通信でRSTが返却されているとか。 分散ルールがhttpしか定義していないのに、httpsやftpの通信が来るのでRSTを返却しているとか。ヘルスチェック系の通信をFWが出しているとか。 詳細な構成、パケットキャプチャを見ると原因がわかるかもしれませんが、パッと思いつくのはこんな感じです。 WEBサーバが返却したFIN等をLBでRSTに変換してクライアントに返却するという設定もあったと思います。 FW <=> バランサー間だけでなく、クライアント <=> FWの間、LB <=> webサーバ間のキャプチャすると原因が特定できるかもしれません。

quocardさんのコメント
再度確認しました。 RSTに関してはSYNに対してのRSTとなっておりました。 シーケンス番号についても対応づけられておりました。 プロトコルに関しては、こちらで定期的にコンテンツを取得するものをHTTPオンリーで走らせて見ましたが、それでも症状は時折みられました。 LB <=> WEB間についても色々と見てみる必要があるかと思いますが、Wiresharkによるやり取りとしては3wayハンドシェーク時のSYN-ACKがRSTになっているのでWEBとのやり取り以前のセッション確立時に切られているという認識です。 WEBサーバ側のFINをLBでRSTに変換する機能はまったく知りませんでしたのでこちらも確認できるようであれば確認してみます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ