ハブアンドスポーク方式VPN
ハブアンドスポーク VPN トポロジーの設定:1 つのインターフェイス
1 つのインターフェイス構成を使用して、ハブまたはハブからのデフォルト ルートをアドバタイズします。
を持つハブアンドスポーク型 VPN トポロジーの例
図 1 は、ハブ CE(CE1)とハブ PE(PE1)の間に 1 つのインターフェイスしかないレイヤー 3 VPN ハブアンドスポーク アプリケーションを示しています。これは、ハブアンドスポーク トポロジーを構成する場合に推奨される方法です。
この構成では、デフォルト ルートがハブからスポークにアドバタイズされます。より具体的なスポークCEルートをスポークCEルータ間で交換する必要がある場合は、ハブCEとハブPEの間に2つのインターフェイスが必要になります。2 インターフェイスの例については、 ハブアンドスポーク VPN トポロジーの設定:2 つのインターフェイス を参照してください。
この設定例では、スポーク ルートの分配は次のとおりです。
-
スポークCE2は、スポークPE2にそのルートをアドバタイズします。
-
スポークPE2は、CE2からのルートをVPNルーティングおよび転送(VRF)テーブルにインストールします。
-
スポークPE2は、VRFエクスポートポリシーを確認し、ルートターゲットコミュニティを追加し、ハブPE1にルートを通知します。
-
ハブPE1は、VRFインポートポリシーを確認し、インポートポリシーに一致するルートをテーブルbgp.l3vpn.0にインストールします。
-
ハブPE1は、テーブルbgp.l3vpn.0からハブVRFテーブルにルートをインストールします。
-
ハブPE1は、ハブVRFテーブルからハブCE1へのルートをアナウンスします。
この設定例では、デフォルトのルート配信は次のとおりです。
-
ハブCE1は、ハブPE1へのデフォルトルートをアナウンスします。
-
ハブ PE1 は、ハブ VRF テーブルにデフォルト ルートをインストールします。
-
ハブPE1は、VRFエクスポートポリシーを確認し、ルートターゲットコミュニティを追加し、スポークPE2とPE3にデフォルトルートを通知します。
-
スポーク PE2 と PE3 は VRF インポート ポリシーを確認し、デフォルト ルートをテーブル bgp.l3vpn.0 にインストールします。
-
スポーク PE2 と PE3 は、テーブル bgp.l3vpn.0 からのルートをスポーク VRF テーブルにインストールします。
-
スポークPE2とPE3は、スポークVRFテーブルからスポークCE2とCE3へのデフォルトルートをアナウンスします。
以下のセクションでは、 図 1 に示したトポロジに基づいて、1 つのインターフェイスを持つハブアンドスポーク トポロジーを設定する方法について説明します。
ハブCE1の設定
ハブCE1を次のように設定します。
[edit routing-options]
static {
route 0.0.0.0/0 discard;
}
autonomous-system 100;
[edit protocols]
bgp {
group hub {
type external;
export default;
peer-as 200;
neighbor 10.49.4.1;
}
}
[edit policy-options]
policy-statement default {
term 1 {
from {
protocol static;
route-filter 0.0.0.0/0 exact;
}
then accept;
}
term 2 {
then reject;
}
}
ハブPE1の設定
ハブPE1を次のように設定します。
[edit]
routing-instances {
hub {
instance-type vrf;
interface t3-0/0/0;
route-distinguisher 10.255.14.176:2;
vrf-target {
import target:200:100;
export target:200:101;
}
protocols {
bgp {
group hub {
type external;
peer-as 100;
as-override;
neighbor 10.49.4.2;
}
}
}
}
}
P ルーターの設定
P ルーターを次のように設定します。
[edit]
interfaces {
t3-0/1/1 {
unit 0 {
family inet {
address 10.49.2.1/30;
}
family mpls;
}
}
t3-0/1/3 {
unit 0 {
family inet {
address 10.49.0.2/30;
}
family mpls;
}
}
t1-0/2/0 {
unit 0 {
family inet {
address 10.49.1.2/30;
}
family mpls;
}
}
}
[edit]
protocols {
ospf {
area 0.0.0.0 {
interface t3-0/1/3.0;
interface t1-0/2/0.0;
interface t3-0/1/1.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/1/1.0;
interface t3-0/1/3.0;
interface t1-0/2/0.0;
}
}
スポーク PE2 の設定
スポークPE2を次のように設定します。
[edit]
interfaces {
t3-0/0/0 {
unit 0 {
family inet {
address 10.49.0.1/30;
}
family mpls;
}
}
t1-0/1/2 {
unit 0 {
family inet {
address 10.49.3.1/30;
}
}
}
}
[edit protocols]
bgp {
group ibgp {
type internal;
local-address 10.255.14.182;
peer-as 200;
neighbor 10.255.14.176 {
family inet-vpn {
unicast;
}
}
}
}
ospf {
area 0.0.0.0 {
interface t3-0/0/0.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/0/0.0;
}
[edit]
routing-instances {
spoke {
instance-type vrf;
interface t1-0/1/2.0;
route-distinguisher 10.255.14.182:20;
vrf-target {
import target:200:101;
export target:200:100;
}
protocols {
bgp {
group spoke {
type external;
peer-as 100;
as-override;
neighbor 10.49.3.2;
}
}
}
}
}
スポークPE3の設定
スポーク PE3 を次のように設定します。
[edit]
interfaces {
t3-0/0/0 {
unit 0 {
family inet {
address 10.49.6.1/30;
}
}
}
t3-0/0/1 {
unit 0 {
family inet {
address 10.49.2.2/30;
}
family mpls;
}
}
}
[edit protocols}
bgp {
group ibgp {
type internal;
local-address 10.255.14.178;
peer-as 200;
neighbor 10.255.14.176 {
family inet-vpn {
unicast;
}
}
}
}
ospf {
area 0.0.0.0 {
interface t3-0/0/1.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/0/1.0;
}
[edit]
routing-instances {
spoke {
instance-type vrf;
interface t3-0/0/0.0;
route-distinguisher 10.255.14.178:30;
vrf-target {
import target:200:101;
export target:200:100;
}
protocols {
bgp {
group spoke {
type external;
peer-as 100;
as-override;
neighbor 10.49.6.2;
}
}
}
}
}
スポーク CE2 の設定
スポークCE2を次のように設定します。
[edit routing-options]
autonomous-system 100;
{edit protocols]
bgp {
group spoke {
type external;
export loopback;
peer-as 200;
neighbor 10.49.3.1;
}
}
スポーク CE3 の設定
スポークCE3を次のように設定します。
[edit routing-options]
autonomous-system 100;
[edit protocols]
bgp {
group spoke {
type external;
export loopback;
peer-as 200;
neighbor 10.49.6.1;
}
}
この設定例では、スポークCE2とハブCE1の間のトラフィック転送は次のようになります。
-
スポークCE2は、BGPを介してスポークPE2から学習したデフォルトルートを使用してトラフィックを転送します。
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
スポークPE2は、スポークVRFテーブルでルート検索を実行し、BGPで学習したデフォルトルートを使用して、トラフィックをハブPE1に(Pルーターを介して、PE2は2つのラベルをプッシュ)転送します。
0.0.0.0/0 *[BGP/170] 01:35:45, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/1.0, Push 100336, Push 100224(top) -
ハブPE1は、vpnラベル
100336のmpls.0テーブルでルート検索を行います。100336 *[VPN/170] 01:37:03 > to 10.49.4.2 via t3-0/0/0.0, Pop -
ハブPE1は、インターフェイス
t3-0/0/0.0からハブCE1にトラフィックを転送します。
この設定例では、ハブCE1とスポークCE2の間でトラフィック転送は次のようになります。
-
ハブCE1は、BGPで学習したルートを使用して、ハブPE1にトラフィックを転送します。
10.49.10.250/32 *[BGP/170] 02:28:46, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
ハブPE1は、ハブVRFテーブルでルート検索を行い、トラフィックをスポークPE2に転送します(Pルーターを介して、PE1は2つのラベルをプッシュします)。
10.49.10.250/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.182 AS path: 100 I > via t1-0/1/0.0, Push 100352, Push 100208(top) -
スポーク PE2 は、vpn ラベル
100352の mpls.0 テーブルでルート ルックアップを行います。100352 *[VPN/170] 02:31:39 > to 10.49.3.2 via t1-0/1/2.0, Pop -
スポークPE2は、インターフェイス
t1-0/1/2.0からスポークCE2にトラフィックを転送します。
この設定例では、スポークCE2とスポークCE3の間でトラフィック転送が行われます:
-
スポークCE2は、BGPを介してスポークPE2から学習したデフォルトルートを使用してトラフィックを転送します。
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
スポークPE2は、スポークVRFテーブルでルート検索を行い、BGPで学習したデフォルトルートを使用して、トラフィックをハブPE1に(Pルーターを介して、PE2は2つのラベルをプッシュ)転送します。
0.0.0.0/0 *[BGP/170] 01:35:45, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/1.0, Push 100336, Push 100224(top) -
ハブPE1は、VPNラベル
100336のmpls.0テーブルでルート検索を行います。100336 *[VPN/170] 01:37:03 > to 10.49.4.2 via t3-0/0/0.0, Pop -
ハブPE1は、インターフェイス
t3-0/0/0.0からハブCE1にトラフィックを転送します。 -
ハブCE1は、BGPで学習したルーターを使用して、ハブPE1へトラフィックを転送します。
10.49.10.253/32 *[BGP/170] 02:40:03, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
ハブPE1は、ハブVRFテーブルでルート検索を行い、トラフィックをスポークPE3に転送します(Pルーターを介して、PE1は2つのラベルをプッシュします)。
10.49.10.253/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.178 AS path: 100 I > via t1-0/1/0.0, Push 100128, Push 100192(top) -
スポーク PE3 は、VPN ラベル
100128の mpls.0 テーブルでルート ルックアップを行います。100128 *[VPN/170] 02:41:30 > to 10.49.6.2 via t3-0/0/0.0, Pop -
スポークPE3は、インターフェイス
t3-0/0/0.0からスポークCE3にトラフィックを転送します。
ハブ VRF ルーティングテーブルでの IP 転送ルックアップを必要とする出力機能がハブ PE で必要な場合は、 ハブ PE ルーターでの出力機能の有効化を参照してください。
ハブPEルーターでのエグレス機能の有効化
この例は、「 ハブアンドスポーク VPN トポロジーの設定:1 つのインターフェイス」と併せて提供されます。この例では、 図 1 に示すトポロジーも使用しています。
ハブ VRF ルーティングテーブルでの IP 転送ルックアップを必要とする出力機能がハブ PE で必要な場合、 ハブアンドスポーク VPN トポロジーの設定で 詳述されている設定: 1 つのインターフェイスは機能しません。ハブルーティング インスタンスに vrf-table-label ステートメントを適用すると、リモートスポークPEからのトラフィックがハブPEに転送され、IPルックアップが強制的に実行されます。特定のスポーク ルートはハブ VRF テーブルにあるため、トラフィックはハブ CE を介さずにスポーク PE に転送されます。
ハブPEは、VPNラベル1028を使用して、次のようにデフォルトルートをアドバタイズします。
hub.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
* 0.0.0.0/0 (1 entry, 1 announced)
BGP group ibgp type Internal
Route Distinguisher: 10.255.14.176:2
VPN Label: 1028
Nexthop: Self
Localpref: 100
AS path: 100 I
Communities: target:200:101
受信トラフィックは、VPN ラベル 1028 を使用して転送されます。mpls.0 テーブルは、テーブル hub.inet.0 での IP ルックアップが必要であることを示しています。
1028 *[VPN/0] 00:00:27
to table hub.inet.0, Pop
ただし、ハブ VRF テーブル hub.inet.0 には、特定のスポーク ルートが含まれています。
10.49.10.250/32 *[BGP/170] 00:00:05, localpref 100, from 10.255.14.182
AS path: 100 I
> via t1-0/1/0.0, Push 100352, Push 100208(top)
10.49.10.253/32 *[BGP/170] 00:00:05, localpref 100, from 10.255.14.178
AS path: 100 I
> via t1-0/1/0.0, Push 100128, Push 100192(top)
このため、トラフィックはハブCEを介さずに直接スポークPEに転送されます。これを防ぐには、ハブPE1でダウンストリームトラフィックのセカンダリルーティング インスタンスを設定する必要があります。
ハブPE1の設定
ハブPE1を次のように設定します。
[edit]
routing-instances {
hub {
instance-type vrf;
interface t3-0/0/0.0;
route-distinguisher 10.255.14.176:2;
vrf-target {
import target:200:100;
export target:200:101;
}
no-vrf-advertise;
routing-options {
auto-export;
}
protocols {
bgp {
group hub {
type external;
peer-as 100;
as-override;
neighbor 10.49.4.2;
}
}
}
}
hub-downstream {
instance-type vrf;
route-guisher 10.255.14.176:3;
vrf-target target:200:101;
vrf-table-label;
routing-options {
auto-export;
}
}
}
[edit routing-instances hub]階層レベルで no-vrf-advertise ステートメントを使用する場合、ルーティングテーブル グループや VRF エクスポート ポリシーは必要ありません。no-vrf-advertiseステートメントは、ハブPEがプライマリルーティングインスタンスhubからVPNルートをアドバタイズしないように設定します。これらのルートは、代わりにセカンダリルーティング インスタンスhub_downstreamからアドバタイズされます。no-vrf-advertise ステートメントの詳細についてはJunos OSルーティングプロトコルライブラリを参照してください。
[edit routing-instances hub-downstream routing-options]階層レベルのauto-exportステートメントは、各ルーティング インスタンスに定義されたルートターゲットを見ることで、ハブインスタンスからハブダウンストリームインスタンスにエクスポートされたルートを識別します。auto-export ステートメントの使用についての詳細はJunos OSルーティングプロトコルライブラリを参照してください。エクスポートポリシーのその他の例については、自動ルートエクスポートを使用した重複VPNの設定を参照してください。
ハブPEでのこの設定では、スポークツースポークCEトラフィックはハブCEを通過し、ハブPEでエグレス機能(フィルタリングなど)を有効にすることができます。
この設定例では、スポークCE2とスポークCE3の間でトラフィック転送が行われます:
-
スポークCE2は、BGPを介してスポークPE2から学習したデフォルトルートを使用してトラフィックを転送します。
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
スポークPE2は、スポークVRFテーブルでルート検索を行い、BGPで学習したデフォルトルートを使用して、トラフィックをハブPE1に(Pルーターを介して、PE2は2つのラベルをプッシュ)転送します。
spoke.inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[BGP/170] 00:00:09, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/0.0, Push 1029, Push 100224(top) -
ハブPE1は、VPNラベル
1029のmpls.0テーブルでルート検索を行います。mpls.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 1029 *[VPN/0] 00:11:49 to table hub_downstream.inet.0, PopVPNラベル
1029は、以下の理由でアドバタイズされます。-
vrf-table-labelステートメントは、ハブPE1設定の[edit routing-instances hub_downsteam]階層レベルで適用されます。 -
no-vrf-advertiseステートメントは、[edit routing-instances hub]階層レベルで適用され、ルーターにセカンダリテーブルからのルートをアドバタイズするように指示します。
したがって、IPルックアップはhub.inet.0テーブルではなく、hub_downstream.inet.0テーブルで実行されます。
ハブ PE でスポーク PE に
show route advertising-protocolコマンドを発行し、VPN ラベル1029アドバタイズメントを確認します。user@host> show route advertising-protocol hub_downstream.inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) * 0.0.0.0/0 (1 entry, 1 announced) BGP group ibgp type Internal Route Distinguisher: 10.255.14.176:3 VPN Label: 1029 Nexthop: Self Localpref: 100 AS path: 100 I Communities: target:200:101 -
-
ハブPE1は、
hub_downstream.inet.0テーブルでIPルックアップを実行し、トラフィックアウトインターフェイスt3-0/0/0.0ハブCE1に転送します。hub_downstream.inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) 0.0.0.0/0 (1 entry, 1 announced) *BGP Preference: 170/-101 Next-hop reference count: 4 Source: 10.49.4.2 Next hop: 10.49.4.2 via t3-0/0/0.0, selected State: <Secondary Active Ext> Peer AS: 100 Age: 3:03 Task: BGP_100.10.49.4.2+1707 Announcement bits (2): 0-KRT 2-BGP.0.0.0.0+179 AS path: 100 I Communities: target:200:101 Localpref: 100 Router ID: 10.49.10.251 Primary Routing Table hub.inet.0プライマリルーティングテーブルは
hub.inet.0で、ハブPE1設定の[edit routing-instances hub]階層レベルでのno-vrf-advertiseステートメントと[edit routing-instances hub-downstream routing-options]階層レベルでのauto-exportステートメントの結果として、このルートがテーブルhub.inet.0からこのhub_downstream.inet.0テーブルにエクスポートされたことを示しています。 -
ハブCE1は、BGPで学習したルーターを使用して、トラフィックをハブPE1に転送します。
10.49.10.253/32 *[BGP/170] 02:40:03, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
ハブPE1は、ハブVRFテーブルでルート検索を実行し、トラフィックをスポークPE3に転送します(Pルーターを介して、PE1は2つのラベルをプッシュします)。
10.49.10.253/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.178 AS path: 100 I > via t1-0/1/0.0, Push 100128, Push 100192(top) -
スポーク PE3 は、VPN ラベル
100128の mpls.0 テーブルでルート検索を実行します。100128 *[VPN/170] 02:41:30 > to 10.49.6.2 via t3-0/0/0.0, Pop -
スポーク PE3 は、インターフェイス
t3-0/0/0.0からスポーク CE3 にトラフィックを転送します。
ハブアンドスポーク VPN トポロジーの設定:2 つのインターフェイス
2インターフェイス構成を使用して、スポークからスポークにルートを伝達します。
このセクションの例では、次のコンポーネントを使用して、2 つのインターフェイスを持つハブアンドスポーク トポロジーを構成します( 図 2 を参照)。
-
1 つのハブ PE ルーター(ルーター D)。
-
ハブ PE ルーターに接続された 1 つのハブ CE ルーター。このハブアンドスポーク方式 VPN トポロジーが適切に機能するためには、ハブ PE ルーターをハブ CE ルーターに接続するインターフェイスが 2 つ存在し、各インターフェイスが PE ルーター上に独自の VRF テーブルを持っている必要があります。
-
最初のインターフェイス(ここでは、インターフェイスge-0/0/0.0)は、ハブCEルーターにスポークルートを通知するために使用されます。このインターフェイスに関連付けられた VRF テーブルには、スポーク PE ルーターがハブ CE ルーターに通知するルートが含まれています。
-
2番目のインターフェイス(ここでは、インターフェイスge-0/0/1.0)は、ハブアンドスポークルーター宛てのルートアナウンスをハブCEから受信するために使用されます。このインターフェイスに関連付けられた VRF テーブルには、ハブ CE ルーターがスポーク PE ルーターに通知したルートが含まれています。この例では、2 つの個別の物理インターフェイスが使用されています。また、ハブPEルーターとハブCEルーターの間で同じ物理インターフェイスを共有する2つの独立した論理インターフェイスを設定する場合にも機能します。
-
-
2 つのスポーク PE ルーター(ルーター E とルーター F)。
-
2 つのスポーク CE ルーター(CE1 と CE2)。各スポーク PE ルーターに 1 つずつ接続。
-
シグナリングプロトコルとしてのLDP。
この設定では、スポークCEルーターCEからのルート配信は以下のように行われます。
-
スポークルーターCE1は、スポークPEルーターEへのルートをアナウンスします。
-
ルータ E は、CE1 からのルートを VRF テーブルにインストールします。
-
ルーターEは、VRFエクスポートポリシーを確認した後、ポリシーを通過したルーターCE1からのルートにスポークターゲットコミュニティを追加し、ハブPEルーターであるルーターDに通知します。
-
ルーター D は、インターフェイス ge-0/0/0.0 に関連付けられた VRF インポート ポリシーを確認し、ポリシーに一致するスポーク PE ルーターからのすべてのルートを bgp.l3vpn ルーティングテーブルに配置します。(一致しないルートは破棄されます。
-
ルーター D は、インターフェイス ge-0/0/0.0 に関連付けられた VRF インポート ポリシーを確認し、一致するすべてのルートをスポーク VRF テーブルにインストールします。ルートは、スポークターゲットコミュニティとともにインストールされます。
-
ルーター D は、インターフェイス ge-0/0/0 上でハブ CE へのルートをアナウンスします。
-
ハブCEルーターは、ハブルーターへの2番目のインターフェイスであるインターフェイスge-0/0/1を介して、ハブPEルーターDに戻るルートをアナウンスします。
-
ハブ PE ルーターは、ハブ CE ルーターから学習したルートを、インターフェイス ge-0/0/1 に関連付けられたハブ VRF テーブルにインストールします。
-
ハブ PE ルーターは、インターフェイス ge-0/0/1.0 に関連付けられた VRF エクスポート ポリシーを確認し、ハブ ターゲット コミュニティを追加した後、すべてのスポークに一致するすべてのルートを通知します。
図3は、このスポークルーターからもう一方のスポークCEルーターであるルーターCE2にルートがどのように分配されるかを示しています。ルーターCE1からルーターCE2へtracerouteコマンドを発行した場合も、同じパスをたどります。
この例の最後のセクション「 ルーター別に要約されたハブアンドスポーク VPN 設定」では、 図 2 に示す各サービス プロバイダー ルーターの VPN 機能を設定するために必要なステートメントをまとめたものです。
以下のセクションでは、ハブアンドスポーク PE ルーターでハブアンドスポーク トポロジーの VPN 機能を設定する方法について説明します。CE ルータには VPN に関する情報がないため、通常どおり設定します。
- ハブアンドスポーク方式 PE ルーターでの IGP の有効化
- ハブアンドスポーク PE ルーターでの LDP の設定
- PE ルーターでの IBGP の設定
- ハブアンドスポーク PE ルーターでの VPN ルーティング インスタンスの設定
- PE ルーターでの VPN ポリシーの設定
- ルーター別に要約されたハブアンドスポークVPN設定
ハブアンドスポーク方式 PE ルーターでの IGP の有効化
ハブアンドスポーク方式の PE ルーターがルーティング情報を交換できるようにするには、これらすべてのルーターで IGP を設定するか、スタティック ルートを設定する必要があります。IGPは、ルーティング インスタンス内(つまり、[edit routing-instances]階層レベルではなく)ではなく、ルーティングプロトコルプロセス(rpd)のプライマリインスタンス(つまり、[edit protocols]階層レベル)で設定します。
IGP は標準的な方法で設定します。この設定例には、設定のこの部分は含まれていません。
ハブアンドスポーク トポロジーのルート配布で、ハブ サイトの CE ルーターと PE ルーター間で使用されるプロトコルが BGP の場合、ハブ CE ルーターは、ハブ PE ルーターおよびスポーク ルーターから受信したすべてのルートを、ハブ PE ルーターおよびすべてのスポーク ルーターにアナウンスします。これは、ハブアンドスポークPEルーターがAS番号を含むルートを受信することを意味します。通常、ルートにこの情報が含まれている場合、ルーティングループが発生し、ルーターがルートを拒否したことを示しています。ただし、vpn 構成が機能するためには、ハブ PE ルーターとスポーク ルーターがこれらのルートを受け入れる必要があります。これを有効にするには、ハブPEルーターとすべてのスポークルーターの[edit routing-options]階層レベルでASを設定するときに、loopsオプションを含めます。この構成例では、値 1 を指定します。0 から 10 までの数値を指定できます。
[edit routing-options] autonomous-system as-number loops 1;
ハブアンドスポーク PE ルーターでの LDP の設定
VPN に参加するハブアンドスポーク方式 PE ルーター間のインターフェイスで LDP を設定します。
ハブ PE ルーター D で、LDP を設定します。
[edit protocols]
ldp {
interface so-1/0/0.0;
interface t3-1/1/0.0;
}
スポーク PE ルーター E で、LDP を設定します。
[edit protocols]
ldp {
interface fe-0/1/2.0;
}
スポークPEルータールーターFで、LDPを設定します。
[edit protocols]
ldp {
interface fe-1/0/0.0;
}
PE ルーターでの IBGP の設定
ハブアンドスポーク PE ルーターで、以下のプロパティを使用して IBGP セッションを設定します。
-
VPNファミリー—IBGPセッションがVPN用であることを示すには、
family inet-vpnステートメントを含めます。 -
ループバックアドレス—ローカルPEルーターのループバックアドレスを指定する
local-addressステートメントを含めます。VPN の IBGP セッションは、ループバック アドレスを介して実行されます。また、[edit interfaces]階層レベルでlo0インターフェイスを設定する必要があります。この例では、ルーターの設定のこの部分は含まれていません。 -
ネイバーアドレス—
neighborステートメントを含めます。ハブ ルーターでは、各スポーク PE ルーターの IP アドレスを指定し、スポーク ルーターでは、ハブ PE ルーターのアドレスを指定します。
ハブ ルーターでは、各スポークとの IBGP セッションを設定し、各スポーク ルーターでは、ハブとの IBGP セッションを設定します。2つのスポークルーター間にIBGPセッションはありません。
ハブルーターDで、IBGPを設定します。最初の neighbor ステートメントは、スポーク ルーター E への IBGP セッションを設定し、2 番目のステートメントは、スポーク ルーター F へのセッションを設定します。
[edit protocols]
bgp {
group Hub-to-Spokes {
type internal;
local-address 10.255.14.174;
family inet-vpn {
unicast;
}
neighbor 10.255.14.180;
neighbor 10.255.14.182;
}
}
スポークルーターEで、ハブルーターへのIBGPセッションを設定します。
[edit protocols]
bgp {
group Spoke-E-to-Hub {
type internal;
local-address 10.255.14.180;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
スポークルーターFで、ハブルーターへのIBGPセッションを設定します。
[edit protocols]
bgp {
group Spoke-F-to-Hub {
type internal;
local-address 10.255.14.182;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
ハブアンドスポーク PE ルーターでの VPN ルーティング インスタンスの設定
ハブ PE ルーターがスポーク PE ルーターに着信するパケットと発信するパケットを区別できるようにするには、2 つのルーティング インスタンスで設定する必要があります。
-
1つのルーティング インスタンス(この例では
Spokes-to-Hub-CE)は、ハブPEルーターからハブCEルーターにパケットを伝送するインターフェイス(この例ではインターフェイスge-0/0/0.0)に関連付けられています。そのVRFテーブルには、スポークPEルーターとハブPEルーターからハブCEルーターに通知されるルートが含まれています。 -
2 番目のルーティング インスタンス(この例では
Hub-CE-to-Spokes)は、ハブ CE ルーターからハブ PE ルーターにパケットを伝送するインターフェイス(この例ではインターフェイスge-0/0/1.0)に関連付けられています。その VRF テーブルには、ハブ CE ルーターからハブアンドスポーク PE ルーターに通知されるルートが含まれています。
各スポーク ルーターで、1 つのルーティング インスタンスを設定する必要があります。
ルーティング インスタンスで以下を定義する必要があります。
-
ルート識別子は、ある VPN のアドレスを別の VPN のアドレスと区別するために使用されます。
-
PE ルーター上に VRF テーブルを作成する
vrfのインスタンスタイプ。 -
VPN の一部であり、PE ルーターを CE ルーターに接続するインターフェイス。
-
VRF インポートおよびエクスポート ポリシー。どちらのインポートポリシーにも、コミュニティへの参照を含める必要があります。そうしないと、設定のコミットを試みると、コミットが失敗します。(ただし、インポートポリシーに
then rejectステートメントしか含まれていない場合は例外です。VRF エクスポート ポリシーでは、スポーク PE ルーターはスポーク ターゲット コミュニティをアタッチします。 -
PE ルーターと CE ルーター間のルーティング。PE ルーターが接続された CE ルーターとの間で VPN 関連のルートを配信するために必要です。ルーティングプロトコル(BGP、OSPF、またはRIP)を設定することも、スタティックルーティングを設定することもできます。
ハブアンドスポークトポロジーの場合、ハブCEルーター上の各ルーティング インスタンスで異なるポリシーを設定する必要があります。ハブ PE ルーターからハブ CE ルーターにパケットを伝送するインターフェイス(この例では Spokes-to-Hub-CE)に関連付けられたルーティング インスタンスでは、インポート ポリシーは、ハブアンドスポーク PE ルーター間の IBGP セッションで受信したすべてのルートを受け入れる必要があり、エクスポート ポリシーは、ハブ CE ルーターから受信したすべてのルートを拒否する必要があります。ハブ CE ルーターからハブ PE ルーターにパケットを伝送するインターフェイスに関連付けられたルーティング インスタンス(この例では Hub-CE-to-Spokes)では、インポート ポリシーはスポーク PE ルーターから受信したすべてのルートを拒否し、エクスポート ポリシーはすべてのスポーク ルーターにエクスポートする必要があります。
ハブPEルーターDでは、以下のルーティングインスタンスを設定します。ルーターDは、OSPFを使用してハブCEルーターとのルートを配信します。
[edit]
routing-instance {
Spokes-to-Hub-CE {
instance-type vrf;
interface ge-0/0/0.0;
route-distinguisher 10.255.1.174:65535;
vrf-import spoke;
vrf-export null;
protocols {
ospf {
domain-id disable;
export redistribute-vpn;
domain-vpn-tag 0;
area 0.0.0.0 {
interface ge-0/0/0;
}
}
}
}
Hub-CE-to-Spokes {
instance-type vrf;
interface ge-0/0/1.0;
route-distinguisher 10.255.1.174:65534;
vrf-import null;
vrf-export hub;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/1.0;
}
}
}
}
}
スポークPEルーターEで、以下のルーティングインスタンスを設定します。ルーターEは、OSPFを使用して、スポークCEルーターCE1との間でルートを配布します。
[edit]
routing-instance {
Spoke-E-to-Hub {
instance-type vrf;
interface fe-0/1/0.0;
route-distinguisher 10.255.14.80:65035;
vrf-import hub;
vrf-export spoke;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-0/1/0.0;
}
}
}
}
}
スポークPEルーターFでは、以下のルーティングインスタンスを設定します。ルーターFは、OSPFを使用して、スポークCEルーターCE2との間でルートを配布します。
[edit]
routing-instance {
Spoke-F-to-Hub {
instance-type vrf;
interface fe-1/0/1.0;
route-distinguisher 10.255.14.182:65135;
vrf-import hub;
vrf-export spoke;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-1/0/1.0;
}
}
}
}
}
PE ルーターでの VPN ポリシーの設定
各ハブアンドスポーク型 PE ルーターで VPN インポートおよびエクスポート ポリシーを設定して、各 VPN 内でパケットを転送するために使用する VRF テーブルに適切なルートをインストールする必要があります。
スポークルーターでは、ハブルーターとルートを交換するためのポリシーを定義します。
ハブ ルーターでは、スポーク PE ルーターからルートを受け入れてハブ CE ルーターに配信する(またはその逆を行う)ポリシーを定義します。ハブ PE ルーターには、2 つの VRF テーブルがあります。
-
スポークツーハブ VRF テーブル — スポーク ルーターから受信したルートを処理し、これらのルートをハブ CE ルーターにアナウンスします。この VRF テーブルでは、インポート ポリシーで、スポーク ターゲット名が存在すること、およびハブ PE とスポーク PE ルーター間の IBGP セッションからルートを受信したことを確認する必要があります。この VRF テーブルはルートをエクスポートしてはならないため、そのエクスポート ポリシーはすべてを拒否する必要があります。
-
ハブツースポーク VRF テーブル — ハブ CE ルーターから受信したルートを処理し、スポーク ルーターにアナウンスします。この VRF テーブルでは、エクスポート ポリシーでハブ ターゲット コミュニティを追加する必要があります。この VRF テーブルはルートをインポートしてはならないため、インポート ポリシーはすべてを拒否する必要があります。
VPN ポリシーでは、VPN ターゲットコミュニティも設定します。
ハブ PE ルーター D で、VRF テーブルに適用する以下のポリシーを設定します。
-
spoke—IBGP セッションから受信したルートを、そのセッションとコミュニティ ターゲットspokeを含むスポーク PE ルーターとの間で受信したルートを受け入れ、その他のルートをすべて拒否します。 -
hub—OSPF(つまり、OSPF とハブ CE ルーター間のセッション)から受信したすべてのルートに、コミュニティ ターゲット ハブを追加します。その他のルートはすべて拒否します。 -
null—すべてのルートを拒否します。 -
redistribute-vpn—OSPF ルートをルーティング インスタンス内のネイバーに再配布します。[edit] policy-options { policy-statement spoke { term a { from { protocol bgp; community spoke; } then accept; } term b { then reject; } } policy-statement hub { term a { from protocol ospf; then { community add hub; accept; } } term b { then reject; } } policy-statement null { then reject; } policy-statement redistribute-vpn { term a { from protocol bgp; then accept; } term b { then reject; } } community hub members target:65535:1; community spoke members target:65535:2; }
ルーター D に VRF ポリシーを適用するには、ルーティング インスタンスを設定する際に vrf-export および vrf-import ステートメントを含めます。
[edit]
routing-instance {
Spokes-to-Hub-CE {
vrf-import spoke;
vrf-export null;
}
Hub-CE-to-Spokes {
vrf-import null;
vrf-export hub;
}
}
スポーク PE ルーター E とルーター F で、VRF テーブルに適用する以下のポリシーを設定します。
-
hub—コミュニティターゲットhubを含むハブPEルーターとIBGPセッションとの間のIBGPセッションから受信したルートを受け入れ、その他のルートをすべて拒否します。 -
spoke- OSPF から受信したすべてのルート(つまり、OSPF とハブ CE ルーター間のセッションから)にコミュニティ ターゲット スポークを追加し、それ以外のルートをすべて拒否します。 -
redistribute-vpn—OSPF ルートをルーティング インスタンス内のネイバーに再配布します。
スポークPEルーターEとルーターFで、以下のVPNインポートおよびエクスポートポリシーを設定します。
[edit]
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target 65535:2;
}
スポーク ルーターに VRF ポリシーを適用するには、ルーティング インスタンスを設定する際に vrf-export および vrf-import ステートメントを含めます。
[edit]
routing-instance {
Spoke-E-to-Hub {
vrf-import hub;
vrf-export spoke;
}
}
[edit]
routing-instance {
Spoke-F-to-Hub {
vrf-import hub;
vrf-export spoke;
}
}
ルーター別に要約されたハブアンドスポークVPN設定
ルーターD(ハブPEルーター)
ハブCEにスポークルートを配信するためのルーティングインスタンス
Spokes-to-Hub-CE {
instance-type vrf;
interface fe-0/0/0.0;
route-distinguisher 10.255.1.174:65535;
vrf-import spoke;
vrf-export null;
}
インスタンス ルーティング プロトコル
protocols {
ospf {
domain-id disable;
domain-vpn-tag 0;
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/0.0;
}
}
}
ハブCEルートをスポークに配信するためのルーティングインスタンス
Hub-CE-to-Spokes {
instance-type vrf;
interface ge-0/0/1.0;
route-distinguisher 10.255.1.174:65534;
vrf-import null;
vrf-export hub;
}
ルーティングインスタンスルーティングプロトコル
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/1.0;
}
}
}
ルーティング オプション(プライマリ インスタンス)
routing-options {
autonomous-system 1 loops 1;
}
プロトコル(プライマリ インスタンス)
protocols {
}
LDP の有効化
ldp {
interface so-1/0/0.0;
interface t3-1/1/0.0;
}
IBGPを設定します
bgp {
group Hub-to-Spokes {
type internal;
local-address 10.255.14.174;
family inet-vpn {
unicast;
}
neighbor 10.255.14.180;
neighbor 10.255.14.182;
}
}
VPNポリシーの設定
policy-options {
policy-statement spoke {
term a {
from {
protocol bgp;
community spoke;
}
then accept;
}
term b {
then reject;
}
}
policy-statement hub {
term a {
from protocol ospf;
then {
community add hub;
accept;
}
}
term b {
then reject;
}
}
policy-statement null {
then reject;
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}
ルーターE(スポークPEルーター)
ルーティング インスタンス
routing-instance {
Spoke-E-to-Hub {
instance-type vrf;
interface fe-0/1/0.0;
route-distinguisher 10.255.14.80:65035;
vrf-import hub;
vrf-export spoke;
}
}
インスタンス ルーティング プロトコル
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-0/1/0.0;
}
}
}
ルーティング オプション(プライマリ インスタンス)
routing-options {
autonomous-system 1 loops 1;
}
プロトコル(プライマリ インスタンス)
protocols {
}
LDP の有効化
ldp {
interface fe-0/1/2.0;
}
IBGPを設定します
bgp {
group Spoke-E-to-Hub {
type internal;
local-address 10.255.14.180;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
VPNポリシーの設定
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}
ルーターF(スポークPEルーター)
ルーティング インスタンス
routing-instance {
Spoke-F-to-Hub {
instance-type vrf;
interface fe-1/0/1.0;
route-distinguisher 10.255.14.182:65135;
vrf-import hub;
vrf-export spoke;
}
}
インスタンス ルーティング プロトコル
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-1/0/1.0;
}
}
}
ルーティング オプション(プライマリ インスタンス)
routing-options {
autonomous-system 1 loops 1;
}
プロトコル(プライマリ インスタンス)
protocols {
}
LDP の有効化
ldp {
interface fe-1/0/0.0;
}
IBGPを設定します
bgp {
group Spoke-F-to-Hub {
type internal;
local-address 10.255.14.182;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
VPNポリシーの設定
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from {
protocol bgp;
}
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}