インターネットオペレーション
第4回
経路制御
前回からの再出
●誰と通信するのか?
–
識別子の存在
–
IP アドレス
●どのように伝わるのか
–
経路制御
–
経路表
IPアドレスと MACアドレス
●
Ethernet で接続している Host A(192.168.1.1
) が
Host B(192.168.1.2) と通信する場合
–
相手のIPアドレスはわかっている
–
でも、実際にどうやって
Ethernet で通信する?
ー>相手の
MAC アドレスを知る必要がある
●IP アドレスから MAC アドレスに変換する機
構が必要
ARP(Address Resolution Protocol)
●
IP アドレスと MAC アドレスの変換
●
Ethernet Broadcast で問い合わせて、結果を
ARP Tableを見てみよう!
●
Windows 系・UNIX 系 OS共通
–
“arp -a”
●
一旦全部消して見よう
パケットの伝わり方
●パケットの伝送はバケツ
リレー
/伝言ゲーム
–
中継ノード(ルータ)が受
け取ったパケットを
宛先を
見て
適切な相手に転送する
ルータ
パケッ
ト
転送先B
転送先A
経路制御
●それぞれのルータがどの
転送先にパケットを転送
するかを判断
●どうやって判断をするか
?
–
経路表による判断
ルータ
パケッ
ト
転送先B
転送先A
このパケットは 宛先A?B?経路表
●
宛先のネットワークと転送先のリスト
経路表の例
nr60: {2} % netstat -rn Routing tables
Internet:
Destination Gateway Flags Refs Use Interface
default 203.178.140.1 UG 7 35972 ef1 127 127.0.0.1 UR 0 0 lo0 127.0.0.1 127.0.0.1 UH 0 0 lo0 133.27.12.129 203.178.140.1 UGHc 1 120 ef1 133.27.171/24 203.178.140.1 UG 0 0 ef1 202.0.73 203.178.140.1 UG 0 0 ef1 202.0.73.96/27 203.178.140.1 UG 0 0 ef1 202.0.73.128/27 203.178.140.1 UG 0 0 ef1 202.0.73.236/30 203.178.140.1 UG 0 0 ef1 203.178.138.18/30 203.178.141.9 UG 0 0 ef0 203.178.139.64/27 203.178.140.1 UG 0 0 ef1 203.178.139.96/27 203.178.140.1 UG 0 0 ef1 203.178.139.128/27 203.178.140.1 UG 0 0 ef1
宛先ネットワーク
転送先
デフォルト経路
経路表を見てみよう
●Windows 系 なら・・・
–
コマンドプロンプトから
“route print”
●UNIX 系 OS (Mac OS X等)
–
“netstat -rn”
●ノートPCは出入り口が1つしかなく、
default 経路しか存在しない場合が多い
パケットの中継される様子を
見てみよう
●www.sfc.wide.ad.jp
まで
●Windows 系 OS
–
コマンドプロンプトで
“tracert
www.sfc.wide.ad.jp
”
●UNIX 系 OS
–
“traceroute
www.sfc.wide.ad.jp
”
エンドノードでの経路表
ネットワーク
ネットワーク内の相手 とは通信できる。 でも、どこから外部に 出られるだろう?ルータ
外部へ
エンドノードでの経路表
ネットワーク
ルータ
外部へ
経路表 Default ルータネットワーク
C
ネットワーク
B
ネットワーク
A
経路表によるパケット転送のモデ
ル
ルータ
B
経路表 ネットワークA ルータA ネットワークC ルータC ・・・・ルータ
A
経路表ネットワークB ルータB ネットワークC ルータB ・・・・ルータ
C
経路表 ネットワークA ルータB ネットワークB ルータB ・・・・経路表の例
nr60: {2} % netstat -rn Routing tables
Internet:
Destination Gateway Flags Refs Use Interface
default 203.178.140.1 UG 7 35972 ef1 127 127.0.0.1 UR 0 0 lo0 127.0.0.1 127.0.0.1 UH 0 0 lo0 133.27.12.129 203.178.140.1 UGHc 1 120 ef1 133.27.171/24 203.178.140.1 UG 0 0 ef1 202.0.73 203.178.140.1 UG 0 0 ef1 202.0.73.96/27 203.178.140.1 UG 0 0 ef1 202.0.73.128/27 203.178.140.1 UG 0 0 ef1 202.0.73.236/30 203.178.140.1 UG 0 0 ef1 203.178.138.18/30 203.178.141.9 UG 0 0 ef0 203.178.139.64/27 203.178.140.1 UG 0 0 ef1 203.178.139.96/27 203.178.140.1 UG 0 0 ef1 203.178.139.128/27 203.178.140.1 UG 0 0 ef1
宛先ネットワーク
転送先
デフォルト経路
Longest Match
●もっともネットワーク長が長いものを使う
–
より「詳しい」経路という考え
–
Default 経路は 長さ/0の経路
●一番優先順位が低い
経路表 Default ルータA 203.178.143.0/24 ルータA 203.178.143.0/25 ルータB ...To: 203.178.143.1
全部にマッチするが、 /25 の方が長いので こちらにマッチルータ
Bへ
ルータ経路異常でパケットが
届かなくなる二大要因
●経路の不在
●経路のループ
ルータ
To: 133.27.4.1
経路表 203.178.143.0/25 203.178.143.129/25 131.113.0.0/16 ... ... 経路表に133.27.4.1 を含む
ネットワークが無い
!
経路のループ
●経路表にしたがっていくと、同じ場所をぐる
ぐる回る
●多くの場合
default 経路が入っているため、
経路が無い場合はこちらの現象が起きる
ルータ
A
To: 133.27.4.1
経路表 133.27.0.0/16 ルータB ・・・・ルータ
B
経路表 133.27.0.0/16 ルータA ・・・・これはルータ
B行き
これはルータ
A行き
パケットの
TTL(Time To Live)
●中継される回数の指定
●中継ノードごとに一つず
つ減らしていく
●無くなったら
ICMP(次
頁) を返す
●パケットが無限にループ
することを防ぐ
Ver IHL TOS Total Length Identification Flag Fragment
Offset
TTL Protocol Header Checksum Source Address
Destination Address
ICMP
●
Internet Control Message Protocol
–
ネットワーク、およびパケット送受信の状態に
ついて通知するプロトコル
–
有名なものでは・・・
●
echo request/reply (PING)
●
Time to live exceeded (traceroute)
●Desination Unreach
経路表の作り方
●学生のノート
PC等、”エンドホスト”の場合
–
DHCP などのアドレス自動設定プロトコルで設
定
●ルータなどの中継ホストの場合
–
経路制御プロトコルでの設定
経路制御
●
経路制御とは、うまく通信ができるように各
主なループの原因(1)
●正常な経路が存在しない
–
設定し忘れ
–
ルーティングプロトコルの
不良
中継ルータ
2
外部接続
ルータ
ネットワーク
A
中継ルータ
1
経路表 Default 外部接続ルータ 経路表 ネットワークA 中継ルータ2 本来はネットワークAへの 経路が必要なのに、存在しないネットワーク
A(新)
ネットワーク
A(旧)
主なループの原因(2)
●経路情報の不整合
–
変更に正しく追従できていない
ルータ1
ネットワークA経路表 ルータ2ルータ2
ネットワークA経路表 ルータ1ルータ3
移動
正しくはルータ3があて先 だが、古い情報のまま正しく 更新されていない経路の非対称性
●行きと帰りで同じ道を通るとは限らない
●SFCの例: SFCから海外サイトへ
WIDE
SFC
日本・大手町
KDDI
UUnet
海外サイト
アメリカ・ロサンゼルス非対称経路と
traceroute(1)
●Traceorute して止まったところが本質的に悪
いとは限らない!
●往路:
1 → 2 → 4 → 6
●復路:
6 → 5 → 3 → 1
1
2
3
4
5
6
非対称経路と
traceroute(2)
●1 → 3 間の通信に障害
●4 までの経路
–
1 → 2 → 4
–
4 → 3 → 1
●Traceroute すると 2 までで止まってしまう
–
でも、
2 → 4 間の通信は問題ない!
1
2
3
4
5
6
非対称経路と
traceroute(3)
●3 → 4 間が通信障害
●4 を経由する 1 ー 6 間の通信は通る
●4 自体に届かない
1
2
3
4
5
6
静的経路制御と動的経路制御
●静的経路制御
–
オペレータが各ノードの経路表を手動で設定
●動的経路制御
–
各ノードが情報をやりとりし、自動的に設定
–
ルーティングプロトコル
経路制御:
2台のコンピュータ
●
経路制御の必要無し
経路制御:単純なネットワーク
経路制御:複雑なネットワーク
ネットワーク
A(新)
ネットワーク
A(旧)
状態変化への対応(1)
●状態が変わった場合、経路表を対応させる必
要がある
–
静的経路制御は手動
–
動的経路制御は自動
ルータ1
ネットワークA経路表 ルータ2ルータ2
ネットワークA経路表 ルータ1ルータ3
移動
ネットワークAのあて先を ルータ3に書き換える状態変化への対応(2)
●3 → 4 間が通信障害
●4 からの戻りのパケットは 5 を通るように経
路表を変更
–
動的経路制御は通信障害を検知して、自動的に
経路を変更できる
1
2
3
4
5
6
経路制御プロトコル
Routing Protocol
• ルータ間で経路情報を交換
し、経路表を作成
• 経路情報
– どこに、どのサブネットがあるか
– どのルータを介して、どのサブネットに到達できるか
ルータ
A
ルータ
B
203.178.143.0/24 133.27.0.0/16 こっちには203.178.143.0/24が ある こっちには133.27.0.0/16がある 133.27.0.0/16 ルータB ・・・・ 203.178.143.0/24 ルータA ・・・・ 受け取った経路を 経路表に追加IGP と EGP
●
IGP
–
組織「内」での経路制御
●
EGP
ルーティングプロトコルの種類
●IGP
–
RIP
–
OSPF
–
iBGP
●EGP
–
(e)BGP
経路交換と経路選択
●ルーティングプロトコルは経路交換と経路選
択から成る
–
経路交換:経路情報を他のルータに伝える
–
経路選択:受け取った経路情報から最適な経路
を選択
●経路選択方式が違うとループが起きる
経路制御アルゴリズム
●
距離ベクトル型アルゴリズム
●リンク状態型アルゴリズム
距離ベクトル型のアルゴリズム
●経路広告
– 各ルータは、経路情報を
隣接ルータ
に広告
– 自分が到達可能なプレフィックス
– そこへの距離
(例えばホップ数)
• 経路選択
– 自分が知らない経路なら、採用
– 自分が知っている経路より、短い経路なら採用
• 代表的なプロトコル
– RIP, RIP2
リンク状態型のアルゴリズム
• 経路広告
– ネットワーク全体に流す
–
各ルータの
リンク
(インターフェース)情報
をネッ
トワーク全体で共有
– 例: R1はR2と繋がっている
– 例: R1には133.27.4.0/24が繋がっている
• 経路選択
– リンク情報を基に、全ルータまでの道順
(ツリー)
を作成
– 全ルータが同一の計算方法
• OSPFなど
経路制御の階層構造(
1)
●Autonomous System(AS)
–
同じポリシーで管理されているネットワーク
–
外部からはひとつのネットワークに見える
●内部の複雑さは隠蔽される
OCN 4713 IIJ 2497 KDDI 2516 SO-NET 2527 WIDE 2500 インターネット経路制御の階層構造(2)
• 「AS内の経路制御」 と 「AS間の経路制御」 • 規模性の問題 – 全世界を一つのRIPやOSPFドメインで接続することはできない – 世界規模で変更があるたびに全世界を更新していたら破綻するAS
AS
AS
AS内の経路制御 (RIP, OSPF) AS間の経路制御 (BGP) AS内の経路制御 (RIP, OSPF)経路の集約
203.178.143.0/25
203.178.143.128/25
203.178.143.0/24はこっちAS A
AS B
BGPで得た経路情報から、 ASBへ転送 AS内経路制御により、ル ータBへ転送 ルータA ルータX 203.178.143.3へ送信BGP
RIP, OSPF
ルータB ルータC 203.178.143.0/25は こっち 203.178.143.128/25は こっち経路制御の階層構造(3)
• 経路制御は、大きく2階層に分かれる
– BGPでは、集約された経路情報だけ交換
AS A AS E AS DBGPによるAS間の経路制御
AS C AS BAS内の経路制御
ネットワーク
A(新)
ネットワーク
A(旧)
再掲:主なループの原因(2)
●変更に正しく追従できないとループが発生
●全世界規模で細かく追従は不可能
ルータ1
ネットワークA経路表 ルータ2ルータ2
ネットワークA経路表 ルータ1ルータ3
移動
正しくはルータ3があて先 だが、古い情報のまま正しく 更新されていないまとめ
●