このブログを検索

ラベル BGP の投稿を表示しています。 すべての投稿を表示
ラベル BGP の投稿を表示しています。 すべての投稿を表示

2021/03/29

BGPのベストパス選択の実際





R1はR2, R3, R5とneighborになっている。
R1でshow ip bgpを実行すると

R1#sho ip bgp
     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.102.0    192.168.101.2            0         32768 64513 i ※1
 *                    192.168.101.18          80             0 64517 i ※2
 * i                  192.168.101.14          80     80      0 64516 i ※3

192.168.102.0/24 のprefixはBGPテーブルに3つあるが、
ベストパスは※1である。

この時、192.168.101.2のルータ(図でいうRT5)がダウンしたら、 ベストパスはどれになるか?

現在のベストパスはweightが設定されている。
weightはciscoルータがBGPのベストパスを選択するときに比較する最初の条件である。

この経路以外はWeightは設定されていない。

Weightの次に比較するのはlocal preference である。

残りの2経路のLocPrfを見ると、一つは空欄、もう一つは80である。

この時、どちらの経路が採用されるか?

そもそも、※2のlocPrfはなぜ空欄なのか?
それは、※2の経路はeBGPのネイバーから受信したprefixだからである。
逆に言うと、BGPテーブルを表示したときにLocPrfが空欄のprefixは、
eBGPから受信したものだとわかる。

eBGPから受信した経路にはlocPrfは「無い」のである。

では、ベストパスの2番目の比較が行われるときに、※2と※3の比較はどうなるのか?
locPrfがない経路より、80が設定されている※3の方が強いのか?

これは考えてもわからない。

こういう場合、LocPrfがないeBGPネイバーから受信したprefixはLocPrfがデフォルト値の100であるとして比較をおこなうことになっている。


だから、RT5がダウンしたらベストパスは ※2になる。



実際にやってみた。

R1#sho ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.102.0    192.168.101.2            0         32768 64513 i
 *                    192.168.101.18          80             0 64517 i
 * i                  192.168.101.14          80     80      0 64516 i


※RT5を落とす

*Mar 29 04:29:31.095: %BGP-3-NOTIFICATION: sent to neighbor 192.168.101.2 4/0 (hold time expired) 0 bytes
*Mar 29 04:29:31.095: %BGP-5-NBR_RESET: Neighbor 192.168.101.2 reset (BGP Notification sent)
*Mar 29 04:29:31.095: %BGP-5-ADJCHANGE: neighbor 192.168.101.2 Down BGP Notification sent
*Mar 29 04:29:31.095: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.101.2 IPv4 Unicast topology base removed from session  BGP Notification sent

R1#sh ip bgp summary

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.101.2   4        64513       0       0        1    0    0 00:00:07 Idle
192.168.101.14  4        64512      10      11        3    0    0 00:05:09        1
192.168.101.18  4        64517      10      11        3    0    0 00:05:09        1



※新しいベストパスが選択される

R1#sh ip bgp
     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.102.0    192.168.101.18          80             0 64517 i
 * i                  192.168.101.14          80     80      0 64516 i

2014/10/26

bgp

最近、bgpをやった。

ちょっと整理してみる。


bgpは、egp(exterior gateway protocol)のひとつである。

AS外部との経路の交換をおこなうので、 exteriorというのである。

これに対し、AS内部での経路交換をおこなうルーティングプロトコルは igp(interior gateway protocol) という。OSPFが代表的である。


と言っても、ルーティングプロトコルと言えば、OSPF, static, BGP がほとんどではないだろうか。

egpに関しては、事実上BGPしかなく、egp = bgpと考えてよいだろう。



さて、egpとigpの違いについてまとめてみたい。

googleで検索したり本で調べれば、決まり文句のようにその違いが述べられている。

やれパスベクタ型だの、リンクステートだのなんだの。


私もそのように覚えていたのだが、

ずっと、bgpがなんなのかがよくわからなかった。

