web-dev-qa-db-ja.com

freebsdでopenbgpdを使用しながらアウトバウンドトラフィックをロードバランシングする

私は2つのISP接続を持つfreeBSDでopenbgpdを使用しています。私は自分のAS番号と/ 22ネットワークを持っています。現在、私は/ 22全体を両方のネットワークに宣伝しています。インバウンドトラフィックが入りますが、私のアウトバウンドトラフィックは単一のリンクを経由します。

アウトバウンドトラフィックも負荷分散されるように、両方のリンクを介してアウトバウンドトラフィックを分散したいと思います。

Freebsdでopenbgpdを使用してこれを設定するにはどうすればよいですか?

私の現在のopenbgpd設定は参照用に添付されています。

AS 00my-as
listen on xx.xx.xx.x
router-id xx.xx.xx.x
network aa.aa.aa.0/22
group "ISP1" {
  remote-as 11remoteas-1
  neighbor bb.bb.bb.1 {
   descr "ISP1"
   announce all  
  }
}
group "ISP2" {
  remote-as 22remoteas-2
  neighbor cc.cc.cc.37 {
   descr "ISP2"
   announce all  
  }
}
deny from any
deny to any
allow from bb.bb.bb.1
allow to bb.bb.bb.1
allow from cc.cc.cc.37
allow to cc.cc.cc.37
8
Rajkumar S

私は何年もopenbgpdを使用していないので、構成に適用できる理論をいくつか紹介します。

プロバイダーはあなたにルートを送ることができます。通常、「デフォルト」、「顧客」、または「フル」を送信します。デフォルトルートは、0.0.0.0/0がアナウンスされ、それらを介して0.0.0.0/0(任意のIP)に到達することを知っているというものです。あなたの状況では、両方のプロバイダーがデフォルトルートを渡しているように聞こえます。おそらく、ASNが低い方がすべてのトラフィックを取得しています(パケットが複数の宛先に送信でき、ASパスが等しい場合、ASNはタイブレーカーです)長さなど)。

「顧客」フィードでは、直接接続されているすべてのルートをアナウンスします。 Level3のようなプロバイダーがある場合、このフィードを介してインターネットの半分が表示される可能性があります。他のプロバイダーのASNが低い場合、ピアに直接接続されていないトラフィックを取得して、顧客ルートをアナウンスします。

「完全な」フィードには、直接接続されているサイトだけでなく、プロバイダーがアクセス方法を知っているすべてのサイトのルートアナウンスが含まれます。

次のようなことができるはずです。

show ip bgp summary(IOSコマンド)

どこかで受信したプレフィックスの数をリストする必要があります。

既存のプロバイダーの両方がデフォルトルートを送信している場合、接続は現在フェイルオーバー用に設定されています。プロバイダーAがダウンした後、プロバイダーBにルーティングします。デフォルトルートとともに両方からカスタマーフィードを取得すると、トラフィックは、指定されたアドレスに到達するための最短のASpathを持つプロバイダーに流れ、デフォルトにフォールバックします。アドレスが見つからなかった場合はルーティングします。両方から完全なフィードを取得した場合、プロバイダー間の重複に応じて、それぞれへの「最適な」パスからトラフィックを送信します。

ボーダールーターの1つで、310540のアクティブなルートを表示し、十分なRAMがあり、完全なルートを使用する場合は両方のプロバイダーからのルートを処理するようにマシンを構成していることを確認します。快適になるまで両方からカスタマールートを取得するか、2つのうちの小さいプロバイダーからカスタマールートを取得して、状況がどのように変化するかを確認します。

これでも、トラフィックに応じて「負荷分散」したり、トラフィックを均等に分割したりすることはできません。 1つのプロバイダーが依然としてトラフィックの大部分を占めていることに気付くかもしれません。この時点で、トラフィックを調整して1つのピアまたは他のピアを優先するように、プレフィックス/ルートマップを実行する必要があります。

トラフィックをシフトするためにルートマップまたはASNマッチを設定した後、宛先サイトがダウンし、それらのルートがそのプロバイダーから削除された場合でも、ルーターはトラフィックを他の接続に送信します。 BGPはやや自己回復します。

私たちが行ったことは、ASNに基づいて一致するいくつかのマップが定義されていることです。

PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH

ジュニパーは、コミュニティを使用するよりもこれを簡単にしますが、どちらでもかまいません。

プレフィックスリストは、宛先が特定のASNであるかどうかを確認し、そうである場合は、_TOマップを通過します。 ASNが_THROUGHにリストされている場合、そのプロバイダーが優先されます。プロバイダーの1つがAT&Tに直接接続しているため、PROVIDER_B_THROUGHは7018 | 7019(および他のいくつかのASN)と一致し、AT&TトラフィックはデフォルトでプロバイダーBになります。AT&Tは両方から到達可能ですが、プロバイダーBを介して送信することをお勧めします。 。

Openbgpdにも同様の方法があると思います。

2
deleted

BGPは負荷分散プロトコルではありません。

繰り返しになりますが、BGPは[〜#〜] not [〜#〜]負荷分散プロトコルです。

[〜#〜] all [〜#〜]トラフィックが単一の接続から出る場合、私の最初の推測は、完全なフィードを取得していないことです。無視されているプロバイダーから。ルーティングは、より具体的なルートが優先されるようになっているため、プロバイダーaに向かう192.168.0.0/23のルートと、プロバイダーbに向かう192.168.0.0/24と192.168.1.0/24の2つのルートがある場合、プロバイダーaは完全に無視されます。私はOpenBGPに精通していません。ですから、見ずにいくつかのことを確認する方法の詳細をあなたに伝えることはできません。ただし、最初に行う必要があるのは、[〜#〜] both [〜#〜]プロバイダーがデフォルトルートだけでなく完全なフィードを提供していることを検証することです。

その場合は、アウトバウンドトラフィックのルートプリファレンスとインバウンドトラフィックのパスパディングを調べる必要があります。変更の有効性を判断するのに十分な大きさのデータセットがあることを確認するために、構成の変更の間に24〜48時間待つようにしてください。

3
Richard June

橋を架ける。 Freebsdは、実際には現在のプレフィックスのアップストリーム機能で負荷分散を行い、非常にうまく負荷分散します。 BGPはしません。両方のアップストリームISPをインストールし、/ 22ごとに両方のISPにアナウンスすることができ、/ 30 wanプレフィックスを拒否する可能性がありますが、iBGPはそれを取得します。 iBGPはブリッジ上で正常に動作するため、OSPFは実際には必要ありません。これで、ロードバランサーと完全に冗長なBGPセットアップができました。私たちはいくつかを持っており、インターネットへのギグリンクでそれらを愛しています。

1
Noah Case

最初に確認するのは、両方のBGPセッションが実際に機能しているかどうかです。使用する

bgpctl show summary

また、両方のピアとメッセージを交換しているかどうかを確認してください。

また、ピアにトラフィックをルーティングさせたくない場合を除いて、「すべてアナウンス」を削除する必要があります。これは通常、逆です。

アナウンスをすべて削除すれば大丈夫です。

1
Bruno Mairlot