RIP

RIP

  • Distance Vectorなプロトコル
  • RIPが知ってるnetworkを、RIPに参加してるinterfaceにadvertise
  • 隣接関係はない。ただ投げる。ただ受け取る。
  • RIPv1はブロードキャスト(255.255.255.255)、RIPv2はマルチキャスト(224.0.0.9)でadvertise。RIPでやりとりするにはこれが届くことが必要。
  • UDPを使用。ポート520。
  • ラボでもRIPv2のみになり、クラスフルなプロトコルはラボではなくなった。

設定

RIPを動作させる

RIPプロセスを動作させ、RIPを動作させるインターフェースを指定する。インターフェースの指定はネットワークで指定し、ネットワークコマンドで入れたものの中に含まれるIPアドレスを持ったインターフェースでRIPのパケットをやりとりするようになる

Router(config)# router rip
Router(config-router)# network ip-address

ここで、ip-addressはクラスフルなネットワークを指定しなければいけない。つまり、RIPv2でサブネットを運べるようになったといっても、設定ではサブネットを指定できない。従って、このクラスフルなネットワークに含まれる全てのインターフェースで動作してしまう。

UnicastでRIPパケットを送出するには

RIPはRIPv1ではブロードキャスト(255.255.255.255)、RIPv2ではマルチキャスト(224.0.0.9)を使ってRIPパケットを送出する。NBMAなネットワークで、例えばFrame-relayで"broadcast"キーワードが禁止されるような場合、RIPパケットをユニキャストで送出しないと相手に届かない。RIPパケットをユニキャストで送出するためには

Router(config-router)# neighbor ip-address

ここで指定したip-address向けにユニキャストでRIPパケットを投げるようになるが、同時にブロードキャスト/マルチキャストでも同じインターフェースからRIPパケットを投げてしまう。ユニキャストでだけRIPパケットを投げたいときは、passive-interfaceコマンドでインターフェース指定し、ブロードキャスト/マルチキャストのRIPパケットを投げないようにする。

メトリックの調整(offset-list)

RIPはメトリックにホップカウント(ルータの数)を使う。このホップカウントを操作して、経路選択の操作を行うには、offset-listを使う。

Router(config-router)# offset-list [access-list] {in | out} offset
[interface]

offsetで指定したホップカウントを足す引くことはできない。入出どちらのRIPアップデートに適用するかをin/outで、どのインターフェースに適用するかを指定する。Access-list使って、特定の経路のみホップカウントを足すということもできる。

また、access-listを"0"と指定すると、全てのネットワークに適用される。

Router(config-router)#offset-list ?
<0-99> Access list of networks to apply offset (0 selects all networks)
      

タイマ値の変更

RIPのアップデート間隔、経路を有効でないと判定するまでの時間などのタイマ値を変更できる。

Router(config-router)# timers basic update invalid holddown flush

時間は秒で指定。因みに、デフォルトのタイマ値は、

update = 30s
invalid = 180s
holddown = 180s
flush = 240s

覚えてなくても、sh ip protocolsコマンドで現在のタイマ値がわかる。

Router#show ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds Invalid after 180 seconds, hold down 180, flushed after 240

RIPバージョン

デフォルトでは、受信はRIPv1/RIPv2、送信はRIPv1のみ。動作バージョンを変えるには、

Router(config-router)# version {1 | 2}

上記では、送受信共に、また全てのインターフェースで指定したバージョンになる。送受信毎、インターフェース毎にバージョン設定するには、

Router(config-if)# ip rip { send | receive } version { 1 | 2 | 1 2 } 

認証

認証はRIPv2のみ。RIPv1では認証できないのでバージョンに注意。key chainでパスワードのデータベースを作っておいて、それをインターフェースにわりつけるイメージ。

まずkey chainの作成

Router(config)#key chain name-of-chain 
Router(config-keychain)# key number 
Router(config-keychain-key)# key-string text

オプションで、このパスワードの有効期間を設定できる

Router(config-keychain-key)# accept-lifetime start-time 
	                     {infinite | end-time | duration seconds}] 
Router(config-keychain-key)# send-lifetime start-time 
                         {infinite | end-time | duration seconds} 

作成したkey chainをインターフェースにわりあてる。クリアテキストか、MD5どちらかを指定。

Router(config-if)# ip rip authentication key-chain name-of-chain
Router(config-if)# ip rip authentication mode {text | md5}

経路集約

RIPにはクラスフル境界での自動経路集約と、手動による経路集約の2通りの集約がある。クラスフル境界での自動経路集約はデフォルトで有効。これ無効にするには、