単に経路交換の仕組みが違うだけで、ルータに経路とそのネクストホップを知らせる、
という点については変わらないじゃないか、と。



そこで、GNS3で、簡単な構成を作ってみた。


client --- R1(アクセスルータ) --- R2(キャリア) --- R3(キャリア) --- R4(ISP/IX) ---(キャリア) --- Server


インターネットの通信というのは、基本的に上記のような経路を経ている。


client - R1 間は、パソコンとデフォルトゲートウェイである。

ここは経路は一つしかない。どこへ行くにも、R1を経由する。


R1-R2-R3-R4 の間は、igp(OSPF)でよい。

この区間は収容ユーザや回線数の都合、冗長性(耐障害性)の関係で同じ構成が並列にあったりするのでいくつかのノードを経る。


問題はR3とR4の間である。ここでbgpを使う。

clientからキャリアまでの間に選択すべき経路はそれほど多くないが、

ISP/IXからもらう経路は膨大である。



igpとegpを区別する一番の理由は、この経路数の規模である。




あと、bgpにはibgp と ebgpというのがある。

ibgpというのは同じAS同士、ebgpというのは異なるAS同士で使う。


ここで私はふと疑問に感じた。

「同じAS内の経路交換はigpでするんじゃないのか?なぜibgpが必要なのか?ibgpとigp(OSPF)の違いは?」


今日届いた「インターネットルーティング入門」をパラパラとめくっていると、以下のような記述があった。

「eBGPで得た自分以外のASからの経路情報を、さらに自分のAS内の他のBGPスピーカに伝えるときに使われるのがiBGPです。」


私は今まで、下から考えていた。clientがあって、キャリアがあって、ISPがあって、と。

逆に考えるのだ。eBGPでもらった経路を、iBGPでAS内に伝える。


この、AS内でのBGP交換というのは、ちょっと特殊なルーティングと言える。

あまり説明されることもない。



ibgpが必要になる理由は、先ほど言った、「この区間は収容ユーザや回線数の都合、冗長性(耐障害性)の関係で同じ構成が並列にあったりするのでいくつかのノードを経る」ということではないかと思う。



原理的なことだけを考えるなら、client - キャリア - ISP - IX - ISP - キャリア - Server

で済む。ここで登場するキャリア、ISP、IXはすべて異なるASである。


が、ネットワークというものは、複数束ねられているものである。

iBGPというのは、いわば大量の経路の複製である。




まず、2台のルータでBGPを設定する。同じAS、つまりiBGPである。

そこに、もう一台同じASのルータを追加すると、最初の2台で交換された経路が3台目には伝わらない。

ここがOSPFとは違うところである。こうなっているのは、経路交換のループを防ぐためである。

OSPFなら、3台目にも伝わる。(なぜ、OSPFだとループしないのか?は、改めて考える)




また、BGPで交換されているのに、ルーティングテーブルに載らないことがある。

つまり、show ip bgpでは存在しているのに、show ip routeでは存在していない。


いろいろな場合があるが、BGP特有なのは、「next hopへ到達できない経路はルーティングテーブルにのらない」ということである。

そもそもルーティングというのはnext hop情報を伝えることなのだから、「A宛のnexthopは100です」という情報があれば、それをテーブルに載せればいい、載るものだという認識があった。ルーティングテーブルに載っていてその宛先に送って届かないときは仕方がない、と。


だが、BGPでは「到達できないネクストホップ宛の経路情報」というものも交換されるのである。




R2(AS100) --- R3(AS100) --- R4(AS200)



R3とR4の間でBGP(eBGP)による経路交換がおこなわれると、

R3に、R4(の、R3と接続しているinterfaceのアドレス)をnext hopとする大量の経路情報が伝わる。


そして、R2とR3の間ではiBGPにより経路交換がおこなわれる。R3がR4からもらった経路情報はeBGPによる経路なので、R2に伝わる。

しかし、もしR2が、そのネクストホップつまりR4のR3の対向interfaceのアドレスに到達できないと、ルーティングテーブルに載らない。

