baron tech blog

学びをアウトプットしていきたいです

BGP in the Data Centerを読みました (3/6) : Chapter 3 - Building an Automatable BGP Configuration

cumulusnetworks.com

今回は3章についてまとめました。 内容はIP ClosネットワークにおけるeBGP設定の自動化です。

データセンタネットワーク全般については、”Cloud-Native Data Center Networking” を読むのがおすすめです。 筆者が同じ方で、 "BGP in the Data Center" に記載されている内容も含まれています。 この本はCumulus Networksにより無償で公開されています。 ぜひ読んでみてください。

各Chapterまとめ

2章ではDC内に適したeBGP設定について見ていきました。 実環境では、その設定作業の効率化のために自動化する必要があります。 3章では、Ansible等のツールで自動化しやすいBGP設定について見ていきます。

3章はIPv4でのClosネットワーク構築を前提にしています。設定するルーティングスイートはFRRoutingです。 RFC 5549のextended nexthop等については4章で触れます。

Chapter 3 - Building an Automatable BGP Configuration

設定自動化の指針

1. パターンの発見

自動化するには、まずパターンを見つける必要があります。 パターンが見つからない場合はそもそも自動化が困難です。

2. パターン内の重複を排除

パターンを見つけるだけでは自動化はできません。 設定パターンの中に重複がある場合、重複箇所全てで変更が必要になってしまいます。 安全に変更できるように、重複を排除する必要があります。

DC内IP ClosネットワークのeBGP設定の自動化

図のような2層IP Closネットワークトポロジにおける設定自動化について見ていきます。

f:id:foobaron:20190817144348p:plain
2層IP Closネットワークトポロジの例

本記事では、ESXi 6.7上のCumulusVX 3.7.7で試しました。 試した環境でのノードのインタフェース名は、leafでは左からswp3, swp4、spineでは左からswp1, swp2, swp3, swp4です(Cumulusで使われるインタフェース名の命名規則がswpXです。swpはswitch portの略らしいです)。

leafは、配下に図のIPプレフィックスを持つサーバが接続されているものとします。 今回はサーバは用意せず、leafのVLANインタフェースにIPプレフィックスを割り当てるのみとしました。 NCLUにより、 各leaf0X (X = 1, 2, 3, 4) にVLANインタフェース (VLAN ID = X * 10) とIPプレフィックス 10.1.X.1/26 を割り当てました。

# leaf01のVLANインタフェース設定

cumulus@dc-leaf01:~$ net add vlan 10 ip address 10.1.1.1/26

cumulus@dc-leaf01:~# cat /etc/network/interfaces

auto bridge
iface bridge
    bridge-vids 10
    bridge-vlan-aware yes

auto vlan10
iface vlan10
    address 10.1.1.1/26
    vlan-id 10
    vlan-raw-device bridge

まずは従来どおりにeBGPを設定してみて、そこから自動化用の設定を探ります。

従来どおりにeBGPを設定

先ほどのネットワークトポロジにおけるleaf01とleaf02のBGP設定を、横に並べて比較すると次のとおりです。

f:id:foobaron:20190817151322p:plain
leaf01とleaf02のBGP設定

次の4項目以外はleaf01とleaf02の設定が同じです。

なお、BGPの各設定項目の説明は次のとおりです。

# leaf01の設定 (/etc/frr/frr.confより抜粋)

frr defaults datacenter # DC用の設定がデフォルトで有効化
hostname dc-leaf01 # ホスト名

