760 likes | 940 Views
自律分散協調システム論 第 8 回「経路制御と輻輳制御」. 中村 修 osamu@sfc.wide.ad.jp. 経路制御. 経路制御って?. 復習. 鉄道モデルでいうと、路線図の管理 「○○駅に行くには、この線にのせればいいのね」 「 ×× 駅は載ってないから行き方が分かんない」 インターネットでは、各コンピュータの持つ 経路表の管理 鉄道だと ( 目的駅、次の乗換駅、次に使う路線 ) 藤沢駅にて、 ( 新宿、品川、東海道線 ). 経路表. 復習. ルータ、ホストが保持する経路の一覧表
E N D
自律分散協調システム論第8回「経路制御と輻輳制御」自律分散協調システム論第8回「経路制御と輻輳制御」 中村 修 osamu@sfc.wide.ad.jp
経路制御って? 復習 • 鉄道モデルでいうと、路線図の管理 • 「○○駅に行くには、この線にのせればいいのね」 • 「××駅は載ってないから行き方が分かんない」 • インターネットでは、各コンピュータの持つ経路表の管理 • 鉄道だと(目的駅、次の乗換駅、次に使う路線) • 藤沢駅にて、(新宿、品川、東海道線)
経路表 復習 • ルータ、ホストが保持する経路の一覧表 • 経路表(FIB: Forwarding Information Base) • 経路表の要素 • プレフィクス • next hop (次に転送するルータ) • 出力インタフェース • プレフィックス • ネットワークアドレス • サブネットマスク • 例: 203.178.143.0/24 • 複数のサブネットを集約して一つのプレフィックスとして表現する場合もある
経路表とIP Forwarding 復習 ルータA ルータC ルータB 10.0.0.0/24 172.16.0.0/24 192.168.0.0/24 10.0.0.0/24 172.16.0.0/24
静的経路制御 メリット ポリシとオペレーションのエンジニアリングとの一致が保証 経路情報に伴うトラフィックは発生しない 経路が安定する 全てのルータで利用可能 デメリット 管理者が経路表を全て設定する必要がある 障害発生時に代替経路に自動的に切り替えられない 管理者が設定を変更するまでそのまま 動的経路制御 メリット 複雑なトポロジでも、最適な経路表を短時間で設定 障害発生時に代替経路を選択 デメリット 経路制御メッセージが、ネットワーク上に流れる 意図した通りに動作しない場合がある 経路が安定しない時がある 設定ミス 遠隔のネットワーク内のトラブルが伝播し、ネットワーク全体のルータの経路表が頻繁に書き変わる 静的経路制御 vs. 動的経路制御
静的経路制御の課題と動的経路制御の必要性 • 静的経路制御の課題 • 耐障害性 • 障害発生時に、手動で障害箇所を迂回するよう経路設定を変更した場合、復旧に時間もかかる • 設定コスト • 大規模なネットワークでは、膨大な経路を手動で設定するのは大変 • ルータ間で経路情報を交換し、自動的に経路表を生成 • 動的経路制御を用いたネットワークで、全てのルータの経路表が安定することを収束(コンバージェンス)という
経路制御プロトコル 距離ベクトル型 リンクステート型
IGPとEGP • 経路制御プロトコルにはIGPとEGPがある • IGP(Interior Gateway Protocol) • AS内で利用する経路制御プロトコル • いわば、組織のネットワーク内で利用する経路制御プロトコル • ASの管理者が任意の経路制御プロトコルを選択 • RIP, OSPF, IS-IS, BGP4(iBGP) … • EGP(Exterior Gateway Protocol) • AS間を接続するための経路制御プロトコル • いわば、the Internetを実現する経路制御プロトコル • AS間で共通のルーティングプロトコル • AS間の接続ポリシを経路制御に反映 • BGP4*1 (eBGP)
経路制御プロトコル(Routing Protocol) • 経路表の更新 • ネットワークが変更されたらどうするか? • 例: 新しいネットワークが追加されたら? • 全てのノードの経路表を更新する必要がある • ルータ間で経路情報を交換し、経路表を作成 172.16.1.0/24 ルータB 172.16.1.0/24 ルータC ルータA ルータB ルータC 10.0.0.0/24 192.168.0.0/24 172.16.0.0/24 172.16.1.0/24
距離ベクトル型アルゴリズムの特徴 • 代表的なプロトコル: RIPv1, RIPv2 • プロトコルの動作が簡単 • プログラムも簡単 • 小型ルータ/エントリクラスのL3スイッチでも搭載 • 経路の収束にかかる時間が長い • ただし、小規模なネットワークなら高速 • 収束 • 全てのルータが正しい経路表が作成し、それ以上更新しなくなるまでの時間 • ループが発生する可能性 • 確率は低いが、完全にループフリーではない • スケーラビリティ • 大規模なネットワークほど、交換する経路情報が増す • 国際線が9.6Kbpsだった時代、RIPでフルルートを…
距離ベクトル型のアルゴリズム • 各ルータは、経路情報を隣接ルータに広告 • 自分が到達可能なプレフィックス • そこへの距離(例えばホップ数) • 経路情報を受け取った場合の処理 • 自分が知らない経路なら、採用 • 自分が知っているプレフィックスより、短いプレフィックスの経路なら採用 • Longest match • 新しい経路情報を隣接ルータに広告
距離ベクトル型経路制御プロトコルの動作(1/4)距離ベクトル型経路制御プロトコルの動作(1/4) • 自分が持つ経路情報を隣接ルータに広告 Net A 133.27.4.0/24 ルータC ルータA 133.27.4.0/24まで1 hop Net B 133.27.5.0/24 ルータB ルータD
距離ベクトル型経路制御プロトコルの動作(2/4)距離ベクトル型経路制御プロトコルの動作(2/4) • 受け取った経路情報を、更に隣接ルータに伝達 Net A 133.27.4.0/24 133.27.4.0/24まで2 hop ルータC ルータA 133.27.4.0/24まで1 hop Net B 133.27.5.0/24 ルータB ルータD 133.27.4.0/24まで2 hop
距離ベクトル型経路制御プロトコルの動作(3/4)距離ベクトル型経路制御プロトコルの動作(3/4) • 受け取った経路情報が、自分が持つ経路情報よりホップ数が多い場合は破棄 Net A 133.27.4.0/24 133.27.4.0/24まで2 hop ルータC ルータA 133.27.4.0/24まで3 hop 133.27.4.0/24まで1 hop Net B 133.27.5.0/24 ルータB ルータD 133.27.4.0/24まで2 hop
距離ベクトル型経路制御プロトコルの動作(4/4)距離ベクトル型経路制御プロトコルの動作(4/4) • 最短の経路でトラフィックを転送 Net A 133.27.4.0/24 ルータC ルータA 133.27.4.0/24まで1 hop Net B 133.27.5.0/24 ルータB ルータD 133.27.4.0/24まで2 hop
リンク状態型アルゴリズムの特徴 • 代表的リンク状態型経路制御プロトコル • OSPF (Open Shortest Path First) • IS-IS (Integrated System to Integrated System) • 大規模なネットワークに適している • Loop Free • いったん経路が収束した後は、経路制御メッセージによるトラフィック量が少ない • ネットワークの規模が大きくなっても、恒常的に流れる経路制御メッセージの増加量は少ない • 距離ベクトル型に比べ、処理が複雑 • 安価なルータ,L3スイッチには搭載されていない • 大規模なネットワークでも経路の収束が早い
リンク状態型のアルゴリズム • 各ルータのリンク(インターフェース)情報をネットワーク全体で共有 • 例: R1はR2と繋がっている • 例: R1には133.27.4.0/24が繋がっている • ネットワーク全体にflooding • ネットワーク内のすべてのルータにリンク情報が伝わる • 全ルータは同一のリンク情報データベースを持つ • 状態に変化があったリンクの情報だけを伝える • 各ルータが、リンク情報からトポロジを再構成 • リンク情報を基に、自分がルート(根)となるツリーを作成 • ツリーにすれば、ある宛先までの最短経路がわかる • 全ルータが同一の計算方法
リンク状態型経路制御プロトコルの動作 • 各リンクにコストを設定 • 例:ルータA からルータB までのリンクコストは30 • 各ルータは、自分が持つリンクのUP/DOWNを監視 Net A 133.27.4.0/24 ルータC ルータA 30 30 30 30 30 30 Net B 133.27.5.0/24 100 ルータB ルータD 100
ルータD To: B , Cost: 500 To: C , Cost: 30 To: A , Cost: 30 To: B , Cost: 30 To: D, Cost: 100 ルータA ルータB ルータC To: B, Cost: 30 To: D, Cost: 30 リンク状態のデータベース • ルータは、自分が持つリンク情報をflooding • 各ルータが、全ルータのリンク状態を保持 To: B, Cost: 30
ツリーの作成 • コストが小さい順に組み合わせ、ツリーを作成 • 最短の経路が判明 ルータB Cost 30 Cost 30 ルータA Cost 100 (使わない) ルータC Cost 60 Net A 133.27.4.0/24 ルータD Net B 133.27.4.0/24
Administrative Distance (1/2) • ルータには経路制御プロトコルの持っている経路表(RIB)とルータがパケットを転送する際の経路表(FIB)がある • 同一機器上で複数の経路制御プロトコルを同時に利用した際、異なる経路情報を受け取る場合がある • 経路制御プロトコルごとに経路選択の基準は異なる • 例:
Administrative Distance (2/2) • Administrative Distance • 経路制御プロトコルなど、経路の情報源に対する信頼度 • ベンダによってはPreferenceとも呼ぶ • 同じ経路に対して複数の経路情報がある場合には、 Administrative Distanceの値が少ない方が優先される • デフォルト値から値を変更することも可能 • デフォルト値の例:
AS(Autonomous System) • 経路制御ポリシを共有するネットワークの集合 • 外部からは1つのネットワークとして見える • 全国展開しているISPも外部から見ると1つの巨大なネットワーク • インターネットは各ASが相互に接続されたもの • AS番号 • 各ASは固有の番号を持つ • 日本ではJPNICがAS番号を割り当て • http://www.nic.ad.jp/ja/ip/asnumber.html So-Net 2527 OCN 4713 KDDI 2516 IIJ 2497 WIDE 2500 インターネット
経路制御の分割 • 「AS内の経路制御」 と 「AS間の経路制御」 • 各ASは異なるポリシ・管理体系 • 規模性の問題 • 全世界を一つのRIPやOSPFドメインで接続することはできない • 障害範囲の限定 • AS内の障害が世界中に伝播しない • 経路数の軽減 • 経路をAS外に広告する場合、経路を集約できる AS間の経路制御 (BGP) AS内の経路制御 (RIP, OSPF) AS内の経路制御 (RIP, OSPF) AS AS AS
経路制御の階層化 • 経路制御は、大きく2階層に分かれる • BGPでは、集約された経路情報だけ交換 EGP – (BGPによる)AS間の経路制御the Internet全体の経路をフルルート(full route)と呼ぶ約20万経路(2006年11月現在) AS B AS E AS A AS D AS C IGP – 各AS内の経路制御
経路の集約 AS A 203.178.143.3へ送信 ルータX BGP BGPで得た経路情報から、ASBへ転送 203.178.143.0/24はこっち ルータA AS内経路制御により、ルータBへ転送 RIP, OSPF 203.178.143.128/25はこっち 203.178.143.0/25はこっち ルータC ルータB AS B 203.178.143.0/25 203.178.143.128/25
BGP (Border Gateway Protocol) • パスベクトル型経路制御プロトコル • ループフリー • インターネット全体でループができたら大変 • BGP4自体はIGPとして利用することもできる - iBGP • 経路制御のポリシを設定に反映しやすい • ISP間の接続の契約に従った経路制御複数の対外接続をどう使いわけるか など • ピア • BGPによるルータ間 (AS間) の接続 AS 2516 AS 4767 ピア ピア AS 2500 ピア ピア AS 4717 AS 7660
パスベクトル型の経路制御方式 • 自分自身から目的地へ到達するまでに辿るパス を経路として広告 • 目的地へのホップ数や距離ではない • より短いパスを選択して広告(ベストパス選択) 1 2 A AはB→A A C B 3 AはC→B→A 1 A D E 2 4 AはD→A AはD→A ベストパスC→B→A×
ループ • 一貫しない経路情報により、各ルータの経路表に不整合があるとループが発生する場合がある • パケットが適切な宛先に転送されない • パケットはTTLが切れるまで転送され続ける Next-hop is 10.0.0.3 Next-hop is 10.0.0.2 10.0.0.2 traceroute to 10.1.2.3, 30 hops max, 38 byte packets 1 10.0.0.3 8.875 ms 8.753 ms 9.691 ms 2 10.0.0.1 9.564 ms 11.345 ms 14.346 ms 3 10.0.0.2 8.693 ms 8.758 ms 8.631 ms 4 10.0.0.3 8.622 ms 8.802 ms 8.728 ms 5 10.0.0.1 10.011 ms 12.782 ms 10.113 ms 6 10.0.0.2 10.007 ms 10.627 ms 10.049 ms 10.0.0.1 10.0.0.3 Next-hop is 10.0.0.1
ループフリーになる仕組み(1/4) • 受け取った経路情報のパスに自分自身が含まれているかによってループを検出 • Bは、B自身がパスに含まれたAへの経路を破棄 B A C A D
ループフリーになる仕組み(2/4) • 受け取った経路情報のパスに自分自身が含まれているかによってループを検出 • Bは、B自身がパスに含まれたAへの経路を破棄 B AはB→A C A AはB→A D
ループフリーになる仕組み(3/4) • 受け取った経路情報のパスに自分自身が含まれているかによってループを検出 • Bは、B自身がパスに含まれたAへの経路を破棄 B C A AはC→B→A D
ループフリーになる仕組み(4/4) • 受け取った経路情報のパスに自分自身が含まれているかによってループを検出 • Bは、B自身がパスに含まれたAへの経路を破棄 B C A !!LOOP!!AはD→C→B→A AはC→B→A D
BGPの経路表の例 #show ip bgp route Total number of BGP Routes: 91216 Status A:AGGREGATE B:BEST b:NOT-INSTALLED-BEST C:CONFED_EBGP D:DAMPED E:EBGP H:HISTORY I:IBGP L:LOCAL M:MULTIPATH S:SUPPRESSED Prefix Next Hop Metric LocPrf Weight Status 1 4.78.32.0/21 203.178.136.15 9041 100 0 BI AS_PATH: 6461 14361 29748 2 4.78.32.0/21 203.178.136.15 9041 100 0 I AS_PATH: 6461 14361 29748 3 4.78.32.0/21 203.178.136.15 9041 100 0 I AS_PATH: 6461 14361 29748 4 4.78.32.0/21 203.178.136.15 9041 100 0 I AS_PATH: 6461 14361 29748 5 6.1.0.0/16 203.178.136.15 100 100 0 BI AS_PATH: 7660 11537 668 1455
BGPによる経路制御ポリシの実現 • 経路のフィルタリング • BGPのアトリビュート • AS_PATH • MED(Multi Exit Discriminator) • あるASと複数の回線で接続されている場合に利用 • 隣接AS対し、複数ある接続回線のうち、利用すべき回線を指定 • Local Preference • 自AS内部において、他ASに行くときに、どの対外ルータを経由すべきか指定 • Community属性の活用
もちょっとゆっくり 送って。 キュー(バッファ) フローコントロール ② 送信者 受信者 もちょっとゆっくり 送るか。 ③ ① 早すぎてバッファがあふれる
もっとはやく 送って。 キュー(バッファ) フローコントロール ② 送信者 受信者 ③ じゃはやくおくるか ① 遅いから余裕があるな
ウィンドウ制御 • ウィンドウ広告 = 受信バッファ残量 • ウィンドウ更新 • ACKセグメントによる • ACKを待たずに、複数セグメントを転送 • 転送効率の向上
8 1 7 2 6 3 4 5 スライディングウィンドウ 直ちに 転送可能 広告 ウィンドウ
8 1 7 2 6 3 4 5 スライディングウィンドウ 転送されたが 確認応答されていない 広告 ウィンドウ 直ちに 転送可能
転送されて 確認応答済み 8 1 7 2 6 3 4 5 スライディングウィンドウ 転送されたが 確認応答されていない 直ちに 転送可能
8 1 7 2 6 3 4 5 スライディングウィンドウ 転送されて 確認応答済み 転送されたが 確認応答されていない 新たに広告された ウィンドウ 直ちに 転送可能
もちょっとゆっくり 送ろう。 輻輳 TCPの輻輳制御機能 ② 送信者 受信者 ① 受信者からしばらく応答がない 輻輳が発生してパケットが届いて なさそうだ
なんらかの対処をしなければ 悪化する一方 (輻輳崩壊) 玉突き事故 二次災害 輻輳発生 輻輳制御の重要性 • 輻輳は悪化していく傾向がある
TCPの輻輳制御アルゴリズム • 非常に多くのアルゴリズムが存在 • 代表的な例 • TCP Tahoe • スロースタートアルゴリズム,輻輳回避アルゴリズム,高速再転送アルゴリズム • TCP Reno (TCP NewReno) • 高速再転送アルゴリズム • TCP Vegas • RTTをベースとしたウィンドウサイズの調整 • OSによって実装されているアルゴリズムがことなることも
Linux Kernel の持つ アルゴリズム(Kernel 2.6.18の例, /usr/src/linux/net/ipv4/tcp_*.c) • Binary Increase Congestion control for TCP (BICTCP) • Lison-Xu, Kahaled Harfoush, and Injong Rhee. • TCP Reno / TCP NewReno • BSD系OSのデフォルト • Binary Increase Congestion control for TCP v2.0 (TCP CUBIC) • Injong Rhee, Lisong Xu. • High Speed TCP • Sally Floyd. • H-TCP • R.N.Shorten, D.J.Leith. • TCP HYBLA • C.Caini, R.Firrincieli. • TCP Low Priority (TCP-LP) • Scalable TCP • Tom Kelly • TCP Vegas • Lawrence S. Brakmo and Larry L. Peterson. • TCP Veno • C. P. Fu, S. C. Liew. • TCP Westwood+: end-to-end bandwidth estimation for TCP • Angelo Dell'Aera. Linuxにおけるデフォルトアルゴリズム(変更可能)