だから、R2とR3間では、IGP(OSPFやstatic)によって、R3-R4間の経路情報を交換する必要がある。



2014/10/23

行き詰まり

最近行き詰っている。

ルーティングとは何か?ルータとは何か?インターネットとは何か?

TCP/IPとは?ウェブとは?クラウドとは?L3スイッチとは?

BGPとは?OSPFとは?

冗長?経路?アドレス?


一応、どんなものでどんな風に使われどんな風に設定しどんな風に動くのかはなんとなく理解している。

しかし、なぜこうでなくてはならないのか、ほかにもっといい方法がないのか、とか、

どうしてOSPFなのか、どうしてBGPなのか、

なぜ冗長化するのか、なぜcatalystなのか、nexusなのか、という、根拠というか理由というか、
動機というのか、そういうものがわからない。



そもそも、ネットワークとはなんだろう。

そんなことすら考える。


ネットワークとは、「接続」のことか。

一番単純なネットワークは、2点間の間を結ぶことだ。

糸電話のような。


「通信」とはなにか。「接続」と「通信」の何が違うのか。

ルーティングとスイッチングとは、それぞれどういうことか。


両方「ネットワーク」に分類されるが、違うものである。

よく言われるのはL3(えるさん)、L2(えるに、えるつー)であるが、
果たしてそれらはそれぞれどういうものなのか。

本当にみんなわかっているのか?



1秒の通信断が発生すると、何が起きるのか。
パケットが一つ落ちると、どうなるのか。


電車の中でスマホでウェブを見ている人に何が起きるのか。

家のパソコンでオンラインゲームをしている人にどんな影響があるのか。


メールを受信中に、メールサーバとクライアントの間のどこかで0.5秒の通信断が発生したら、
どうなるのか。



「TCPは再送機能があるがUDPにはないからドロップする」というが、
youtubeを視聴中にパケットが一個おちたらどうなるのか。


マルチキャストを利用した通信というかサービスは具体的に何か?


ウェブ(グーグル)で検索して得られる情報、資格試験受験のための参考書に書いてあること、
その他一般的に言われること、

それらと自分がインターネットやATMやiPhoneや漫画喫茶などで通信・サービスを利用していることの間に、もやもやとしたものがある。

もしかして私は重要な誤解をしている、あるいは重大な認識不足があるのではないか?

そんな気がしてならない。


とりあえず、「インターネットルーティング入門」という本を買った。

2010/10/01

BSCIの準備 BGPいろいろ

show ip bgp route というコマンドはない。 weightと、local preferenceと、MED、この3つの意味がさっぱりわからない。 WEBからの引用を貼る。

local preference
LOCAL_PREF属性は,IBGP専用の属性で,AS内のBGPスピーカーに,経路情報の優先度を知らせる用途で使います。 「低速回線のピアよりも高速回線のピアを使いたい」などという場合に使います。 IBGPで同じあて先の経路情報を複数取得したとき,LOCAL_PREF値の大きい方をベストパスとして採用します。 設定できる値は0~4294967295で,何も設定しなければデフォルトで100が設定されます。
内部ASのネイバールータに対して、外部ASへの優先パスを示す属性です。Local Preferenceはルータ自身に設定される値であり、Local Preference値はデフォルトで「 100 」です。この値は高い値を持つパスが優先され使用されます。Local Preference値は、同一のAS内のルータ間でのみ交換され、発信トラフィックに影響します。
Local Preference属性は、発信トラフィックに影響を与える属性。内部ASのネイバールータに対して、外部ASへの優先パスを示す。ルータ自身に設定する。デフォルト値は「100」。高い値を持つパスが優先される。
Local Preference値は、同一のAS内のルータ間でのみ交換され、発信トラフィックに影響する。
自AS内部において、他ASに行くときに、どの対外ルータを経由すべきか指定。 AS_PATHの長さよりもLOCAL_PREFの値が優先される。 上りのトラフィック制御に適用。
ローカル プリファレンスは AS に対する指標で、その AS から特定のネットワークに到達する際にどのパスが優先されるかを示します。ローカル プリファレンス値の高いパスが優先されます。ローカル プリファレンスのデフォルト値は 100 です。
ローカル ルータにだけ関連するウェイト アトリビュートとは異なり、ローカル プリファレンスは、同じ AS 内のルータ間で交換されるアトリビュートです。
MED
着信トラフィックに影響を与える属性
  • 外部ASのネイバールータに対して、自身のAS内への優先パスを示す。
  • 外部ASから自身のASへ、どのパスを優先させるのかを指示する唯一の属性
  • デフォルト値は、「0」
  • 低い値を持つパスが優先される。
  • MED属性を加えた経路情報が伝わるのはは隣接するASまでで、その次のASには伝わらない。