router bgp 4200000001 # 自身のASNを指定 (4-byte ASN)
 bgp router-id 10.0.254.1 # BGPノードを識別する一意のID
 no bgp default ipv4-unicast # BGPの接続状態に変化があればログ出力
 bgp bestpath as-path multipath-relax #  異なるASNリストを持つAS_PATHでマルチパスを有効化
 neighbor ISL peer-group # BGP設定でISLというテンプレートを作成
 neighbor ISL bfd # ISLテンプレートでBFDを有効化
 neighbor ISL timers connect 5 # ISLテンプレートでconnect timerを5秒に設定
 neighbor 169.254.1.0 remote-as 4200000000 # BGPセッションを確立したいIPアドレスとASNを指定 (この場合はspine01)
 neighbor 169.254.1.0 peer-group ISL # ネイバーにISLテンプレートを適用
 neighbor 169.254.1.0 remote-as 4200000000 # BGPセッションを確立したいIPアドレスとASNを指定 (この場合はspine02)
 neighbor 169.254.2.0 peer-group ISL # ネイバーにISLテンプレートを適用
 !
 address-family ipv4 unicast # BGPがマルチプロトコル対応のため、利用するアドレスファミリを指定
  network 10.0.254.1/32 # アドバタイズするIPプレフィックスを指定 (この場合は自身のloopback IPアドレス)
  network 10.1.1.0/26 # アドバタイズするIPアドレスを指定 (この場合は配下のサーバのIPプレフィックス)
  neighbor ISL activate # アドバタイズすることを明示的に設定する必要がある
  maximum-paths 64 # 可能であればIPプレフィックスに対して複数のパスを利用
 exit-address-family # 利用するアドレスファミリに関する設定ブロックを終了
!

FRRoutingではfrr defaults datacenter によってDC向けのデフォルト値が設定されていますconnect timerのデフォルト値は10秒ですが、 今回は5秒に上書きしました。 leaf01 で明示的に設定しなかった項目は次のとおりです。

# FRRoutingのDC向けデフォルト値設定

 bgp log-neighbor-changes # BGPのネイバーの状態変化をログに出力
 timers bgp 3 9 # keepalive timerを3秒, holdtimerを9秒に設定
 neighbor ISL advertisement-interval 0 # ネイバーのadvertisement intervalを0秒に設定

重複の排除

