【BGP入門】基本となるiBGPとeBGPについて

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、EGPの代表例であるBGP(Border Gateway Protocol)について、まとめていきたいと思います。

以下の記事でBGPを利用したインターネットの世界(ピアリング)に関する概要はまとめているので、こちらもご確認頂ければと思います。

最初はBGPのルーティングテーブル「BRIB」

「BRIB」とは、「BGP RIB を指し、Adj-RIB-in、LOC-RIB、Adj-RIB-outの3つから構成」されます。

「Adj-RIB-in」は経路情報が含まれるUPDATEメッセージの蓄積のためのテーブルとなり、「LOC-RIB」はポリシー適用やフィルタリング反映のためのテーブルです。

また、「Adj-RIB-out」はベストパスの蓄積とネイバーに対する経路広報のためのテーブルになります。

ルーティングテーブルとの連携は、「LOC-RIB」で実施し、それぞれのテーブル情報を更新・交換を行います。

  • Adj-RIB-in:UPDATEメッセージの蓄積
  • LOC-RIB:ポリシー適用・フィルタリング反映
  • Adj-RIB-out:ベストパスの蓄積・ネイバー向けにベストパスの送信

BGPの基本「iBGP」と「eBGP」

今まではインターネットの世界における用語を説明してきました。

ここからはBGPの基本用語について説明していきます。

まずはじめにBGPには、「iBGP」と「eBGP」の2種類の接続方法(ピア)が存在します。

用語①:iBGPとは?

概要

iBGPとは、「同じAS同士で接続するBGPピア」となります。

同一AS同士で接続するため、内部向けの経路交換を目的とした接続になります。

また、同一AS内部に属するBGPルータとはフルメッシュで接続することが一般的です。

AS XXX
AS XXX
:IBGPピア
:IBGPピア
Text is not SVG – cannot display

しかし、iBGPピアのフルメッシュ接続は、ルータ数の増加に比例し、各ルータの負荷も増大します。

通信キャリアや規模の大きいネットワーク事業者では、非現実的な運用となります。

iBGPピア数が増加によるメモリやCPUへの負荷増大や経路の再計算が頻繁に行われる影響がある

この課題を解決するために利用する機能が「ルートリフレクタ」になります。

ルートリフレクタは、1台のルータに対し、iBGPピア接続を行い、そのルータが集中管理を行います。

そのため、iBGPピア数が減少し、ルータの負荷軽減につながる利点が得られます。

AS XXX
AS XXX
:IBGPピア
:IBGPピア
Route
Reflector

Route…
Text is not SVG – cannot display

設定方法(Cisco IOS)

この章では、iBGPピアの設定方法についてまとめていきたいと思います。

CCNAやCCNPで利用するCIsco IOSの設定方法を以下に記載します。

router bgp <AS番号>
 network <広報Prefix> mask <広報Prefixのサブネットマスク>
 neighbor <ネイバー先アドレス> remote-as <ネイバーのAS番号>
 neighbor <ネイバー先アドレス> update-source <接続元のInterface>
!

iBGPには、iBGPピアのルータから受信した経路は他のiBGPピアに広報しないスプリットホライズンと呼ぶ機能がデフォルトで存在します。

スプリットホライズンがある理由は、「ルーティングループを防ぐため」です。

AS XXX
AS XXX
Prefix: 192.168.1.0/24
Nexthop: RouterA

Prefix: 192.168.1.0/24…
スプリットホライズン有
スプリットホライズン有
スプリットホライズン
により経路広報STOP
スプリットホライズンにより経路広報STOP…
スプリットホライズン
により経路広報STOP
スプリットホライズンにより経路広報STOP…
AS XXX
AS XXX
Prefix: 192.168.1.0/24
Nexthop: RouterA

Prefix: 192.168.1.0/24…
スプリットホライズン無
スプリットホライズン無
Prefix: 192.168.1.0/24
Nexthop: RouterB

