BGPを使用したネットワークにおいてどのようなロジックで経路選択を行っているかを説明します。
今まで解説してきたようにBGP自体は非常に単純なプロトコルですが、それ故非常に柔軟な設定を行うことが可能です。
ここでBGPの基本動作についておさらいしましょう。
AS20内のNetwork172.16.1.0/24に対してAS10内のルータRTBは、RTD経由とRTA経由から経路をもらいます。RTBは2つのルート情報を比較し最適なルート(この場合はRTDからのルート)を自身のルーティングテーブルに取り込みます。
RTDは自身の中で最適なルート情報のみをピアに送るためRTD経由のルート情報をRTAには送りません。
BGPは様々なパスアトリビュートやルートマップを使用してルーティングを思い通りに制御することができます。
経路フィルタリング
特定のネットワークのみを取り込みたいときや、一部のネットワークを広告したくない場合などに使用する。フィルタリングの方法として以下のような方法がある。
1.PREFIXフィルタ
PREFIX長をもとにフィルタリングを行う方法。
上図のようにAS20内のネットワーク172.16.1.0/24をRTAへ伝搬させたいが、AS10からAS30へは伝搬させたくないといったとき、RTBにてPrefixListをしようしてフィルタリングを行います。
router bgp 10
no synchronization
neighbor 10.1.1.1 remote-as 10
neighbor 192.168.1.1 remote-as 30
neighbor 192.168.1.1 prefix-list 1 out
ip prefix-list 1 seq 5 deny 172.16.1.0/24
ip prefix-list 1 seq 10 permit 0.0.0.0/0 le 32
以上のようにrouter bgpコマンド内の
neighbor ip-address prefix-list list-name in|out
で定義し、フィルタリングは
ip prefix-list list-name permit|deny ip-address/prefix [ge-value] [le-value]
で定義します。
また、PrefixListは通常のAccess-listと同様にリストの最後には暗黙のDenyがあるためすべてのアップデートを許可する設定を入れています。最後のle 32は0.0.0.0/0にたいしPrefix長32ビット以上(longer equal)、つまりすべてのネットワークを表します。
2.ASパスフィルタ
ASパスフィルタは文字通りASパス情報に基づきフィルタリングを行います。
上図でAS20から生成された情報をAS30に送信しないようにするには、RTBにてASパスフィルタリングを行います。
router bgp 10
no synchronization
neighbor 10.1.1.1 remote-as 10
neighbor 192.168.1.1 remote-as 30
neighbor 192.168.1.1 filter-list 1 out
ip as-path access-list 1 deny ^20$
ip as-path access-list 1 permit .*
以下のようにrouter bgpコマンド内の
neighbor ip-address filter-list list-name in|out
で定義し、フィルタリングは
ip as-path access-list list-name permit|deny as-regular-expression neighborip-address|peer-group-name filter-list access-list-number in|out
で定義します。
上記の例では、20 で始まり(^)、20 で終わる($)パス情報を含む更新をすべて拒否することを示しています。^20$ のような表記は正規表現と呼ばれ、^ は「で始まる」、$ は「で終わる」を意味します。
3.Communityフィルタ
経路情報にあるCommunity属性に基づきフィルタリングを行います。
Communityフィルタについても、上図構成でAS20内で生成された172.16.1.0/24をAS30に送信しないようにするための設定を解説します。
そのためにはRTCにてコミュニティアトリビュートを設定します。
router bgp 20
no synchronization
neighbor 10.100.1.1 remote-as 10
neighbor 10.100.1.1 send-community
neighbor 10.100.1.1 route-map setcommunity out
route-map setcommunity
match ip address 1
set community no-export
access-list 1 permit 0.0.0.0 255.255.255.255
router bgpコマンド内でroute-map setcommunityコマンドでrouter mapを定義し、コミュニティno-exportを設定しています。
コミュニティアトリビュート no-export を含む更新を受信したRTAは、その更新を外部ピアのRTDに伝搬しません。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