コーディングでコードの重複を避けることは、DRY原則 (Don't repeat yourself) として知られています。 同じ情報がコードの複数箇所にある場合、1つの変更が複数箇所に波及してしまいます。 変更に手間がかかるだけでなく、変更漏れが発生する恐れもあります。

BGPのconfigについても、同じことが言えます。

ネイバーで共通の設定は、 neighbor ISL peer-group でISLテンプレートにまとめることで重複を排除しています。 また、 FRRoutingのDC向けのデフォルト値についても設定を省略しています。 仮に peer-group およびFRRoutingのデフォルト値を利用しない場合、設定行数は多くなります。

# leaf01のBGP設定においてpeer-groupおよびデフォルト値を使用しない場合

router bgp 4210000001
 bgp router-id 10.0.254.1
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 bgp bestpath as-path multipath-relax
 timers bgp 3 9
 neighbor 169.254.1.0 advertisement-interval 0
 neighbor 169.254.2.0 advertisement-interval 0
 neighbor 169.254.1.0 bfd
 neighbor 169.254.2.0 bfd
 neighbor 169.254.1.0 timers connect 5
 neighbor 169.254.2.0 timers connect 5
 neighbor 169.254.1.0 remote-as 4200000000
 neighbor 169.254.2.0 remote-as 4200000000
 !
 address-family ipv4 unicast
  network 10.0.254.1/32
  network 10.1.1.0/26
  neighbor 169.254.1.0 activate
  neighbor 169.254.2.0 activate
  maximum-paths 64
 exit-address-family
!

先ほど示したleafおよびspineのBGP設定では、 bgp router-id X.X.X.Xnetwork X.X.X.X/32/32 の有無の違いはあるものの重複しています。

# leaf01のBGP設定からrouter-idとnetworkを抜粋

router bgp 4200000001
 bgp router-id 10.0.254.1 # 10.0.254.1
 !
 address-family ipv4 unicast
  network 10.0.254.1/32  # 10.0.254.1
    network 10.1.1.0/26
 exit-address-family
!

また、network ステートメントでは、自身のloopback IPアドレスおよび、leafの配下にある /26プレフィックスをアドバタイズするよう指定しています。 VLANにより配下のサーバのプレフィックスが複数存在する場合、 それらを個々に設定する必要があります。

なお、リンク間の 169.254.0.0/16 はDCネットワーク全体では不要なためアドバタイズしません。 これにより、BGPメッセージやルーティングテーブルのオーバヘッドを削減できます。

spineのBGP設定も、leafとほぼ同様です。 spineの場合は、2章で触れたpath hunting防止のために同じASNを割り当てています。 また、自身のloopback IPアドレスのみをアドバタイズします。

f:id:foobaron:20190817151416p:plain
spine01とspine02のBGP設定

設定したeBGPの状態をspine01で確認しておきます。 leaf01からleaf04とBGPセッションを確立し、IPプレフィックスを2つ学習しています。

cumulus@dc-spine01:~$ net show bgp ipv4 unicast summary
BGP router identifier 10.0.254.254, local AS number 4200000000 vrf-id 0
BGP table version 25
RIB entries 17, using 2584 bytes of memory
Peers 4, using 77 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor               V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
dc-leaf01(169.254.1.1) 4 4210000001     720     714        0    0    0 00:34:46            2
dc-leaf02(169.254.1.3) 4 4210000002     720     714        0    0    0 00:34:46            2
dc-leaf03(169.254.1.5) 4 4210000003     720     714        0    0    0 00:34:46            2
dc-leaf04(169.254.1.7) 4 4210000004     720     714        0    0    0 00:34:46            2

Total number of neighbors 4
cumulus@dc-spine01:~$ net show route bgp
RIB entry for bgp
=================
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR,
       > - selected route, * - FIB route

B>* 10.0.254.1/32 [20/0] via 169.254.1.1, swp1, 00:39:04
B>* 10.0.254.2/32 [20/0] via 169.254.1.3, swp2, 00:39:04
B>* 10.0.254.3/32 [20/0] via 169.254.1.5, swp3, 00:39:04
B>* 10.0.254.4/32 [20/0] via 169.254.1.7, swp4, 00:39:03
B>* 10.1.1.0/26 [20/0] via 169.254.1.1, swp1, 00:39:04
B>* 10.1.2.0/26 [20/0] via 169.254.1.3, swp2, 00:39:04
B>* 10.1.3.0/26 [20/0] via 169.254.1.5, swp3, 00:39:04
B>* 10.1.4.0/26 [20/0] via 169.254.1.7, swp4, 00:39:03
cumulus@dc-spine01:~$ net show bgp neighbor 169.254.1.1 routes
BGP table version is 25, local router ID is 10.0.254.254
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.0.254.1/32    169.254.1.1              0             0 4210000001 i
*> 10.1.1.0/26      169.254.1.1              0             0 4210000001 i

Displayed  2 routes and 9 total paths

ここからは、自動化を想定したBGPの設定について見ていきます。

自動化を想定したBGPの設定

Redistribute Routes

全てのルーティングプロトコルには、あるプロトコルから学習したプレフィックスを再配布するオプションが用意されています。 このオプションを用いて、BGPの network ステートメントでのプレフィックス指定を排除します。

FRRoutingやCisco、Arista等の多くのルーティングスイートでは、 redistribute で設定します。 Junosの場合には policy-options policy-statement を使います。

redistribute PROTOCOL route-map ROUTE-MAP-NAME

FRRoutingの場合、PROTOCOLには次の内容を指定します。

protocol 経路の内容
static スタティックに設定した経路
connected インタフェースのIPプレフィックスに関連する経路
kernel Linux kernelに設定された経路 (zebraを介さずnetlinkで設定)
ospf OSPFで学習した経路
bgp BGPで学習した経路
rip RIPで学習した経路

OSPFで学習した経路をBGPで再配布するなど、 redistirbute はDC内のeBGP以外でも使われているオプションです。

leaf配下のサーバのIPプレフィックスおよび自身のloopback IPアドレスへの経路は、connected routeに該当します。 そのため、IPプレフィックスごとに書いていた network ステートメントを、単一の redistribute connected に置き換えることができます。 redistribute を使うと、leaf01の設定は次のようになります。

frr defaults datacenter
!
router bgp 4200000001
 bgp router-id 10.0.254.1
 no bgp default ipv4-unicast
 bgp bestpath as-path multipath-relax
 neighbor ISL peer-group
 neighbor ISL remote-as external
 neighbor ISL bfd
 neighbor ISL timers connect 5
 neighbor 169.254.1.0 remote-as 4200000000
 neighbor 169.254.2.0 remote-as 4200000000
 !
 address-family ipv4 unicast
  neighbor ISL activate
  redistribute connected # network指定をredistributeに置換
  maximum-paths 64
 exit-address-family
!

redistribute では、インタフェースに誤設定してしまったIPアドレスをアドバタイズしてしまう懸念があります。 この問題を回避するために、ルーティングポリシーを指定します。

Routing Policy ( route-map )

ルーティングポリシーはif-then-elseの構文で構成されます。 マッチの条件と条件に一致したときのアクションからなります。 ルーティングポリシーのシンプルな使い方が、経路のacceptとrejectです。 それ以外にも複雑な使い方として、BGPのMED等のメトリックやcommunityの変更等ができます。

ルーティングポリシーは次のような経路に適用できます。

  • ピアからアドバタイズされた経路
  • ピアにアドバタイズした経路
  • redistribute で再配布された経路

また、ルーティングポリシーの記述方法は2種類あります。安全なのは前者です。

  • 明示的にacceptするものを書き、それ以外をrejectする (安全な書き方)
  • 明示的にrejectするものを書き、それ以外をacceptする

connected routeが再配布される (redistribute connected ) 設定で実施すべきポリシーは、 「DC内ネットワークに属する経路をacceptして、それ以外をrejectする」ことです。 先ほどのネットワークにおいて使われているIPプレフィックスは次の3種類です。

  • サーバが収容されるサブネット: 10.1.0.0/16 から /26 以上が払い出されている
  • ルータのループバックIPアドレス: 10.0.254.0/24 から各ルータに /32 が払い出されている
  • インタフェース間のリンクローカルIPアドレス: 169.254.0.0/16 から各リンクに /31 が払い出されている

このうち、インタフェース間のリンクローカルIPアドレスは広報する必要がないのでrejectします。 これにより、Forwarding Information Base (FIB) のサイズを削減することができます。 ルーティングポリシーの擬似コードは次のとおりです。

if (prefix equals 10.1.0.0/16 and address mask is greater than equal to 26) then accept
else if (prefix belongs to 10.0.254.0/24 and address mask equals to 32) then accept
else reject

このルーティングポリシーですが、多くのルーティングスイートでは route-map で設定します。 Junosの場合には policy-options policy-statementを使います。 BIRDの場合には固有のプログラミング言語を使います

構文は次のとおりです。

route-map ROUTE-MAP-NAME (permit | deny) [SEQUENCE-NUMBER]
  match CLASSIFIER
  set ACTION
  • [sequence_number]: route-mapで実行される句の順序を決定
  • (permit | deny)
    • permit: classifierにmatchしたときにset ACTIONを実行
    • deny: classifierにmatchしないときにset ACTIONを実行

route-mapを定義する前にまずは一致の条件を決めるclassifierを定義する必要があります。 FRRoutingでは次のようなclassifierが使えます (一部のみ抜粋) 。

classifier matchさせる内容
as-path BGPのAS_PATH
community BGPのcommunity attribute
interface インタフェース名
ip , ipv6 IPアドレス, ネクストホップ, 送信元等のIP情報
peer BGPセッションのピア情報。ピアのインタフェース名やIPアドレス

ここまで見てきたDC内のプレフィックスを、 DC_LOCAL_SUBNET という名前のclassifierで定義します。

ip prefix-list DC_LOCAL_SUBNET seq 5 permit 10.1.0.0/16 ge 26
ip prefix-list DC_LOCAL_SUBNET seq 10 permit 10.0.254.0/24 ge 32

seq <number> はmatchの順序を決めるために使用します。 今回は特に必要ありませんが、今後間にclassifierの設定を追加できるように、順序を表す seq <number> は間隔を5空けて設定しました。

ge は "greater than or equal to" = 「以上」です。 サーバのプレフィックス/26 以上、loopback IPアドレス/32 以上つまり /32プレフィックス長に対する一致として機能します。

このclassifierを用いてroute-mapを定義します。 route-map ACCEPT_DC_LOCAL は次のとおりです。 classifierでの一致に対して permit を設定しています。 なお今回は permit 以外に実行すべき内容がないため、 set ACTION は書きません。

route-map ACCEPT_DC_LOCAL permit 10
    match ip address prefix-list DC_LOCAL_SUBNET

設定した route-mapredistribute connected に適用するには次のように書きます。

redistribute connected route-map ACCEPT_DC_LOCAL

先ほどのclassifierの表に記載したとおり、route-mapのclassifierにはIPプレフィックスの代わりにインタフェース名を指定することもできます。

# ループバックインタフェース lo のIPプレフィックスをアドバタイズ

route-map ADV_LO permit 10
    match interface lo

redistribute connected route-map ADV_LO

このように書くと、IPアドレスを変更してもBGP設定を変更する必要がありません。 なお、誤ったIPアドレスをインタフェースに設定してもアドバタイズされてしまう点については注意が必要です。

また、一般的なルーティングスイートでは、route-mapで swp1 - swp49 (swp1からswp49までの全インタフェース) のような構文が使えません。 ルータの多数のインタフェースがサーバと接続されていても、収容するサブネットの数が少ないなら、IPプレフィックスを指定した方が設定が短くなります。

インタフェース名でネイバーを指定

ここまで見てきたBGP設定では、ネイバーの指定にIPアドレスとASNを使っていました。

 neighbor 169.254.1.0 remote-as 4200000000
 neighbor 169.254.1.0 peer-group ISL

インタフェースに /31/30 のIPプレフィックスを使用する場合、ピアのIPアドレスは明示しなくても特定できます。

  • 例1) リンクで 169.254.1.0/31 を使用
    • IPアドレス169.254.1.0169.254.1.12つのみ
    • 一方のインタフェースが 169.254.1.0 の場合、もう一方のインタフェースは 169.254.1.1 に決まる
  • 例2) リンクで 169.254.1.0/30 を使用 ( RFC 3021に対応していれば /31 の方がIPアドレス空間の利用効率がよい)
    • ネットワークアドレス 169.254.1.0 とブロードキャストアドレス 169.254.1.3 は使用しない
    • IPアドレス169.254.1.2169.254.1.32つのみ

