エニーキャストOSPFルーティングBIND冗長セットアップをQuaggaからBIRDに移行しています。
私の難しさの1つは、quaggaで行っているのと同じように、BIRDでコストの異なる複数のルートを取得することです。
Quaggaのように、私は/etc/quagga/ospfd.conf
でやっています。
interface dummy0
ip ospf cost 100
!
interface dummy1
ip ospf cost 500
!
interface dummy2
ip ospf cost 1000
!
interface dummy3
ip ospf cost 900
!
コマンドshow ospf state
を使用してbirdc
で、/etc/bird.conf
のインターフェイスでコストを定義したにもかかわらず、構成が重みを与えていないことがわかります。何をすべきか?
protocol ospf {
tick 2;
rfc1583compat yes;
area 0.0.0.0 {
networks {
1.1.1.0/22;
2.2.2.2/32;
3.3.3.3/32;
4.4.4.4/32;
5.5.5.5/32;
};
interface "eth0" {
cost 1000;
password "xxxxxxxxxx" {
id 5;
};
authentication cryptographic;
};
interface "dummy0" {
stub;
cost 100;
};
interface "dummy1" {
stub;
cost 500;
};
interface "dummy2" {
stub;
cost 1000;
};
interface "dummy3" {
stub;
cost 900;
};
};
}
結局、BIRDの用語でstubnet
を参照していたshow ospf state
の出力から学習し、あいまいな質問とBIRDの文法定義で正しい構文と場所を見つけました。
したがって、最後に、この場合にOSPFによってアナウンスされた特定のルートにコストを与えるための構成は、次のように、OSPFエリア定義でネットワークをアナウンスするスタブネットを定義して行われます。
protocol ospf {
tick 2;
rfc1583compat yes;
area 0.0.0.0 {
#stub;
networks {
1.1.1.0/22;
};
stubnet 2.2.2.2/32 {
cost 100;
};
stubnet 3.3.3.3/32 {
cost 500;
};
stubnet 4.4.4.4/32 {
cost 1000;
};
stubnet 5.5.5.5/32 {
cost 900;
};
interface "eth0" {
cost 1000;
password "xxxxxxxxxxxxxxxxxxxx" {
id 5;
};
authentication cryptographic;
};
interface "dummy0" {
stub;
};
interface "dummy1" {
stub;
};
interface "dummy2" {
stub;
};
interface "dummy3" {
stub;
};
};
}
birdc
を使用するとわかるように、次のように機能しました。
dns:/etc/bird# birdc
BIRD 1.6.3 ready.
bird> show ospf state
bird>
area 0.0.0.0
.....................
router 1.1.1.1
distance 1000
network 1.1.1.0/22 metric 1000
stubnet 4.4.4.4/32 metric 1000
stubnet 5.5.5.5/32 metric 900
stubnet 3.3.3.3/32 metric 500
stubnet 2.2.2.2/32 metric 100
.................
dns:/etc/bird# exit