[[CISCO入門]] #setlinebreak(on) バージョン: &Version; &br; オンラインユーザー数: &online; 閲覧数表示 本日/トータル: &counter(today); / &counter(total); &br; 最終更新:&lastmod();&br; *BGP [#z0657f3f] **ASの接続形態 [#v412f076] ***スタブAS [#ma50f4a3] スタブAS:1つのリンクで1つの他のASとだけ接続しているASシングルホームASとも呼ばれる。 出入り口が1つしかない為、他のASに向けてDefaultGWをStaticに設定するだけでよいので、 基本的にBGPは必要ありません。 ***マルチホーム非トランジットAS [#q1a7e5b7] 複数のASにマルチホーム接続し、外部AS間のパケットは自AS内を通過させないASを マルチホーム非トランジットASといいます。 マルチホームな非トランジットASでは受け取ったルート情報を他のASに送信せず、自ASの ローカルルートのみをアナウンスします。一般的な企業がマルチホーム接続を行う場合は 非トランジットASになります。 ***トランジットAS [#ha37ca3b] 複数のASにマルチホーム接続し、外部AS間のパケットを中継するトランジットASといいます。 トランジットASは他のASから受け取ったASからのルート情報を更に別のASに送信することで、 外部AS宛のトラフィックが自分のASを通過して配送されるのを可能にします。 また自AS内ルートもアナウンスします。 一般的なISPのASはマルチームなトランジットASになります。 **BGPの動作 [#eb708be1] BGPはトランスポート層で唯一TCPを使用するルーティングプロトコルで 3つのテーブルを用いて動作します。 またBGPネイバー関係には内部BGPと外部BGPがあります。 ***BGPメッセージ [#a928365b] BGPのネイバー間で交換されるBGPメッセージは次の四種類 -OPEN TCPコネクションを確立し、ネイバーとのセッション番号を開始する為の通知メッセージです。 OPENメッセージにはバージョン番号、AS番号、BGPルータID、待機時間などが含まれます。 -UPDATE ルート情報の追加、変更、削除を伝える為のメッセージです。 ルート情報にはネットワークアドレス、サブネットマスクと、様々なパスアトリビュート(属性)が含まれています。 -KEEPALIVE ネイバーの生存確認をする為のメッセージです。ホールドダウンタイマ内にKEEPALIVEメッセージが 受け取れない場合、BGPネイバーはダウンした時みなされます。 -NOTIFICATION エラーメッセージが検出された時に、それを通知する為のメッセージ。 OPENメッセージに含まれる情報が接続条件を満たさない場合やホールドダウン時間を超過した場合 など、いくつかの状況においてBGPセッションを維持・確率できない場合があります。 その場合、ネイバーにNOTIFICATIONメッセージを送信し、エラーの内容通知を行いBGPセッション断する ***BGPデータベース [#d4505b46] BGPルータはネイバーとの間で送受信されるルート情報を格納するために独自のテーブルを保持しています。 -ネイバーテーブル BGPネイバーリスト -BGPテーブル 各ネイバーから受信した全てのルート情報を格納するDB 各ルートに関するBGPアトリビュートが含まれる -ルーティングテーブル 宛先ネットワークへの最適パスのリスト ***BGPピア(BGPネイバー) [#qf908c43] BGPルーティングプロセスを実行するルータをBGP''スピーカ''といいます。 2台のBGPスピーカはTCPコネクションを形成します。 この関係をBGPピア、又はBGPネイバーと呼びます。 BGPピアにはIBGPピア、EBGPピアがあります。 -IBGPピア 同じASにある2台のルータ間で確立するBGPピアを内部BGP(IBGP)ピアと呼ぶ。 <条件> 同じASに属している 直接接続している必要は無い(IP到達可能が必須) -EBGPピア 異なるASに属するBGPピアを外部BGP(EBGP)ピアと呼ぶ。 <条件> 違うASに属している 原則として直接接続して、到達可能であること。 (直結していない場合ebgp-multihopコマンドとIP到達性が必須) **BGPの6つの状態 [#z9047fbf] -Idle BGP接続の為の最初の段階 -Connect TCP接続の完了待ち。 TCP接続が成功するとOpen Sent状態に移行 TCP接続が失敗した場合はActive状態に移行する。 -Active TCP接続を開始し、試行している状態。 OPENメッセージを送信しOPEN Sent状態に移行します。 TCP接続が完了しない場合は再びConnect状態にもどります。 設定ミスにより予期しないIPアドレスでTCP接続が行われると Activeの状態のままになります。 -Open Sent OPENメッセージを送信して、ピアからOPENメッセージ確認を行っている状態。 OPENメッセージを受信出来る場合KEEPALIVEメッセージの送信を開始し、 Open Confirm状態に遷移します。 Openメッセージがエラーの場合、NOTIFICATIONメッセージを送信しIdle状態に戻ります。 -Open Confirm KEEPALIVEメッセージまたはNOTIFICATIONメッセージを待っている状態。 KEEPALIVEメッセージを受け取るとEstablished状態に遷移します。 NOTIFICATIONメッセージを受け取ったらIdle状態に遷移します。 -Established BGPピアが完全に確立している状態です。 UPDATE/KEEPALIVE/NOTIFICATIONが交換することが出来ます。 UPDATE/KEEPALIVEを受信するたびにホールドタイムがリセットされます。 NOTIFICATIONメッセージを受け取ったらIdle状態に遷移します。 **パスアトリビュート [#zfad5195] BGPで交換するルート情報には様々なパスアトリビュート(パス属性)と呼ばれるパラメータが付加される。 ・全てのBGPルータがサポートしているかどうか Well-known(識別出来る)/Optional(識別できない) ・全てのUPDATEメッセージに付加されるかどうか mandatory(必須)/discretionary(任意) ・他のネイバーへ伝播するかどうか Transitive(伝播する)/non-transitive(伝播しない) これらの特性を組み合わせることでパスアトリビュートを次の4タイプの分類しています。 ,タイプ,説明,パスアトリビュート ,Well-known mandatory,全てのBGP実装で識別出来、必ず付加される,ORIGIN、AS_APTH、NEXT_HOP ,Well-know discretionary,全てのBGP実装で認識出来るが、付加は任意,LOCAL_PREFERENCE ,Optional transitive,一部の実装で識別出来ない可能性があるが、ネイバー伝播する,COMMUNITY ,Optional non-transitive,一部の実装で識別出来ない可能性があり、ネイバー伝播しない,MED **BGPの基本設定 [#t6ced035] 10.10.10.0/24 .10 .11 ┌───┐ ┌───┐ │ R1 ├──┤ R2 │ └───┘ └───┘ 10.11.11.11 10.12.12.12 ***R1のConfig(BGP) [#vea284d5] router bgp 64512 no synchronization bgp router-id 1.1.1.1 bgp log-neighbor-changes network 10.11.11.0 mask 255.255.255.0 neighbor 10.10.10.11 remote-as 64513 no auto-summary ***R2 [#f33b6ea7] ! router bgp 64513 no synchronization bgp router-id 1.1.1.2 bgp log-neighbor-changes network 10.12.12.0 mask 255.255.255.0 neighbor 10.10.10.10 remote-as 64512 no auto-summary ! ***showで情報交換されたの確認 [#g8b609be] R2#show ip route Gateway of last resort is not set 10.0.0.0/24 is subnetted, 3 subnets C 10.12.12.0 is directly connected, FastEthernet0/1 B 10.11.11.0 [20/0] via 10.10.10.10, 00:02:20 C 10.10.10.0 is directly connected, FastEthernet0/0 R1#show ip bgp summary BGP router identifier 1.1.1.1, local AS number 64512 BGP table version is 7, main routing table version 7 2 network entries using 234 bytes of memory 2 path entries using 104 bytes of memory 3/2 BGP path/bestpath attribute entries using 372 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 734 total bytes of memory BGP activity 6/4 prefixes, 6/4 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.10.10.11 4 64513 12 12 7 0 0 00:07:19 1 R1# R1#show ip bgp neighbors BGP neighbor is 10.10.10.11, remote AS 64513, external link BGP version 4, remote router ID 1.1.1.2 BGP state = Established, up for 00:07:49 Last read 00:00:49, last write 00:00:49, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received(old & new) Address family IPv4 Unicast: advertised and received Message statistics: InQ depth is 0 OutQ depth is 0 Sent Rcvd Opens: 1 1 Notifications: 0 0 Updates: 1 1 Keepalives: 10 10 Route Refresh: 0 0 Total: 12 12 Default minimum time between advertisement runs is 30 seconds For address family: IPv4 Unicast BGP table version 7, neighbor version 7/0 Output queue size : 0 Index 1, Offset 0, Mask 0x2 1 update-group member Sent Rcvd Prefix activity: ---- ---- Prefixes Current: 1 1 (Consumes 52 bytes) Prefixes Total: 1 1 Implicit Withdraw: 0 0 Explicit Withdraw: 0 0 Used as bestpath: n/a 1 Used as multipath: n/a 0 Outbound Inbound Local Policy Denied Prefixes: -------- ------- Bestpath from this peer: 1 n/a Total: 1 0 Number of NLRIs in the update sent: max 1, min 1 Connections established 1; dropped 0 Last reset never 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.10.10.10, Local port: 47198 Foreign host: 10.10.10.11, Foreign port: 179 Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes) Event Timers (current time is 0x6337A7): Timer Starts Wakeups Next Retrans 11 0 0x0 TimeWait 0 0 0x0 AckHold 10 8 0x0 SendWnd 0 0 0x0 KeepAlive 0 0 0x0 GiveUp 0 0 0x0 PmtuAger 0 0 0x0 DeadWait 0 0 0x0 iss: 3851312442 snduna: 3851312730 sndnxt: 3851312730 sndwnd: 16097 irs: 1680345820 rcvnxt: 1680346108 rcvwnd: 16097 delrcvwnd: 287 SRTT: 231 ms, RTTO: 769 ms, RTV: 538 ms, KRTT: 0 ms minRTT: 0 ms, maxRTT: 300 ms, ACK hold: 200 ms Flags: active open, nagle IP Precedence value : 6 Datagrams (max data segment is 1460 bytes): Rcvd: 12 (out of order: 0), with data: 10, total data bytes: 287 Sent: 21 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 11, total data bytes: 287 R1#show ip protocols Routing Protocol is "bgp 64512" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set IGP synchronization is disabled Automatic route summarization is disabled Neighbor(s): Address FiltIn FiltOut DistIn DistOut Weight RouteMap 10.10.10.11 Maximum path: 1 Routing Information Sources: Gateway Distance Last Update 10.10.10.11 20 00:10:19 Distance: external 20 internal 200 local 200 R1#show ip bgp BGP table version is 7, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.11.11.0/24 0.0.0.0 0 32768 i *> 10.12.12.0/24 10.10.10.11 0 0 64513 i R1# R1#show ip route b R1#show ip route bgp 10.0.0.0/24 is subnetted, 3 subnets B 10.12.12.0 [20/0] via 10.10.10.11, 00:12:00 **BGPの同期 [#l1d94165] BGP同期(Synchronization)は''IBPGから受信したルートはIGPと同期されるまで利用出来ない'' これはブラックホールASと呼ばれる現象を回避する為にあります。 IOS12.2(8)以降無効化されております。 router bgp 64513 no synchronization ←BGP作成時に自動的に作成されるコレ **BGPのルート集約 [#a5731df6] BGPのルート集約には二つの方法があります。 基本的にはaggregate-addressコマンドでルート集約を行います。 -aggregate-addressコマンド -networkコマンド ***aggregate-addressコマンドによる集約例 [#j6ddfe9f] Summary-onlyを入れると集約されたアドレスのみ広報され、 入れないと集約後のアドレスと集約前のアドレス両方が広報される。 -Summary-only無し R2(config)# router bgp 64513 R2(config-router)#aggregate-address 10.12.0.0 255.255.0.0 -Summary-only有り R2(config)# router bgp 64513 R2(config-router)#aggregate-address 10.12.0.0 255.255.0.0 summary-only ***BGPのおけるauto-summary [#z13b0d61] BGPの自動集約はIGPと異なりBGP再配布されるルートに対してのみ自動集約が行われます。 但し現在のISPではフルメッシュIBGPなどの環境でnetworkコマンドによってルートをアドバタイズするのが 一般的であり、外部ASのルート情報をAS内のIGPへ再配布することは殆どありません。 従ってIOS12.2(8)以降ではDefでno auto-summaryとなっています。 *BGPのルート決定プロセス [#p37db957] BGPは同じ宛先に対して同じプレフィックス長を持つルートが複数ある場合、 様々なパスアトリビュートの情報に従って最適ルートを一つ選択します。 **BGPのルート決定プロセス [#ze7d4029] BGPは同じ宛先に対して同じプレフィックス長を持つルートが複数ある場合、 様々なパスアトリビュートの情報に従って最適ルートを一つ選択します。 ***BGPのルート決定プロセス [#v3e4ad31] NEXT_HOPアトリビュートのIPアドレスに到達できることが前提。 -WEIGHTアトリビュートが最大ルートを優先 ※Cisco独自のパラメータ -LOCAL_PREFERENCEアトリビュートが最大のルートを優先 WEIGHTが同じ場合、LOCAL_PREFERENCEの値が最大のルートを優先する 表示が無いルートはDef:100とみなします。 -AS_PATHアトリビュートが最短のルートを優先 ローカルルータが発生元のルートが無い場合、AS_PATHが最も短いルートが優先される -ORIGINアトリビュートが最小のルートを優先 (高:IGP<EGP<INCOMPLETE:低) AS_PATHの長さが同じ場合、ORIGINを参照します。 3つのORIGINは数値化され、IGPはEGPより小さく、EGPはINCOMPLETEより小さくなっている。 -MEDアトリビュートが最小のルート ORIGINアトリビュートが同じ場合、MED値が最小のルートを優先します。 (同じASに属する複数のEBGPピアからのルート情報の比較に用います) -IBGPからのルートより、EBGPからのルートを優先 MED値が同じ場合、ネイバータイプが確認され、IBGP(内部)ルートよりもEBGP(外部)ルートを優先 -NEXT_HOPへのIGPメトリックが最小のルートを優先 -EBGPからのルートの場合、最も古いものを優先 -ルータIDが最小のBGPピアからのルートを優先 -ネイバーのIPアドレスが最小のルートを優先