140 likes | 241 Views
復路の経路情報も表示する trace R route. ayumi INSAT. Introduction (1). 既存の traceroute インターネットでは経路の対称性が保証されていない 往路の経路情報しか取得できない 復路の経路情報を取得するのが困難である 自分で対向ホストから traceroute する オペレーターに対向ホストからの経路情報を送信してもらう. 往路:衛星回線. 復路:地上回線. 片方向回線を含むネットワーク. 復路上の ・障害の検知 ・問題の切り分け が困難である。. Introduction(2).
E N D
復路の経路情報も表示するtraceRroute ayumi INSAT
Introduction (1) • 既存のtraceroute • インターネットでは経路の対称性が保証されていない • 往路の経路情報しか取得できない • 復路の経路情報を取得するのが困難である • 自分で対向ホストからtracerouteする • オペレーターに対向ホストからの経路情報を送信してもらう
往路:衛星回線 復路:地上回線 片方向回線を含むネットワーク 復路上の ・障害の検知 ・問題の切り分け が困難である。
Introduction(2) • ネットワークの経路情報をより正確に把握し、より効率的なオペレーションを実現したい。 • 経路の非対称性に対応した双方向の経路情報を取得できるシステムが必要
目的 • 復路の経路情報も表示するプログラムを設計・実装する • プログラミングの知識と経験を積む • AI3テストベットネットワーク上で実際の運用に役立てたい • インターネットの仕組みを理解するきっかけ • tracerouteのアーキテクチャを理解する
問題点 • 既存のtraceroute –g • 往路と復路の経路情報を示す手法 • 本来の宛て先ホストを経由ルータとして指定し、自分自身を宛て先ホストとして指定できる。 • ソースルーティングによって実現している • セキュリティ上の理由でネットワークのポリシーとして、ソースルーティングが許可されていない場合が多い。 • ソースルーティングに依存した従来の方法では、双方向の経路情報を取得できない
解決方法 • traceRroute • ソースルーティングに依存しない • 経路の非対称性に対応した双方向の経路情報を取得する
traceRrouteの設計 • クライアント・サーバモデル • traceRrouteサーバがサーバからクライアントへの復路の経路情報を返すことで、クライアント上の往路だけでなく復路の経路情報も標準出力に表示できる • traceRrouteクライアント • サーバへの往路の経路情報を保持する • サーバに復路の経路情報を要求し、取得する • traceRrouteサーバ • クライアントへの経路情報を要求に応じて取得し、クライアントに返す
クライアント・サーバモデル Result of ② ------------ ------------------ --------------- -------- -------------------- Result of ① ------------ ------------------ --------------- -------------------- -------------------- ②traceroute ①traceroute socket socket A+B = 最終結果 Result of A+B ------------ ------------------ --------------- -------------------- -------------------- ------------ ------------------ --------------- -------- -------------------- ・Aに①の実行結果を保存する。 ・Bに②の実行結果を保存する。 ・Serverからの②の実行結果を足す。 ・Clientに②の実行結果を送る。
traceRrouteプログラムの流れ Client側 Server側 • -------------------------------------------------- Server実行 (listenしている) • Client実行 • Serverにtracerouteする • 3の実行結果をAにwriteする • Serverに復路の経路情報を要求する • -------------------------------------------------- 5の要求をacceptする • -------------------------------------------------- Clientにtracerouteする • -------------------------------------------------- 7の実行結果をBにwriteする • -------------------------------------------------- Bの内容をClientに送信(write)する • Serverからの実行結果Bをreadする • 10でreadしたものをAに足す(writeする) • 標準出力に表示する
デモ(traceRroute) • クライアント • sfc-cpu.ai3.net • サーバ • sakuragaoka.usost.net
評価と今後の課題 • 実装が不十分な部分は今後も実装を継続する予定である • 経路情報を取得するために既存のtracerouteを用いた →独自の実装を行う • 上述した実装をAI3テストベットネットワーク上で実際の運用に役立てていく
自分への評価 • C言語をほぼゼロの状態から始めた • 構造体、関数、配列、ポインタ • read/write, open/close • socket()システムコール • system() • httpクライアント • echoサーバ,echoクライアント • traceRroute • sizeof(buf)とstrlen(buf)の違い