FRRoutingでは、このトリックを使い neighbor ステートメントでインタフェース名が指定できます。 なお、インタフェースのIPv4アドレスが /30/31 でない場合BGPセッションは確立できません。

ネイバーのIPアドレスの次に、ASNについても見ていきます。 ASNの指定は、次のような意味があります。

  • (1) eBGPかiBGPであることの検出
  • (2) 異なる管理ドメイン間の接続であることを明示

(1) については、eBGPであることを明示的に指定できるため不要です。 (2) については、異なる管理ドメイン間の接続では必要でした。しかし、DC内ネットワークは単一の管理ドメインのため不要です。

IPアドレスとASNの代わりにインタフェース名を使用すると、BGPのネイバー設定は

  neighbor 169.254.1.0 remote-as 4200000000 # 自身のASNと異なるASNをピアに指定することで間接的にeBGPを指定 (BGP OPENメッセージでeBGPであることを識別)
  neighbor 169.254.1.0 peer-group ISL

から

  neighbor ISL remote-as external # ASNの代わりにeBGPであることを明示的に指定
  neighbor swp3 peer-group ISL

に変わります。

ネイバーをインタフェース名で指定することで、設定の重複を削減できます。 また、設定がシンプルになるため、自動化用のコードのロジックからエラーの発生要因を減らせます。 また、IPアドレスとASNをBGP設定から隠蔽することで、他のPodや他のDC等でも自動化用のコードが再利用できます。

