クラスフルルーティングと異なるサブネット(続)

この異なるサブネットの場合のルーティングアップデートの取り扱いって、Cisco TACに情報が出ていたのを教えてもらった。
Cisco TAC アップデート送受信時の RIP および IGRP の動作


これがまた微妙にわかりづらい表現だったりするので。
ちょっとまとめてみると。

1.送信時
  1. アップデートを送信するインタフェースと、違うクラスフルネットワークの場合
    1. クラスフルネットワークのアップデートを送信
  2. 同じクラスフルネットワークでサブネット化されている場合
    1. アップデートを送信するインタフェースとサブネットマスクが違うサブネットはアップデートを送信しない
    2. アップデートを送信するインタフェースとサブネットマスクが同じなら、サブネットでアップデートを送信

つまり、インタフェースを4つもつルータを例にとってみる。

RouterA

(config)#interface fa0/0
(config-if)#ip address 10.1.1.1 255.255.255.0

(config)#interface fa0/1
(config-if)#ip address 20.1.1.1 255.255.255.0

(config)#interface fa0/2
(config-if)#ip address 20.1.2.1 255.255.255.0

(config)#interface fa0/3
(config-if)#ip address 20.1.3.1 255.255.255.128

(config)#router rip
(config-router)#network 10.0.0.0
(config-router)#network 20.0.0.0
  1. fa0/0でアップデートを送信する
    1. 20.0.0.0 … 前述1.1項が適用
  2. fa0/1でアップデートを送信する
    1. 10.0.0.0 … 1.1項が適用
    2. 20.1.2.0 … 2.2項が適用

ここで、20.1.3.0はfa0/1と異なる255.255.255.128だから、2.1項が適用されアップデートは送信されない、ってことになる、と。

2.受信時
  1. アップデートを受信したインタフェースと、違うクラスフルネットワークのアップデートの場合
    1. すでにそのクラスフルネットワークの情報を、ルータのほかのインタフェースから入手している
      1. アップッデートを無視
    2. すでにそのクラスフルネットワークの情報を、ルータのほかのインタフェースから入手していない
      1. クラスフルネットワークとしてテーブルに載せる
  2. アップデートを受信したインタフェースと、同じクラスフルネットワークのアップデートの場合
    1. 受信したインタフェースのサブネットマスクを適用した時、ネットワークアドレスになる
      1. そのサブネットマスクのネットワークとしてテーブルに載せる
    2. 受信したインタフェースのサブネットマスクを適用した時、ネットワークアドレスにならない
      1. /32のホストへのルートとしてテーブルに載せる

さきほどの4つのインタフェースを持つルータ(routerA)のfa0/1とfa0/1で繋がっているルータ(RouterB)を考えてみる。

RouterB 設定1

(config)#interface fa0/0
(config-if)#ip address 10.10.10.1 255.255.255.0

(config)#interface fa0/1
(config-if)#ip address 20.1.1.2 255.255.255.0

RouterAのfa0/1は10.0.0.0と20.1.2.0のアップデートを送信してくる。

  1. 10.0.0.0
    1. 前述1.1.1項により、無視
  2. 20.1.2.0
    1. 前述2.1.1項により、20.1.2.0/24としてテーブルに載せる

10.0.0.0は自身のfa0/0が10.0.0.0であるため、すでに情報があるから無視。いわゆる「不連続サブネット問題」のこと。
20.1.2.0は普通に受信する、と。

では、RouterAのfa0/1とRouterBのfa0/1のサブネットが違ったら?

RouterB 設定2

(config)#interface fa0/0
(config-if)#ip address 10.10.10.1 255.255.255.0

(config)#interface fa0/1
(config-if)#ip address 20.1.1.2 255.255.0.0

RouterAのfa0/1は10.0.0.0と20.1.2.0のアップデートを送信してくる。

  1. 10.0.0.0
    1. 前述1.1.1項により、無視
  2. 20.1.2.0
    1. 前述2.2.1項により、20.1.2.0/32のホストへのルートとしてテーブルに載せる

20.1.2.0/16はネットワークアドレスではなく、ホストアドレスだから、/32が自動的に適用、となるわけだね。


う〜ん、クラスフルルーティングって面倒くさいなぁ。
これにさらに、ルーティングループ防止のスプリットホライズンとか、ポイズンリバースとか考えるわけだし。
クラスレスの方が簡単だよなぁ。