🏡

FRR実践③ OSPFv2基本 DR BDR DROTHER 確認編

に公開

おさらい

https://zenn.dev/labathome/articles/846dcb352185a0
前回ネットワーク構成を作成しました。

本項ではDR/BDRの選出動作について確認していきます。

DR/BDRとは

DRは代表ルーターという呼びなでBDRはそのバックアップです。
OSPFはLSAと呼ばれる、各ルーターが持つ隣接ルーターの情報を交換しあい、LSDBというデータベースを構築することでどこにどのネットワークが存在するかを各ルーターで共有することで宛先にパケットを転送する仕組みなっています。
このLSAの交換を極小化する仕組みが備わっており、DROTHERはDR/BDRとだけLSAをやり取りすればLSDBが構築できる仕組みなっています。(DROTHER間ではLSA交換しなくてよい)

DR/BDRの選出

構成のポイントは以下のようにルーターIDとプライオリティの組み合わせが多少変則にしてあります。

ホスト名 RouterID Priority
Router_A 10.0.0.1 255
Router_B 10.0.0.2 255
Router_C 10.0.0.3 253
Router_D 10.0.0.4 254

これはOSPFのDR/DBRの選出が次のようなルールに基づくからです。
・プライオリティの一番高いルータがDRになる。
・ルータIDが一番大きいルーターがDRになる。
・次点のルーターがBDRになる。
・それ以外のルーターがDROTHERになる。

実機の動作を確認してみましょう。DR/BDRがどのルーターか確認するには
show ip ospf neighbor を実行します。

Router_A

Router_A# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.2        255 Full/DR         47m26s            38.787s 172.16.0.2      eth7:172.16.0.1                      0     0     0
10.0.0.3        253 Full/DROther    47m23s            31.387s 172.16.0.3      eth7:172.16.0.1                      0     0     0
10.0.0.4        254 Full/DROther    44m15s            33.603s 172.16.0.4      eth7:172.16.0.1                      0     0     0

Router_B

Router_B# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.1        255 Full/Backup     48m23s            35.044s 172.16.0.1      eth7:172.16.0.2                      0     0     0
10.0.0.3        253 Full/DROther    48m25s            34.407s 172.16.0.3      eth7:172.16.0.2                      0     0     0
10.0.0.4        254 Full/DROther    45m12s            36.624s 172.16.0.4      eth7:172.16.0.2                      0     0     0

Router_C

Router_C# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.1        255 Full/Backup     48m55s            30.315s 172.16.0.1      eth7:172.16.0.3                      0     0     0
10.0.0.2        255 Full/DR         49m00s            37.059s 172.16.0.2      eth7:172.16.0.3                      0     0     0
10.0.0.4        254 2-Way/DROther   45m38s            31.896s 172.16.0.4      eth7:172.16.0.3                      0     0     0

Router_D

Router_D# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.1        255 Full/Backup     46m10s            36.895s 172.16.0.1      eth7:172.16.0.4                      0     0     0
10.0.0.2        255 Full/DR         46m10s            33.637s 172.16.0.2      eth7:172.16.0.4                      0     0     0
10.0.0.3        253 2-Way/DROther   46m10s            36.277s 172.16.0.3      eth7:172.16.0.4                      0     0     0

4台のshow ip ospf neighborを確認するとRouter_BがDR、Router_AがBDRであることが分かると思います。
これは前述のプライオリティとルーターIDの組み合わせによるもので、Router_AとRouter_Bは同一プライオリティ(255)ですが、ルーターIDがRouter_Bのほうが大きいため、Router_BがDRに選出されています。次いでRouter_AがBDRになります。Router_CとRouter_Dはプライオリティが低いのでDROTHERになります。

DR/BDRの再選出

ではRouter_Bがいない場合はどのようになるでしょうか。以下のようにRouter_Bのケーブル結線を削除して確認してみましょう。

Router_A

Router_A# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.3        253 Full/DROther    57m05s            39.741s 172.16.0.3      eth7:172.16.0.1                      0     0     0
10.0.0.4        254 Full/Backup     53m57s            31.962s 172.16.0.4      eth7:172.16.0.1                      0     0     0

Router_C

Router_C# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.1        255 Full/DR         57m34s            31.434s 172.16.0.1      eth7:172.16.0.3                      0     0     0
10.0.0.4        254 Full/Backup     2m17s             33.020s 172.16.0.4      eth7:172.16.0.3                      0     0     0

Router_D

Router_D# show ip ospf neighbor

OSPF Instance: 1


Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL
10.0.0.1        255 Full/DR         54m45s            32.003s 172.16.0.1      eth7:172.16.0.4                      0     0     0
10.0.0.3        253 Full/DROther    2m36s             31.364s 172.16.0.3      eth7:172.16.0.4                      0     0     0

3台のshow ip ospf neighbor結果からRouter_AがDRに選出され、Router_DがBDRに昇格しました。
Router_Bが不在になったので元々次点にいたRouter_AがDRになります。
Router_CよりRouter_Dの方が、プライオリティもルーターIDも大きいためBDR昇格する動作となります。
このようにセグメント内で3台以上のルーターがいた場合には、DR/BDR/DROTHERが構成され、プライオリティとルーターIDにより関係性が構築されます。

Full/2Wayとは

show ip ospf neighborの表示に「Full/DROther」や「2-Way/DROther」と表示されるケースがあります。これはDR/BDRとDROTHERとの間はFull、DROTHER間は2-Wayとなります。つまりLSAの交換がされているルーター間はFull、DROTHER間は2-Wayとなります。

Discussion