RouterOS での基本的な MPLS 設定
MikroTik 製品は全般的に安価です。しかしながら、MikroTik 製品に搭載されている RouterOS は 豊富な機能 を持っています。ローエンドモデルであれば家電店の店頭に並んでいるルータと大差無い価格で手に入りますが、RouterOS が搭載されているので(一部の機能はライセンスレベルに依存しますが)動的ルーティング、VPN、ファイアウォール、MPLS 等の比較的高度な機能も利用することが出来ます。今回は RouterOS を使って基本的な MPLS(L3 VPN)を設定してみます。具体的には「OSPF、BGP(Route Reflection)、MPLS(LDP)、VRF」等を設定していきます。
構成
VIRL 上に以下のトポロジーを構成して検証しました。
ルータは全て以下を使いました。
構成上の特徴は以下の通りです。
- MPLS 網内の IGP には OSPF を利用
- MPLS 網内の AS 番号は 65,000 を利用
- P2 を Route Reflector として設定
- PE1 と PE3 を RouteReflector Client として設定
- VRF-A の RD は 1.1.1.1:111 として設定
- VRF-B の RD は 2.2.2.2:222 として設定
- VRF-A と VRF-B のアドレスは意図的に重複するように割り当て
A1 のコンフィグ
| /ip address
add address=192.168.1.1/24 interface=ether2 network=192.168.1.0
/ip route
add distance=1 gateway=192.168.1.254
/system identity
set name=A1
|
A2 のコンフィグ
| /ip address
add address=192.168.2.1/24 interface=ether2 network=192.168.2.0
/ip route
add distance=1 gateway=192.168.2.254
/system identity
set name=A2
|
B1 のコンフィグ
| /ip address
add address=192.168.1.1/24 interface=ether3 network=192.168.1.0
/ip route
add distance=1 gateway=192.168.1.254
/system identity
set name=B1
|
B2 のコンフィグ
| /ip address
add address=192.168.2.1/24 interface=ether3 network=192.168.2.0
/ip route
add distance=1 gateway=192.168.2.254
/system identity
set name=B2
|
PE1 のコンフィグ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | /interface bridge
add name=loopback
/routing bgp instance
set default as=65000
/routing ospf instance
set [ find default=yes ] router-id=10.0.0.1
/ip address
add address=10.0.0.1 interface=loopback network=10.0.0.1
add address=192.168.1.254/24 interface=ether2 network=192.168.1.0
add address=192.168.1.254/24 interface=ether3 network=192.168.1.0
add address=172.16.1.1/24 interface=ether4 network=172.16.1.0
/ip route vrf
add export-route-targets=1.1.1.1:111 import-route-targets=1.1.1.1:111 interfaces=ether2 route-distinguisher=1.1.1.1:111 routing-mark=VRF-A
add export-route-targets=2.2.2.2:222 import-route-targets=2.2.2.2:222 interfaces=ether3 route-distinguisher=2.2.2.2:222 routing-mark=VRF-B
/mpls ldp
set enabled=yes lsr-id=10.0.0.1 transport-address=10.0.0.1
/mpls ldp interface
add interface=ether4
/routing bgp instance vrf
add redistribute-connected=yes routing-mark=VRF-A
add redistribute-connected=yes routing-mark=VRF-B
/routing bgp peer
add address-families=vpnv4 name=peer1 remote-address=10.0.0.2 remote-as=65000 update-source=loopback
/routing ospf network
add area=backbone network=10.0.0.1/32
add area=backbone network=172.16.1.0/24
/system identity
set name=PE1
|
P2 のコンフィグ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | /interface bridge
add name=loopback
/routing bgp instance
set default as=65000
/routing ospf instance
set [ find default=yes ] router-id=10.0.0.2
/ip address
add address=10.0.0.2 interface=loopback network=10.0.0.2
add address=172.16.1.2/24 interface=ether4 network=172.16.1.0
add address=172.16.2.2/24 interface=ether5 network=172.16.2.0
/mpls ldp
set enabled=yes lsr-id=10.0.0.2 transport-address=10.0.0.2
/mpls ldp interface
add interface=ether4
add interface=ether5
/routing bgp peer
add address-families=vpnv4 name=peer1 remote-address=10.0.0.1 remote-as=65000 route-reflect=yes update-source=loopback
add address-families=vpnv4 name=peer2 remote-address=10.0.0.3 remote-as=65000 route-reflect=yes update-source=loopback
/routing ospf network
add area=backbone network=10.0.0.2/32
add area=backbone network=172.16.1.0/24
add area=backbone network=172.16.2.0/24
/system identity
set name=P2
|
PE3 のコンフィグ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | /interface bridge
add name=loopback
/routing bgp instance
set default as=65000
/routing ospf instance
set [ find default=yes ] router-id=10.0.0.3
/ip address
add address=10.0.0.3 interface=loopback network=10.0.0.3
add address=192.168.2.254/24 interface=ether2 network=192.168.2.0
add address=192.168.2.254/24 interface=ether3 network=192.168.2.0
add address=172.16.2.3/24 interface=ether5 network=172.16.2.0
/ip route vrf
add export-route-targets=1.1.1.1:111 import-route-targets=1.1.1.1:111 interfaces=ether2 route-distinguisher=\1.1.1.1:111 routing-mark=VRF-A
add export-route-targets=2.2.2.2:222 import-route-targets=2.2.2.2:222 interfaces=ether3 route-distinguisher=2.2.2.2:222 routing-mark=VRF-B
/mpls ldp
set enabled=yes lsr-id=10.0.0.3 transport-address=10.0.0.3
/mpls ldp interface
add interface=ether5
/routing bgp instance vrf
add redistribute-connected=yes routing-mark=VRF-A
add redistribute-connected=yes routing-mark=VRF-B
/routing bgp peer
add address-families=vpnv4 name=peer1 remote-address=10.0.0.2 remote-as=65000 update-source=loopback
/routing ospf network
add area=backbone network=10.0.0.3/32
add area=backbone network=172.16.2.0/24
/system identity
set name=PE3
|
動作確認
LDP 設定の確認
| [admin@PE1] > /mpls ldp print
enabled: yes
lsr-id: 10.0.0.1
transport-address: 10.0.0.1
path-vector-limit: 255
hop-limit: 255
loop-detect: no
use-explicit-null: no
distribute-for-default-route: no
|
LDP を設定したインターフェイス状態の確認
| [admin@PE1] > /mpls ldp interface print
Flags: X - disabled, I - invalid
# INTERFACE HELLO-INTERVAL HOLD-TIME
0 ether4 5s 15s
|
LDP 隣接状態の確認
| [admin@PE1] > /mpls ldp neighbor print
Flags: X - disabled, D - dynamic, O - operational, T - sending-targeted-hello, V - vpls
# TRANSPORT LOCAL-TRANSPORT PEER SEND-TARGETED ADDRESSES
0 DO 10.0.0.2 10.0.0.1 10.0.0.2:0 no 10.0.0.2
172.16.1.2
172.16.2.2
|
BGP ピアの状態確認
| [admin@PE1] > /routing bgp peer print
Flags: X - disabled, E - established
# INSTANCE REMOTE-ADDRESS REMOTE-AS
0 E default 10.0.0.2 65000
|
BGP で受信した VPNv4 経路の確認
| [admin@PE1] > /routing bgp vpnv4-route print
Flags: L - label-present
# ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY INTERFACE IN-LABEL OUT-LABEL
0 L 1.1.1.1:111 192.168.2.0/24 10.0.0.3 ether4 25 25
1 L 2.2.2.2:222 192.168.2.0/24 10.0.0.3 ether4 26 26
2 L 1.1.1.1:111 192.168.1.0/24 ether2 25
3 L 2.2.2.2:222 192.168.1.0/24 ether3 26
|
A1 から A2 への TELNET
A1 から 192.168.2.1 へ TELNET すると A2 へログイン出来ます。
| [admin@A1] > /system telnet 192.168.2.1
Trying 192.168.2.1...
Connected to 192.168.2.1.
Escape character is '^]'.
MikroTik v6.34rc19 (testing)
Login: admin
Password:
[admin@A2] >
|
B1 から B2 への TELNET
B1 から 192.168.2.1 へ TELNET します。宛先アドレスは先程と同じですが、VRF が異なるので別ネットワークとして処理され、結果的に意図した通り、B2 へログイン出来ます。
| [admin@B1] > /system telnet 192.168.2.1
Trying 192.168.2.1...
Connected to 192.168.2.1.
Escape character is '^]'.
MikroTik v6.34rc19 (testing)
Login: admin
Password:
[admin@B2] >
|
参考