Prefix: 192.168.1.0/24…
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
Prefix: 192.168.1.0/24
Nexthop: RouterC

Prefix: 192.168.1.0/24…
Prefix: 192.168.1.0/24
Nexthop: RouterD

Prefix: 192.168.1.0/24…
ループ発生
ループ発生
Text is not SVG – cannot display

実機確認

今回の実機確認では、以下の検証構成で確認を行います。

今回はRouter1とRouter2間のConfigと状態を確認していきます。

まずは、Router1とRouter2のBGP Configについて見ていきましょう。

設定方法で示した通り、「Loopback 10.0.0.[12]/32を広報するためのnetwork文」、「iBGPピア接続のためのneighbor文」を設定しています。

======================================================================
[Router1 Config]
router bgp 65000
 bgp router-id 10.0.0.1
 bgp log-neighbor-changes
 network 10.0.0.1 mask 255.255.255.255
 neighbor 10.0.1.2 remote-as 65000
 neighbor 10.0.1.2 update-source GigabitEthernet0/1
!
======================================================================

======================================================================
[Router2 Config]
router bgp 65000
 bgp router-id 10.0.0.2
 bgp log-neighbor-changes
 network 10.0.0.2 mask 255.255.255.255
 neighbor 10.0.1.1 remote-as 65000
 neighbor 10.0.1.1 update-source GigabitEthernet0/1
!
======================================================================

上記、設定後にBGPピア状態や経路受信の確認を行います。

show ip bgp summary」では、BGPピア状態を確認することができます。

「State/PfxRcd」でその時の状態を確認でき、数字の記載がある場合は「BGPピアが確立状態(Establlished)」であり、受信経路数を示します

Router1#show ip bgp summary
BGP router identifier 10.0.0.1, local AS number 65000
BGP table version is 4, main routing table version 4
3 network entries using 432 bytes of memory
3 path entries using 252 bytes of memory
2/2 BGP path/bestpath attribute entries using 320 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 1004 total bytes of memory
BGP activity 3/0 prefixes, 3/0 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.1.2        4        65000      31      32        4    0    0 00:24:27        1
10.0.2.2        4        65000      30      30        4    0    0 00:21:16        1

また、「show ip bgp neighbors <ネイバー先のアドレス>」や「show ip bgp」でネイバー状態の詳細や受信経路を確認することができます。

Router1#show ip bgp neighbors 10.0.1.2
BGP neighbor is 10.0.1.2,  remote AS 65000, internal link
  BGP version 4, remote router ID 10.0.0.2
  BGP state = Established, up for 00:24:38
  Last read 00:00:34, last write 00:00:26, hold time is 180, keepalive interval is 60 seconds
  Neighbor sessions:
    1 active, is not multisession capable (disabled)
  Neighbor capabilities:
    Route refresh: advertised and received(new)
    Four-octets ASN Capability: advertised and received
    Address family IPv4 Unicast: advertised and received
    Enhanced Refresh Capability: advertised and received
    Multisession Capability:
    Stateful switchover support enabled: NO for session 1
  Message statistics:
    InQ depth is 0
    OutQ depth is 0

                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                2          2
    Keepalives:            29         28
    Route Refresh:          0          0
    Total:                 32         31
  Do log neighbor state changes (via global configuration)
  Default minimum time between advertisement runs is 0 seconds

 For address family: IPv4 Unicast
  Session: 10.0.1.2
  BGP table version 4, neighbor version 4/0
  Output queue size : 0
  Index 1, Advertise bit 0
  1 update-group member
  Slow-peer detection is disabled
  Slow-peer split-update-group dynamic is disabled
                                 Sent       Rcvd
  Prefix activity:               ----       ----
    Prefixes Current:               1          1 (Consumes 84 bytes)
    Prefixes Total:                 2          1
    Implicit Withdraw:              1          0
    Explicit Withdraw:              0          0
    Used as bestpath:             n/a          1
    Used as multipath:            n/a          0
    Used as secondary:            n/a          0

                                   Outbound    Inbound
  Local Policy Denied Prefixes:    --------    -------
    Bestpath from this peer:              2        n/a
    Bestpath from iBGP peer:              1        n/a
    Total:                                3          0
  Number of NLRIs in the update sent: max 1, min 0
  Last detected as dynamic slow peer: never
  Dynamic slow peer recovered: never
  Refresh Epoch: 1
  Last Sent Refresh Start-of-rib: never
  Last Sent Refresh End-of-rib: never
  Last Received Refresh Start-of-rib: never
  Last Received Refresh End-of-rib: never
				       Sent	  Rcvd
	Refresh activity:	       ----	  ----
	  Refresh Start-of-RIB          0          0
	  Refresh End-of-RIB            0          0

  Address tracking is enabled, the RIB does have a route to 10.0.1.2
  Route to peer address reachability Up: 1; Down: 0
    Last notification 00:27:23
  Connections established 1; dropped 0
  Last reset never
  Interface associated: (none) (peering address in same link)
  Transport(tcp) path-mtu-discovery is enabled
  Graceful-Restart is disabled
  SSO is disabled