Router(config-router)# no auto-summary

手動で経路集約できる。但し、スーパーネット(クラスフルのナチュラルマスクより小さなマスク)での集約は不可。経路集約したものをアドバタイズするインターフェースに設定。

Router(config-if)# ip summary-address rip ip_address ip_network_mask 

集約経路はそのメジャーネットワーク内でひとつだけ(同じメジャーネットワークで複数の集約経路はだめ)が設定可能。

Source IP addressの検証

RIPはデフォルトで、やってきたRIPパケットのソースアドレスが正しいかどうか検証する(到着したインターフェースのネットワークと同じサブネットからかどうか)。これを無効にするには、

Router(config-router)# no validate-update-source

Sprit Horizon

Frame-relayの物理インターフェースではSprit Horizonはデフォルトで無効、その他では有効になっている。ループ回避、そしてIPリーチャビリティの確保のため、特にNBMA環境ではこれに注意。

Router(config-if)# ip split-horizon (有効に)
Router(config-if)# no ip split-horizon (無効に)

ハブアンドスポークのときは、スポークでneighbor指定

RIPパケット送出間隔

通常、複数のRIPパケットを送る必要のある場合(経路数が多くある場合)、それぞれのパケットを送出する間隔は0だが、処理能力の小さいルータにこれで送ってしまうと処理が間に合わない可能性もある。そのような場合に、送出パケット間隔をあけてあげる。

Router(config-router)# output-delay delay

RIP Triggered Update

RIPはデフォルトで30s毎にアップデートパケットを投げるが、WAN回線など従量制回線ではそのためにずっと回線を使うことになるので料金が高くなってしまう。RIPデータベースに変化があったときのみアップデートパケットを投げるようにするには、

Router(config-if)# ip rip triggered

P2Pなインターフェースのみ有効。BRIなどOn Demand Circuitでは不必要にインターフェースあげなくなるのでよい。また、triggered updateなインターフェースから受け取った経路はagingしない。

TIPS

デフォルトルート

デフォルトルート(ip route 0.0.0.0 0.0.0.0)を設定したrouterでは自動的にRIPにredistribteされ、advertiseされる。

default information originate を設定すると、そのrouterで0.0.0.0 default routeが設定されてなくても、0.0.0.0 をadvertiseする。ここでroute-map使って、コンディショナルアドバタイズなんかもできる。

Offset-list

access-listを使わずに経路フィルタしろというような場合、offset-listでメトリック足して16にしてその経路を無効にしてしまうという手もある。

Key chainに関して

key chainで2つkey設定しても上の一つしか使わない (時間で変えるときに使う?)

例えばハブアンドスポークで、スポーク毎にkeyを変えたいような場合、ハブのインターフェースにひとつkey chainふっても変えられない。こういう場合はトンネル使う。このときneighborコマンドで隣接指定したら、PBRでRIP updateをtunnelに流し込んでやる必要あり

ループの回避

ディスタンスベクタではループができるもんだと思っておく。特に2箇所でredistribute行うような場合は、ループできないように(また最適経路になるように)ケアしておく。

  • distribute-listなどで帰ってくる経路をフィルタ
  • distanceを変更
    Router(config-router)# distance distance neighbor-address 		                 wildcard ACL
    ACLでpermitされた経路のADが変更される。0.0.0.0 255.255.255.255をネイバで指定すると全ルータが対象。
  • Tagをつけるというやりかたもある(ただ、ループは防げるが最適経路にならない)

その他

  • RIPv2の時に、no auto-summary忘れない
  • ラボでは、必要なインターフェースのみRIPアップデート投げるように注意。
    Router(config-router)# passive-interface default
    Router(config-router)# no passive-interface interface
  • neighborコマンド使わずに、ユニキャストでRIPアップデートを投げろと言われたら、NATを使うという手もあり。
    Rotuer(config)# ip nat outside source static udp unicast-address 520
    		          224.0.0.9 520
    Router(config-if)# ip nat outside

トラブルシューティング

  • debug ip rip
  • clear ip route *
  • show ip protocol
    timer値を確認
  • NBMA networkで特にsprit horizonに注目

コメントする

From TestKing

メルマガ

シスコ認定、どうせとるなら「めざせ! CCIE」ということでメールマガジンを発行しています。

登録はこちらから
メールアドレス:
解除はこちらで
メールアドレス:
Powered by まぐまぐ

BlogPeople

BLOG PET

From Google