外部ASのネイバールータに対して、自身のAS内への優先パスを示す属性です。MEDはAS内部にどのようにしてトラフィックを流し込むのかを制御できる唯一の属性です。MED値はデフォルトで「 0 」です。MED値は低い値を持つパスが優先され使用されます。MED値はAS間で交換され、その渡されたAS内では搬送されそのAS内で使用されますが次のASに送信される事はありません。MEDは着信トラフィックに影響を与えます。
MED はオプションの非推移的なアトリビュートです。 MED は、複数のエントリ ポイントがある Autonomous System(AS; 自律システム)への優先パスに関して、外部隣接ルータへの手掛りとなります。 MED は、ルートの外部メトリックとしても認識されています。 大きな MED 値よりも、小さい MED 値の方が優先されます。
weight
ウェイト アトリビュートは、Cisco で定義されたアトリビュートです。このアトリビュートは、ウェイトを使用して最適なパスを選択します。ウェイトは、ルータにローカルに割り当てられます。この値が意味を持つのは、特定のルータだけです。この値は、別のルータに伝搬されたり、ルート アップデートによって伝達されたりはしません。ウェイトは 0 ~ 65,535 の数値を取ることができます。このルータが発信元のパスのウェイトはデフォルトで 32,768 に設定されており、他のパスのウェイトは 0 に設定されています。
WEIGHT属性はCisco独自の属性で、対象のルータでのみ使用される属性であり他のルータに伝達されることはありません。そのルータ自身が接続しているルートにはデフォルトで"32768"の値が割り当てられ、それ以外のルートの値は"0"になります。(WEIGHT値は0~65535で割り当てられる。)WEIGHT属性が大きいパスが優先されます。
メトリック
メトリック アトリビュートは、MULTI_EXIT_DISCRIMINATOR、MED(BGP4)、または INTER_AS(BGP3)とも呼ばれます。このアトリビュートは、AS への優先パスに関する外部隣接ルータへのヒントです。このアトリビュートは、AS への入口ポイントが複数ある場合に、特定のルートに到達するように、別の AS に対して動的に影響を与える方法を提供します。メトリックの値の小さい方が優先されます。
ローカル プリファレンスとは異なり、メトリックは AS 間で交換されます。別の AS に伝達されたメトリックは、その AS からさらに別の AS へ伝達されることはありません。特定のメトリックを持つアップデートが AS に到達すると、AS 内部ではメトリックを使用してルートが決定されます。同じアップデートが第 3 の AS に送信される場合、メトリックは 0 に戻ります。このセクションの図は、メトリックの設定を示しています。メトリックのデフォルト値は 0 です。
multi exit だから、出て行くトラフィックの区別かと思ったら逆で、入ってくるトラフィックを制御するとか・・・ でも、そもそも経路の比較に使うんだから、着信も発信もないと思うんだけどな・・・ ルーティングってのは全部出て行くトラフィックのためにあるんじゃないのか・・・?

BSCIの準備 bgp peer group

BGPのピアグループを設定してみる。

