本連載では、シスコシステムズ(以下、シスコ)が提供するシスコ技術者認定(Cisco Career Certification)から、ネットワーク技術者を認定する資格、CCNP(Cisco Certified Network Professional)のうち、【642-902 ROUTE】を解説します。
第8回でBGPのアトリビュートについて学習をしました。パスアトリビュートは最適経路を判断するための値で、IGPsのメトリックに相当するものでした。今回は複数のアトリビュートの中から特に重要なアトリビュートの設定方法について学習しましょう。
NEXT−HOP、LOCAL_PREFERENCE、MEDアトリビュートの設定方法について説明します。
●NEXT_HOP(wellknown- mandatory)
BGPがアドバタイズするアップデートの中には、ネットワークアドレス、サブネットマスク、さまざまなアトリビュートが含まれますが、ネクストホップもアトリビュートの1つです。OSPFやEIGRPのようなIGPsのネクストホップは宛先ネットワークへパケットを到達するための「次のルータ」という考え方でした。
BGPのネクストホップは「次のルータ」ではなく、「次のASに到達するIPアドレス」を意味します。EBGPネイバーにアップデートを送信する時に自分のIPアドレスをネクストホップとして付加し送信します。
しかしIBGPネイバーに送信するときは、デフォルトではネクストホップを変更せずに送ります。そうなるとネクストホップの到達性の問題点がでてきます。しかしこの問題点はnext-hop-selfコマンドを入力することで解決できます。流れは次の通りです。
next-hop-self設定前の状態をみると、ルータAからEBGPネイバーであるルータB宛にBGPアップデートを送信しています。このときのネクストホップアドレスはルータAのIPアドレスである172.16.1.1になっています(【1】)。
ルータBがアップデートを受信すると、IBGPネイバーであるルータCへアップデートを送信します。このとき。ネクストホップアドレスは変更せずに送信します(【2】)。
ルータCはルーティングテーブルにBGPルートを学習していますが、10.10.10.0/24宛へパケットを送信するためには、ネクストホップである172.16.1.1に到達できなければなりません。ルータCはネクストホップへ到達できないため、たとえパケットが届いても破棄されてしまいます。
パケットを送信するためには、ネクストホップへの到達性が必要です。しかし、ルータA?B間のリンクは異なるAS間のリンクのため、どちらの管理下にも置かれません。そのため、直結しているルータのみ保持するのが一般的です。そのようなときは、ルータBにnext-hop-selfコマンドを入力することでルータBがルータCにアップデートを送信するときにネクストホップをルータBのアドレスに変更して送信できます。
なお、next-hop-selfコマンドはASの境界ルータで設定します。このように設定することでルータCは10.10.10.0/24宛のパケットはルータBに送信し、ルータBはネクストホップである172.16.1.1経由でパケットを送信できます。next-hop-self以外にルータCにスタティックルートを書いても問題は解決できます。
<設定コマンド>
方法【1】:next-hop-selfをルータBで設定
(config)#router bgp 65002 (config-router)#neighbor ネイバーのIPアドレス next-hop-self (ルータCのIPアドレス)
<設定コマンド>
方法【2】:スタティックルートをルータCで設定(グローバルコンフィグレーションモード)
(config)#ip route 172.16.1.1 255.255.255.255 ネクストホップ (ルータBのIPアドレス)
●LOCAL_PREFERENCE(wellknown-discretionary)
自ASから他ASにパケットをルーティングするとき、自ASのどの出口ポイントを使用するかを指定できます。値が大きい方が優先されます(デフォルト値は100)。AS内のみで有効な値であるため、次のASにアドバタイズする時に値は削除されます。また値が大きい方が優先されます。
AS65004が自ASになっています。AS65001からBGPアップデートが送信されています(【1】)。自AS内のルータであるAとBはEBGPネイバーからアップデートを受信した時にLOCAL_PREFERENCEの値を設定します(【2】)。それをIBGPネイバーであるルータCに送信します(【3】)。
ルータCは値を見て大きい方が優先と判断し、ルータB経由のルートをベストパスに選定しています(【4】)。10.10.10.0/24宛のユーザーパケットがルータCに届くとルータB経由で送信されます(【5】)。)
このように、ルーティングアップデートの向きとユーザーパケットの向きは別であること理解してください。
<設定コマンド【1】ルートを指定するためのアクセスリストを設定>
(config)#access-list 1 permit 10.10.10.0 0.0.0.255 (LPを設定したい特定のルート)
<LOCAL_PREFERENCE設定コマンド【2】ルートマップを作成>
(config)#route-map LP permit 10 match ip address 1(ACL 1にマッチするルート) set local-preference 200(300) route-map LP permit 20
※route-mapには暗黙のdeny anyがあるため空のpermit文がないとACL1にマッチするルート以外受信できなくなってしまうため必要です(ルートマップについては「第6回 ポリシーベースルーティングとは」を参照してください)。
<LOCAL_PREFERENCE設定コマンド【3】BGPネイバーと関連付け>
(connfig)#router bgp 65004 (config-router)#neighbor ネイバーのIPアドレス route-map LP in (ルータAまたはBから見てEBGPネイバーのIPアドレス) (作成したルートマップ名)
このように設定すると、ルータAとBがEBGPネイバーからアップデートを受信したときにACL1にマッチするルート(10.10.10.10/24)に対してLP200(300)を設定、その他のルートはデフォルトのLPのままIBGPネイバーであるルータCにアップデートを送信します。inバウンドで設定することによりAS内で一貫した値が保持されます。
LOCAL_PREFERENCEについて正しい説明を、次の選択肢の中から2つ選択しなさい。
a.値が大きい方が優先される
b.分類はoptional-nontransitiveである
c.EGBPネイバーに対してinバウンドで設定する
d.EGBPネイバーに対してoutバウンドで設定する
a・c
正解はa・cです。LOCAL_PREFERENCEは値が大きい方が優先されます。分類はwellknown-discretionaryです。一貫した値で設定するには、EBGPネイバーからBGPアップデートを受信した時に値を設定し、それをIBGPネイバーに送信するためinバウンドで設定する必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.