Connection state is ESTAB, I/O status: 1, unread input bytes: 0
Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 255
Local host: 10.0.1.1, Local port: 39438
Foreign host: 10.0.1.2, Foreign port: 179
Connection tableid (VRF): 0
Maximum output segment queue size: 50

Enqueued packets for retransmit: 0, input: 0  mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x26E2A3):
Timer          Starts    Wakeups            Next
Retrans            31          0             0x0
TimeWait            0          0             0x0
AckHold            31         27             0x0
SendWnd             0          0             0x0
KeepAlive           0          0             0x0
GiveUp              0          0             0x0
PmtuAger          645        644        0x26E319
DeadWait            0          0             0x0
Linger              0          0             0x0
ProcessQ            0          0             0x0

iss: 1319630801  snduna: 1319631489  sndnxt: 1319631489
irs: 3204290651  rcvnxt: 3204291320

sndwnd:  15697  scale:      0  maxrcvwnd:  16384
rcvwnd:  15716  scale:      0  delrcvwnd:    668

SRTT: 984 ms, RTTO: 1113 ms, RTV: 129 ms, KRTT: 0 ms
minRTT: 2 ms, maxRTT: 1000 ms, ACK hold: 200 ms
uptime: 1478311 ms, Sent idletime: 26282 ms, Receive idletime: 26080 ms
Status Flags: active open
Option Flags: nagle, path mtu capable
IP Precedence value : 6

Datagrams (max data segment is 1460 bytes):
Rcvd: 61 (out of order: 0), with data: 31, total data bytes: 668
Sent: 61 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 31, total data bytes: 687

 Packets received in fast path: 0, fast processed: 0, slow path: 0
 fast lock acquisition failures: 0, slow path: 0
TCP Semaphore      0x0FDF2E6C  FREE

Router1#show ip bgp
BGP table version is 4, local router ID is 10.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>   10.0.0.1/32      0.0.0.0                  0         32768 i
 *>i  10.0.0.2/32      10.0.1.2                 0    100      0 i
 *>i  10.0.0.3/32      10.0.2.2                 0    100      0 i

用語②:eBGPピア

概要

eBGPピアとは、「異なるAS(異なる組織等)のルータ間で接続するためのBGPピア」になります。

このピアは、iBGPとは違いフルメッシュでのBGP接続は不要となります。

そのため、TTLは1となるため、Direct/Connected以外での接続は別途設定が必要となります。

AS XXX
AS XXX
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
AS YYY
AS YYY
AS ZZZ
AS ZZZ
AS WWW
AS WWW
EBGPピア
EBGPピア
Text is not SVG – cannot display

設定方法(Cisco IOS)

概要の説明の後は、Cisco IOSの設定方法について説明します。

一般的な設定は以下の通りとなります。