R1(config-router)#neighbor 10.1.1.2 ?
  activate                 Enable the Address Family for this Neighbor
  advertise-map            specify route-map for conditional advertisement
  advertisement-interval   Minimum interval between sending BGP routing updates
  allowas-in               Accept as-path with my AS present in it
  capability               Advertise capability to the peer
  default-originate        Originate default route to this neighbor
  description              Neighbor specific description
  disable-connected-check  One-hop away EBGP peer using loopback address
  distribute-list          Filter updates to/from this neighbor
  dmzlink-bw               Propagate the DMZ link bandwidth
  ebgp-multihop            Allow EBGP neighbors not on directly connected
                           networks
  fall-over                session fall on peer route lost
  filter-list              Establish BGP filters
  inherit                  Inherit a template
  local-as                 Specify a local-as number
  maximum-prefix           Maximum number of prefixes accepted from this peer
  next-hop-self            Disable the next hop calculation for this neighbor
  next-hop-unchanged       Propagate the iBGP paths's next hop unchanged for
                           this neighbor
  password                 Set a password
  peer-group               Member of the peer-group
  prefix-list              Filter updates to/from this neighbor
  remote-as                Specify a BGP neighbor
  remove-private-as        Remove private AS number from outbound updates
  route-map                Apply route map to neighbor
  route-reflector-client   Configure a neighbor as Route Reflector client
  send-community           Send Community attribute to this neighbor
  shutdown                 Administratively shut down this neighbor
  soft-reconfiguration     Per neighbor soft reconfiguration
  timers                   BGP per neighbor timers
  translate-update         Translate Update to MBGP format
  transport                Transport options
  ttl-security             BGP ttl security check
  unsuppress-map           Route-map to selectively unsuppress suppressed
                           routes
  update-source            Source of routing updates
  version                  Set the BGP version to match a neighbor
  weight                   Set default weight for routes from this neighbor

R1(config-router)#neighbor 10.1.1.2 peer-group ?
  WORD  peer-group name

R1(config-router)#neighbor 10.1.1.2 peer-group GROUP1
% Configure the peer-group first


まずpeer-groupを作りなさい、と言われる。
どこで作るのか?さがしたがわからない。
bgpでしか使わないから config-routerモードだと思うのだが・・・
調べてようやくわかった。

R1(config-router)#neighbor ?
  A.B.C.D     Neighbor address
  WORD        Neighbor tag
  X:X:X:X::X  Neighbor IPv6 address

R1(config-router)#neighbor GROUP1 ?
  activate                 Enable the Address Family for this Neighbor
  advertise-map            specify route-map for conditional advertisement
  advertisement-interval   Minimum interval between sending BGP routing updates
  allowas-in               Accept as-path with my AS present in it
  capability               Advertise capability to the peer
  default-originate        Originate default route to this neighbor
  description              Neighbor specific description
  disable-connected-check  One-hop away EBGP peer using loopback address
  distribute-list          Filter updates to/from this neighbor
  dmzlink-bw               Propagate the DMZ link bandwidth
  ebgp-multihop            Allow EBGP neighbors not on directly connected
                           networks
  fall-over                session fall on peer route lost
  filter-list              Establish BGP filters
  inherit                  Inherit a template
  local-as                 Specify a local-as number
  maximum-prefix           Maximum number of prefixes accepted from this peer
  next-hop-self            Disable the next hop calculation for this neighbor
  next-hop-unchanged       Propagate the iBGP paths's next hop unchanged for
                           this neighbor
  password                 Set a password
  peer-group               Configure peer-group
  prefix-list              Filter updates to/from this neighbor
  remote-as                Specify a BGP neighbor
  remove-private-as        Remove private AS number from outbound updates
  route-map                Apply route map to neighbor
  route-reflector-client   Configure a neighbor as Route Reflector client
  send-community           Send Community attribute to this neighbor
  shutdown                 Administratively shut down this neighbor
  soft-reconfiguration     Per neighbor soft reconfiguration
  timers                   BGP per neighbor timers
  translate-update         Translate Update to MBGP format
  transport                Transport options
  ttl-security             BGP ttl security check
  unsuppress-map           Route-map to selectively unsuppress suppressed
                           routes
  update-source            Source of routing updates
  version                  Set the BGP version to match a neighbor
  weight                   Set default weight for routes from this neighbor

