図1 A社はイーサネット・ラインカードに不具合を起こした際に経路切り替えがうまくいかない障害に遭遇
WAN側のインタフェースは正常なため,プロバイダからはR1が動作しているように見える。このためA社の経路情報は広告され続ける。しかし,LAN側のイーサネット・インタフェースがダウンしているためWebサーバーにアクセスできない。ラインカードに障害が発生してしまうと,冗長化が効かなくなる。
図2 BGPの経路情報を広告するルーターを変更して耐障害性を向上
イーサネット・インタフェースがダウンすると,R3,R4からBGPを通じて経路情報を受け取れなくなる。このため,プロバイダX社のBGPルーターへの経路広告を取り消す。プロバイダX社のBGPルーターはインターネットからの通信に自社経由の経路が使われないよう経路情報を更新する。これによって,Webサーバーへのアクセスは復旧する。

経路広告が止まらない

 しかし,A社のWebサイトにアクセスができないというクレームは増えていった。慌てたA社の担当者が調査すると,障害発生前と全く同じ状況だった。本来,障害発生時には障害が発生した方の経路が取り消され,A社に到達できる経路情報はプロバイダY社経由からのみ広告されるべきなのに,経路情報は以前と同じく二つのプロバイダ経由で広告されていた。

 なぜ切り替わらないか原因が分からないものの,A社の担当者はどうにかして障害が起こった側のBGPルーターに通信を停止させるべきだと考えた。そこで応急処置として,プロバイダX社と接続しているBGPルータ-のATMインタフェースからケーブルを引き抜いた。

 するとBGPセッションがダウンし,経路情報の広告は強制的に停止した。しばらくすると,もう片方のBGPルーター経由に経路情報が更新され,プロバイダX社経由の経路情報は消えた。そしてA社のWebサイトはインターネットからアクセスできるようになり,クレームも急速に収まりだした。

経路オリジネート位置が障害に弱い

 A社の担当者が事後調査したところ,経路が更新されなかった原因は経路情報のオリジネート位置にあることが分かった(図1[拡大表示])。オリジネートとは,経路情報の発信元を指す。

 A社では,CEルーターで経路情報をオリジネートしていた。しかし,この構成では,WAN側インタフェースさえ無事ならばCEルーターはBGPで経路情報を広告し続けてしまう。

 実は今回のBGPルーターの障害原因は,BGPルーターがLANインタフェースに使うラインカード不良だった。BGPルーターは,WAN側に1ポートのATMインタフェース,LAN側に4ポートのイーサネット・インタフェースを装備していた。

 4ポートのイーサネット・インタフェースは,1枚のラインカードで接続している。このラインカードに不具合が発生したために,4ポートのイーサネット・インタフェースがすべてダウンしてしまった。

 WAN側から見ると経路が更新されないため,今回の障害のようにLAN側の回線がすべてつながらないケースであっても,BGPルーターはWANからパケットを受け取ってしまう。しかし,LANインタフェースは使えない。このため,BGPルーターはパケットをLAN側のサーバーに届けられず,破棄してしまう。

 そこで,A社の担当者は経路のオリジネート位置を変更した(図2[拡大表示])。具体的には,CEルーターよりもLAN側にあるBGPルーターで経路をオリジネートするようにした。こうするとCEルーターはLAN側に障害が発生すると,経路をオリジネートするBGPルーターから経路情報を受け取れなくなり,経路情報を更新するようになる。A社のネットワークは障害に強くなり,経路の安定性が増した。