router bgp <AS番号>
 network <広報したいPrefix> mask <サブネットマスク> 
 neighbor <eBGPピア先のアドレス> remote-as <ネイバ先のAS番号>
 neighbor <ネイバー先アドレス> update-source <接続元のInterface>
 neighbor <eBGPピア先のアドレス> ebgp-multihop <TTL値> *オプション設定
!

最終行の「ebgp-multihop」は、eBGPピア接続元のInterfaceをLoopback等にする場合にTTL値を2以上にする場合に利用します。

また、利用するOS次第ではデフォルトで経路を「all deny」にする場合もあるため、別途設定追加が必要な場合もあります。

実機確認

今回、eBGPピアの実機確認で利用した構成は以下の通りとなります。

上記構成のRouter2-Router4間の設定状況を見ていきたいと思います。

=========================================================
[Router2]
router bgp 65000
 neighbor 10.0.4.2 remote-as 65001
 neighbor 10.0.4.2 update-source GigabitEthernet0/2
!
=========================================================

=========================================================
[Router4]
router bgp 65001
 neighbor 10.0.5.1 remote-as 65000
 neighbor 10.0.5.1 update-source GigabitEthernet0/1
!
=========================================================

上記の設定後のBGPの状態を見ていきましょう。

「show ip bgp summary」でBGPネイバの状態を確認すると「Established」になっており、AS番号が「65001」になっていることがわかります。

Router2#show ip bgp summary
BGP router identifier 10.0.0.2, local AS number 65000
BGP table version is 7, main routing table version 7
6 network entries using 864 bytes of memory
9 path entries using 756 bytes of memory
5/4 BGP path/bestpath attribute entries using 800 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2444 total bytes of memory
BGP activity 6/0 prefixes, 9/0 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.0.1.1        4        65000      39      41        7    0    0 00:32:52        1
10.0.3.2        4        65000      41      41        7    0    0 00:32:49        4
10.0.4.2        4        65001      17      17        7    0    0 00:10:09        3

ネイバの詳細を見るとiBGPの時は「internal link」でしたが、今は「external link」になっていることがわかります。

また、受信経路もMEDやLPといった属性(Attribute)はデフォルト値ですが、AS Pathに「65001」が追加されていることがわかります。

Router2#show ip bgp neighbors 10.0.4.2
BGP neighbor is 10.0.4.2,  remote AS 65001, external link
  BGP version 4, remote router ID 10.1.0.4
  BGP state = Established, up for 00:10:19
  Last read 00:00:44, last write 00:00:25, hold time is 180, keepalive interval is 60 seconds
  Neighbor sessions:
    1 active, is not multisession capable (disabled)
  Neighbor capabilities:
    Route refresh: advertised and received(new)
    Four-octets ASN Capability: advertised and received
    Address family IPv4 Unicast: advertised and received
    Enhanced Refresh Capability: advertised and received
    Multisession Capability:
    Stateful switchover support enabled: NO for session 1
  Message statistics:
    InQ depth is 0
    OutQ depth is 0

                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                3          4
    Keepalives:            13         12
    Route Refresh:          0          0
    Total:                 17         17
  Do log neighbor state changes (via global configuration)
  Default minimum time between advertisement runs is 30 seconds

 For address family: IPv4 Unicast
  Session: 10.0.4.2
  BGP table version 7, neighbor version 7/0
  Output queue size : 0
  Index 2, Advertise bit 1
  2 update-group member
  Slow-peer detection is disabled
  Slow-peer split-update-group dynamic is disabled
                                 Sent       Rcvd
  Prefix activity:               ----       ----
    Prefixes Current:               3          3 (Consumes 252 bytes)
    Prefixes Total:                 3          3
    Implicit Withdraw:              0          0
    Explicit Withdraw:              0          0
    Used as bestpath:             n/a          3
    Used as multipath:            n/a          0
    Used as secondary:            n/a          0

                                   Outbound    Inbound
  Local Policy Denied Prefixes:    --------    -------
    Bestpath from this peer:              3        n/a
    Total:                                3          0
  Number of NLRIs in the update sent: max 2, min 0
  Last detected as dynamic slow peer: never
  Dynamic slow peer recovered: never
  Refresh Epoch: 1
  Last Sent Refresh Start-of-rib: never
  Last Sent Refresh End-of-rib: never
  Last Received Refresh Start-of-rib: never
  Last Received Refresh End-of-rib: never
				       Sent	  Rcvd
	Refresh activity:	       ----	  ----
	  Refresh Start-of-RIB          0          0
	  Refresh End-of-RIB            0          0

  Address tracking is enabled, the RIB does have a route to 10.0.4.2
  Route to peer address reachability Up: 1; Down: 0
    Last notification 00:10:41
  Connections established 1; dropped 0
  Last reset never
  External BGP neighbor configured for connected checks (single-hop no-disable-connected-check)
  Interface associated: GigabitEthernet0/2 (peering address in same link)
  Transport(tcp) path-mtu-discovery is enabled
  Graceful-Restart is disabled
  SSO is disabled