R1(config-router)#neighbor GROUP1 peer-group ?
  nlri  Specify nlri type supported by peer-group
  <cr>

R1(config-router)#neighbor GROUP1 peer-group
R1(config-router)#neighbor 10.1.1.2 peer-group GROUP1
% Specify remote-as or peer-group remote AS first


remote-asを先に設定する。

R1(config-router)#neighbor 10.1.1.2 remote-as 65000

R1(config-router)#neighbor 10.1.1.2 peer-group GROUP1
R1(config-router)#end
R1#sho run

!
router bgp 65000
 no synchronization
 bgp log-neighbor-changes
 neighbor GROUP1 peer-group
 neighbor 10.1.1.2 remote-as 65000
 neighbor 10.1.1.2 peer-group GROUP1
 no auto-summary
!
!


やれやれ・・・

2010/09/11

BSCIの準備 BGPの再配送

ospf, isis, eigrp, bgp などの間でredstribute を設定しているが、なかなか思うように再配送されない。

まず、eigrpとospfでは、metricを明示的に設定しないとダメだ。デフォルトでは再配送されない。 デフォルト値でダメならエラーといって欲しい気もする。

metric指定はしかたないとしても、bgpからospfへの再配送ができない。

bgpとospfを有効にしたルータで、redistribute bgp 400 とやる。
ルーティングテーブルには Bのルートがあるのに、再配送されない。
metricやmetric typeやsubnet指定をつけてもダメだ。 なぜだ!?

router bgpで、
bgp redistribute-internal が必要。

ある人のブログに書いてあった。 今読んでいる黒本にも出てこない。 

だが、私はgoogleで「bgp ospf 再配送」と調べているうちに、だんだん今やろうとしていることがどういうことなのかに気付き始めた。 

「bgpで学習した経路を、ospfに再配送する」という例が見当たらない。逆はある。 

おそらく、普通はbgp→ospf という再配送はしないのだろう。
なぜかは説明できないが・・・。

 (2012/02/13追記 これはiBGPの経路をIGPにredistributeする場合の話です。eBGPの経路はこれがなくても再配送できます。)

2010/08/18

BSCIの準備 BGP

private ASは 64512-65535,
BGPはパスベクタ型(ディスタンスベクタではない)、
トランジットASとは通過するASでありこのASではBGPを使用すべきである、

BGPスピーカが持つテーブル
(1)ネイバーテーブル
(2)BGPフォワーディングテーブル
(3)routing table、

EBGPピアは原則として直接接続している必要がありTTL=1で送信され接続していないときはebgp-multihopコマンドを設定してTTLを増加させる

next hopは受信したnext-hop属性をそのまま転送するが、自身の出力IFのアドレスをnext hopにすることができる。

どういう場合にこれが必要になるか?黒本でも、あるサイトでも、EBGPネイバーから受け取った経路情報をiBGPネイバーに転送するときが紹介されている。
RTA(100)---RTB(200)---RTC(200)というような。

このとき、RTBからRTCにアップデートを送信するときに、next-hopがRTAのアドレスになり、RTCが到達できない、ということを防ぐために、RTBのアドレスをnext-hopとして通知する、と。

なんとなくわかったような気もするが、それくらい勝手にやってくんないかな、という気もする。

ということは、EBGPピアがいて、かつ、そのEBGPピアとネイバーになっていないiBGPピアとネイバーになっているときには必須の設定と言うことかな。つまりASBR(BGPでこう呼ぶのか知らないが)では必須の設定である、と。

マルチアクセスネットワークでは、勝手にやってくれるようだ。