Chapter 3の最終的なBGP設定

これまでの変更を反映した、最終的なleaf01とspine01のBGP設定は次のとおりです。 leafとspineのBGP設定はほぼ同じになっています。

# leaf01

frr defaults datacenter
hostname dc-leaf01
!
router bgp 4210000001
 bgp router-id 10.0.254.1
 no bgp default ipv4-unicast
 bgp bestpath as-path multipath-relax
 neighbor ISL peer-group
 neighbor ISL remote-as external
 neighbor ISL bfd
 neighbor ISL timers connect 5
 neighbor swp3 interface peer-group ISL
 neighbor swp4 interface peer-group ISL
 !
 address-family ipv4 unicast
  redistribute connected route-map ACCEPT_DC_LOCAL
  neighbor ISL activate
  maximum-paths 64
 exit-address-family
!
ip prefix-list DC_LOCAL_SUBNET seq 5 permit 10.1.0.0/16 ge 26
ip prefix-list DC_LOCAL_SUBNET seq 10 permit 10.0.254.0/24 ge 32
!
route-map ACCEPT_DC_LOCAL permit 10
 match ip address prefix-list DC_LOCAL_SUBNET
!
# spine01

frr defaults datacenter
hostname dc-spine01
!
router bgp 4200000000
 bgp router-id 10.0.254.254
 no bgp default ipv4-unicast
 bgp bestpath as-path multipath-relax
 neighbor ISL peer-group
 neighbor ISL remote-as external
 neighbor ISL bfd
 neighbor ISL timers connect 5
 neighbor swp1 interface peer-group ISL
 neighbor swp2 interface peer-group ISL
 neighbor swp3 interface peer-group ISL
 neighbor swp4 interface peer-group ISL
 !
 address-family ipv4 unicast
  redistribute connected route-map ADV_LO
  neighbor ISL activate
  maximum-paths 64
 exit-address-family