Connection state is ESTAB, I/O status: 1, unread input bytes: 0
Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 1
Local host: 10.0.4.1, Local port: 21100
Foreign host: 10.0.4.2, Foreign port: 179
Connection tableid (VRF): 0
Maximum output segment queue size: 50

Enqueued packets for retransmit: 0, input: 0  mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x1EAA9A):
Timer          Starts    Wakeups            Next
Retrans            15          0             0x0
TimeWait            0          0             0x0
AckHold            15         12             0x0
SendWnd             0          0             0x0
KeepAlive           0          0             0x0
GiveUp              0          0             0x0
PmtuAger           12         11        0x1EAD93
DeadWait            0          0             0x0
Linger              0          0             0x0
ProcessQ            0          0             0x0

iss: 3761625100  snduna: 3761625536  sndnxt: 3761625536
irs: 2443806999  rcvnxt: 2443807459

sndwnd:  15949  scale:      0  maxrcvwnd:  16384
rcvwnd:  15925  scale:      0  delrcvwnd:    459

SRTT: 865 ms, RTTO: 1866 ms, RTV: 1001 ms, KRTT: 0 ms
minRTT: 2 ms, maxRTT: 1000 ms, ACK hold: 200 ms
uptime: 619766 ms, Sent idletime: 25846 ms, Receive idletime: 25646 ms
Status Flags: active open
Option Flags: nagle, path mtu capable
IP Precedence value : 6

Datagrams (max data segment is 1460 bytes):
Rcvd: 30 (out of order: 0), with data: 16, total data bytes: 459
Sent: 31 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 15, total data bytes: 435

 Packets received in fast path: 0, fast processed: 0, slow path: 0
 fast lock acquisition failures: 0, slow path: 0
TCP Semaphore      0x11ABA91C  FREE

Router2#show ip bgp
BGP table version is 7, local router ID is 10.0.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>i  10.0.0.1/32      10.0.1.1                 0    100      0 i
 *>   10.0.0.2/32      0.0.0.0                  0         32768 i
 *>i  10.0.0.3/32      10.0.3.2                 0    100      0 i
 * i  10.1.0.4/32      10.0.5.2                 0    100      0 65001 i
 *>                    10.0.4.2                 0             0 65001 i
 *>   10.1.0.5/32      10.0.4.2                               0 65001 i
 * i                   10.0.5.2                 0    100      0 65001 i
 * i  10.1.0.6/32      10.0.5.2                 0    100      0 65001 i
 *>                    10.0.4.2                               0 65001 i
Router2#

最後に

今回は、BGPの基本となるiBGPとeBGPについてまとめてみました。

BGPシリーズは他にも徐々に記事を作成しているので、ご参照頂けると幸いです。

  • URLをコピーしました!

この記事を書いた人

目次