IBGPスプリットホライズンとは、「IBGPピアから受信したルートをほかのIBGPピアにアドバタイズしない」というルールで、AS内でルートがループするのを回避する。これは設定しなくても勝手にやってくれる。

同期(synchronization);「BGPで取得したルートはIGPでも同じルートを取得しなければルーティングテーブルに反映せず、他のピアにアドバタイズもしない」


RTA(100)---RTB(200)---RTC(non BGP)---RTD(200)---RTE(300)

同期がない場合、RTEからの経路情報がRTAまで伝わるが、その情報に基づいて送信されたRTAからのパケットは、non BGPスピーカーのRTCが破棄してしまう。

同期をしなくても、RTCもBGPスピーカーにすればいい?もしくはRTBとRTCを直接接続する。

こんなケースはそんなにないとは思うが、あるAS内でIGPつまりOSPFとかRIPとかが動いてなくて、つまりAS内にあるルータ同士が通信できない状態があって、しかしiBGPはフルメッシュで有効になっていて、synchronizationが有効になっていると、ASBRのルータがEBGPピアから受け取った経路はAS内に転送されないことになる。(という問題が黒本にあった)

フルメッシュに接続すれば情報がもれなく行き渡るのはわかる。だが、それをやると通信量が増えるから、なるべくしたくない。

スリットホライズンは、フルメッシュでない状態でブラックホールが発生するのを防ぐための機能である。しかしそれはもれなくルーティングする機能ではない。

「通信できない経路だったら最初から伝えない」という機能であり、それによってアクセスできなかったルータにアクセスできるようになるわけではない。

そこでルートリフレクタ。やっぱりフルメッシュ接続というのは現実的な解決ではない。

ルートリフレクタという特別なルータを作って、そこから必要なルータ宛に経路情報を転送する。これだけ。転送先に設定は必要ない。EBGPピアから受け取ったら、とか、クライアントから受け取ったら、とか、非クライアントからだったら、とかを覚える必要はない。(そういう問題が黒本にあった)

リフレクタである以前にIGPルータでありIBGPルータでありEBGPルータなのだから、経路情報は転送するのが基本。ただし、スプリットホライズンの規則によりIBGPピアから受け取った経路情報はIBGPピアには転送されない。それだと困るので、ルートリフレクタで指定したクライアントには経路情報を転送する。

黒本には以下のように書いてある。

「クライアントのピアから受け取ったルートは、クライアントと非クライアントピアの両方に転送(1)」「非クライアントのピアから受け取ったルートは、クライアントだけに転送(2)」「EBGPピアから受け取ったルートは、クライアントと非クライアントピアの両方に転送(3)」

(2)は、いい。IBGPスプリットホライズンにより転送しないのが原則だがリフレクタを設定したのでクライアントには転送する。(3)も、いい。EBGPピアからのルートなので、スプリットホライズンの対象外だから転送する。問題は(1)だ。「クライアントのピア」というのは、IBGPピアである。IBGPピアからの経路情報は転送しないのがスプリットホライズンの原則であり、ルートリフレクタのクライアントには例外的に送信する。

だが、非クライアントピアにも転送する、とある。これは、「ルートリフレクタを設定するとそうする」ということなのだろうか?どうやら「ルートリフレクタはクライアントから受信した経路情報はIBGPスプリットホライズンの原則の例外で転送される」ということのようだ。

RFCの登場
5. OperationWhen a route is received by a RR, it selects the best path based onits path selection rule. After the best path is selected, it must dothe following depending on the type of the peer it is receiving thebest path from:1) A Route from a Non-Client peerReflect to all other Clients.2) A Route from a Client peerReflect to all the Non-Client peers and also to theClient peers other than the originator. (Hence theClient peers are not required to be fully meshed).3) Route from an EBGP peerSend to all the Client and Non-Client Peers.

ま、「こう書いてあるからこうなんだ」「やってみたらそうなったからそうなんだ」というのは嫌なんだけど。そういうのが嫌だから勉強してんだけど。まあ、いっか・・・

