BIRDルーティングデーモン を実行している2つのホスト間でRIPv2プロトコルとの基本的な通信をセットアップしようとしています。
アドレスHost A
を持つインターフェースenp0
を備えた10.0.1.50/24
があります。
アドレスHost B
を持つインターフェースenp1
を持つ別のホスト10.1.1.25/24
があります。これらのインターフェースはケーブルで直接接続されています。両方のマシンに静的ルートを追加すると、両方のマシン間でpingを実行できます。
bird.conf
に次のHost A
があります。
protocol kernel {
learn; # Learn all alien routes from the kernel
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}
protocol direct {
interface "enp0"
}
protocol rip MyRIP {
export all;
import all;
interface "enp0" { mode multicast;};
}
bird.conf
のHost B
は、enp0
がenp1
に置き換えられていることを除いて同じです。
両方のホストでbirdデーモンを起動した後、tcpdump -ni enp0 -vv
を実行できます。
13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132)
10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104
13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272)
10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244
birdcl
コマンドラインに飛び乗ってshow rip neighbors
を実行し、空のテーブルを取得できます。
アドレスを同じサブネット上に設定すると、show rip neighbors
を実行でき、ネイバーのリストに10.0.1.50
が表示されます。
リンクの両端が同じサブネット上にない場合、これらのルーターをネイバーとしてリストするにはどうすればよいですか?
ネットワークがどのように機能するかについて、ある種の誤ったイメージを持っている必要があります。ルーターは、常に同じサブネット上にないネイバーと通信する必要はありませんか?
私はBIRD固有の答えにこだわっていません。
TCP/IPよりも多くのプロトコルがネットワーク上にあった古代に、私はRIPを実行しました。当時はRIPv1で、ブロードキャストを使用していました。ネットワークトポロジは次のようになりました。
[10.0.0.0/24] <-- router --> [10.0.1.0/24] <-- router --> [10.0.2.0/24]
[10.0.3.0/24] <-- router ------^ ^---- router --> [10.0.4.0/24]
[10.0.5.0/24] <-- router -------^ ^----- router --> [10.0.6.0/24]
すべてのルーターが、ルーターのみが存在するサブネットを共有する場合。 2ルーターのセットアップの場合、あなたがしているように、それらの間に1本のケーブルが張られていました。大規模なセットアップの場合、サブネットを実行している高速ネットワークデバイスがあります(スイッチであることが望ましいですが、常にではありません)。そうすれば、すべてが2ホップ離れており、ルートの収束は簡単に進みました。それは私たちが当時持っていたものです。
次に、RIPv2とマルチキャストが登場し、ホップ数が多いほど収束の問題が発生しにくくなりました。マルチキャストTTLがホップの直径に対して+1に設定されている場合、各ルーターは他のすべてのルーターに直接アナウンスしていたため、収束が速くなりました。
ただし、考慮すべき重要な点は、TCPDUMP出力の送信元アドレスを確認することです。
10.1.1.25.520 > 224.0.0.9.7742
10.0.1.50.520 > 224.0.0.9.7742
ルーター10.0.1.50
は、10.1.1.25
のルーターのサブネットが10.1.1.0/24
ローカルであると通知されました。ただし、10.0.1.50
のルーターにはアドレス10.1.1.25
へのルートがないため、テーブルに追加されません。マルチキャストはアナウンスチャネルですが、ルーティングされたトラフィックを伝送することはできません。
すべてが失われるわけではありません。
何らかの理由で1本のケーブルに制限されている場合は、仮想インターフェイスを定義できます。ここで、enp0.0
は10.3.1.0/ 24にあり、enp0.1
は10.0.1.0/24にあります。そうすれば、10.3.1.0/24を「ルーティングネットワーク」として使用できます。