!
route-map ADV_LO permit 10
 match interface lo
!

leaf01ではroute-mapのclassifierとしてprefix-list を使用し、spine01では interface を使用しました。 なお、leaf01でclassifier interface を使用する場合、route-mapは次のようになります。

route-map ACCEPT_DC_LOCAL permit 5
 match interface lo
route-map ACCEPT_DC_LOCAL permit 10
 match interface vlan10 

spine01にてBGPの状態を確認してみます。

ネイバーの表記がIPアドレスからインタフェース名に変わりました。

cumulus@dc-spine01:~$ net show bgp ipv4 unicast summary
BGP router identifier 10.0.254.254, local AS number 4200000000 vrf-id 0
BGP table version 9
RIB entries 17, using 2584 bytes of memory
Peers 4, using 77 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
dc-leaf01(swp1) 4 4210000001     148     146        0    0    0 00:06:55            2
dc-leaf02(swp2) 4 4210000002     150     146        0    0    0 00:06:55            2
dc-leaf03(swp3) 4 4210000003     148     146        0    0    0 00:06:55            2
dc-leaf04(swp4) 4 4210000004     150     146        0    0    0 00:06:55            2

Total number of neighbors 4

BGPの経路は同じです。

cumulus@dc-spine01:~$ net show route bgp
RIB entry for bgp
=================
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR,
       > - selected route, * - FIB route

B>* 10.0.254.1/32 [20/0] via 169.254.1.1, swp1, 00:08:30
B>* 10.0.254.2/32 [20/0] via 169.254.1.3, swp2, 00:08:30
B>* 10.0.254.3/32 [20/0] via 169.254.1.5, swp3, 00:08:30
B>* 10.0.254.4/32 [20/0] via 169.254.1.7, swp4, 00:08:30
B>* 10.1.1.0/26 [20/0] via 169.254.1.1, swp1, 00:08:30
B>* 10.1.2.0/26 [20/0] via 169.254.1.3, swp2, 00:08:30
B>* 10.1.3.0/26 [20/0] via 169.254.1.5, swp3, 00:08:30
B>* 10.1.4.0/26 [20/0] via 169.254.1.7, swp4, 00:08:30

neighborをインタフェース名で指定して経路を表示できます。 なお、以前と同様にIPアドレスで指定することもできます。

cumulus@dc-spine01:~$ net show bgp neighbor swp1 routes
BGP table version is 25, local router ID is 10.0.254.254
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.0.254.1/32    169.254.1.1              0             0 4210000001 ?
*> 10.1.1.0/26      169.254.1.1              0             0 4210000001 ?

Displayed  2 routes and 9 total paths

以上により、BGP設定からIPアドレスの指定を隠蔽できました。 しかし、依然としてリンク間のインタフェースにはIPアドレスの設定が必要なままです。 この問題の解決策については4章で触れています。

Chapter 3 まとめ

  • 設定の自動化にはパターンの発見と重複の排除が必要
  • IPv4環境のBGPでconfigを自動化を想定した設定
  • BGP設定からはIPアドレスを隠蔽できたが、依然としてインタフェースにIPアドレスを設定している