ピアのアドレスをloopbackにする場合は、マルチホップ扱いになる。ふーん・・・。これはやってみるべきだとは思うが、メンドクサイ・・・。

やってみた。loopbackなんだからupdate sourceも必要である。

BGPのnetworkコマンドはBGPを有効にするinterfaceを指定するのでは、ない。

networkコマンドで経路情報を送信するが、自分自身のルーティングテーブルにない経路情報は送信されない。

as-pathはpushされていく。最後のpathがリストの最上位にある。

(config-router)#bgp default local-preference 200

matchもsetもないルートマップは permit all を意味する。

MED(Multi-Exit-Discriminator)
show ip bgp では Metricと表示される(じゃあMetricと呼べよといいたい)
自ASに入ってくるトラフィックを制御することができる。
optional nontransitive attribute
(config-router)#default-metric xxxで設定する。
低い値が採用される。優先度は6番目で低い。

clear ip bgp * soft in
BGPセッションをリセットさせずに、ピアから受信したルートを一時的にメモリに格納する。

認証
R1(config-router)#neighbor 2.2.2.2 password unkotare

2010/07/21

BSCIの準備

wikiにまとめる。dynamipsでコマンドを確認しつつ。

やっぱり、実機がないと無理だ。少なくとも私は。そして、コマンドを一回打てば、10回読んでも頭に入らないようなことが一瞬で理解できる。

今日はISISをやった。なかなかはかどらない。やる気も起きない。もう試験範囲からはずれることがわかっているプロトコルだ。だが、ISISというプロトコルがあることを知っておくのはいいことだ。もちろん、こんなプロトコルを設定する機会は前回BSCIを取ってから今までなかった。ISISという言葉を聞くことも見ることもなかった。そんなもの覚えてもしょうがない、とほとんどの人が言うだろう。でも、私には意味がある。このプロトコルが試験範囲からはずれ、EIGRPが残るということに、意味がある。

再配送・・・

bgp...

bgpがよくわからない。使ったこともないし。原理的なことはなんとなくわかるのだが、なぜそういう機能が必要なのか、どういう時に使い、どういう時に使わないのか、たとえるとどんなものか、などがピンとこない。それは前回勉強したときも同様で、まあいいやとりあえず覚えちまえ!とやりすごした。しかし最近はそういう力ずくの飲み込みというか暗記が難しくて、いちいち意味と意義が納得できないと受け付けない。

たとえば、IBGPスプリットホライズン、BGP同期、ルートリフレクタ、コンフェデレーション等の機能。これらはどれも、「余計な経路広告をしない」ことを目的としている。単純に考えるとノードが複数接続してネットワークを形成していて、何かの情報を交換しようとしたら、一番確実なのはすべてのノードにもれなく伝えるのが確実である。

しかし、それだと重複がありそうだなというのは想像がつく。OSPFの場合はそれを防ぐためにDRという役割がある。つまり、フラットな組織ではなく階層ができるのである。

BGPにはDRはない。だから、先ほど挙げたようなワザを使って、余計な経路情報の交換をしないようにする。だが、それはBGPプロトコルの欠陥に思えてしまう。欠陥はいいすぎとしても、欠点だ。

そして、前にも書いたけど、黒本は文章が雑だ。文法が間違っているというわけではないが、言葉の使い方が雑で、読みにくい。イライラする。情報が系統だてて書かれていないせいもあるだろうが、読んでいてスっと頭に入ってこない。ギクシャクギクシャクしている。また見つけた。

next-hop-self とか。あと update-sourceとか。どうもbgpはインテリジェントじゃない感じがする。非常に単純なプロトコルで、その単純さゆえの不都合をいろんなオプションで対応させている。egpなので、そんなに大きなトポロジ変化はなく、ASごとにまとめた情報をごっそりやり取りするので、コンバージェンスとか拡張性とかをあまり意識しないでもいいのではないだろうか、と、得意の何の根拠もない推測。