BGP -BGPの動作-


BGPの動作

BGPを使用したネットワークにおいてどのようなロジックで経路選択を行っているかを説明します。
今まで解説してきたようにBGP自体は非常に単純なプロトコルですが、それ故非常に柔軟な設定を行うことが可能です。

ここでBGPの基本動作についておさらいしましょう。

  • BGPルータのルート交換はBGPピア同士がUPDATEメッセージを送ることで行う。
  • 受け取ったUPDATEメッセージから、そのUPDATE情報に基づいたポリシーやフィルタリングを施し他のBGPピアへ送信する。
  • 通常BGPルータは同じ宛先への複数のルート情報を受け取った場合、すべてのルート情報を送るのではなく、最適なルート情報のみを送る。
  • BGPルータはBGPピアから学習したルート情報から最適なルート情報のみ自身のルーティングテーブルに取り込む。
  • BGPはAS_PATH属性内に自AS番号が存在すると(iBGPで学んだ経路は)、経路がループしていると判断し取り込まない。
  • BGPピアからもらったルート情報は、そのBGPピアには返さない。

AS20内のNetwork172.16.1.0/24に対してAS10内のルータRTBは、RTD経由とRTA経由から経路をもらいます。RTBは2つのルート情報を比較し最適なルート(この場合はRTDからのルート)を自身のルーティングテーブルに取り込みます。

RTDは自身の中で最適なルート情報のみをピアに送るためRTD経由のルート情報をRTAには送りません。

 

BGPのルート制御

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に伝搬しません。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: