BGP remove-private-as

問題意識

以前勉強した記事を見返したが、どのタイミングでremoveされるかがわからない

構成図

RT1(AS100)——–RT2(AS200)——-RT3(AS65003)

  • それぞれのLoopbackをBGPで広報
  • それ以外は最低限の設定のみ

実践(show ip bgp)

1)初期状態

  • RT1は、RT3の経路を「Path: 0 200 65003 i」で保持している

2)RT3(private-as)側で、RT2向きneighborにremoveを設定

  • 初期状態から変化なし(出力は省略)
  • つまり、自発経路についてはremoveできない

3)RT2(受信)側で、RT3向けにremoveを設定

  • 初期状態から変化なし(出力は省略)
  • つまり、受信時にPathからprivate-asを削除するわけでもない

4)RT2(受信側)で、RT1向けにremoveを設定

  • RT1は、RT3の経路を「Path: 0 200 i」で保持している(RT2・3は変化なしなので省略)

ここまでの結論

  • remove-private-asは、ピアへ広報する際にprivate-asを削除する設定。
  • private-as内の自発経路のPATHから削除されることもなければ、受信時に削除されるわけでもない。

ドキュメントを読んでみる

参考:Removing Private Autonomous System Numbers in BGP

  • 例えばISPに接続する場合を想定する
  • 顧客網内ではprivate-asを使って運用していると、設定によってはprivate-asのパス情報がISPに流れちゃう
  • ISPでは当然、様々な事業者との接続を行っているので、顧客が自由に設定しているprivate-asが流れてくると、適切な経路が選択されない可能性が出てくる
  • そのため、private-asの運用を、あくまで顧客網内で完結させ、ISP側にはリークしないようにするためにremove-private-asがある
  • 検証したことも書かれてあった
    “When the outbound update contains a sequence of private AS numbers, this sequence is dropped.”

新たな不明点の出現

  • 上記ドキュメント内の、これはどういうこと?
    “If the AS_PATH includes both private and public AS numbers, BGP doesn’t remove the private AS numbers. This situation is considered a configuration error.”

新・構成図

RT1(AS100)——–RT2(AS200)——-RT3(AS65003)——-RT4(AS400)

  • それぞれのLoopbackをBGPで広報
  • それ以外は最低限の設定のみ

新・実践(show ip bgp)

Before(remove設定前)

  • RT1は、RT3の経路を「Path: 0 200 65003 i」で保持している
  • RT1は、RT4の経路を「Path: 0 200 65003 400 i」で保持している

After(removeをRT2のRT1neighbor向きに設定)

  • RT1は、RT3の経路を「Path: 0 200 i」で保持している(private-asの消滅)
  • RT1は、RT4の経路を「Path: 0 200 65003 400 i」で保持している(private-asが消えていない)

新・結論

  • ドキュメントは正しい
  • パブリックASを含むパス属性を持つ経路では、プライベートASが削除されない