More Related Content Similar to BMP活用による SDN時代のオーバレイNW監視手法の提案 (20) More from Toshiki Tsuboi (10) BMP活用による SDN時代のオーバレイNW監視手法の提案12. 12
BMPによるBGP経路監視
BMP
Server
BGP mpBGP mpBGP BGP
BGP
経路追加
BMP
Client
BMP
Client
mpBGP
BG
P
BMP Client機能を有する各BGPルータでは、受信したBGP
UPDATEメッセージにより、adj-RIB-inの経路情報の更新を
契機として、同UPDATEメッセージをBMP Serverに通知す
ることが可能となる。
BMP
Client
mpBGP
13. 13
5. BMP Serverの評価
BGP/MPLS-VPN網への適用を想定
して、オープンソース版BMP Server
機能を試してみた。
(1) OpenBMP
(2) RyuBMP
OpenBMP is an open source project that implements draft-ietf-grow-
bmp-08. BMP protocol version 3 is defined in draft 08, while versions 1
and 2 are defined in the previous revisions of the draft.
JunOS 10.4 implements the older versions of BMP. Cisco IOS XE 3.12,
IOS XR, and JunOS 13.3 implement version 3 (draft 07).
Ryu BMP Server is a simple BMP server. Now it supports BMPv3. It is
implemented using Ryu SDN Framework. Tested with Cisco ASR1000
(IOS-XE 3.13S) and Juniper MX960 (JUNOS 13.3R1.8).
14. 14
C-Plane
CE3CE1 BGP m
pB
G
P
mpBGP BGP
m
p
B
G
P
m
p
B
G
P
BMP Server
ASBR1
(CSR1000v)
ASBR2
(CSR1000v)
PE3
(CSR1000v)
mpBGP
mpBGP
mpBGP
BMP Server評価環境
BGP/MPLS-VPN面でのEdgeルータ3箇所にて、CSR1000vの
BMP Client機能を有効にした上で、C-Planeで伝搬されるBGP/
mpBGPメッセージをBMP Serverに通知できるよう評価環境を
構築した
15. 15BGP/MPLS-VPN面
192.168.203.0/24192.168.201.0/24
192.168.202.0/24
PE3#show bgp vpnv4 unicast all
BGP table version is 19, local router ID is 10.0.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 65000:1 (default for vrf customerA)
*>i 192.168.101.0/30 10.0.1.1 0 100 0 65001 ?
*>i 192.168.102.0/30 10.0.1.1 0 100 0 65001 ?
*> 192.168.103.0/30 0.0.0.0 0 32768 ?
*>i 192.168.201.0 10.0.1.1 0 100 0 65001 65002 i
*>i 192.168.202.0 10.0.1.1 0 100 0 65001 65003 i
*> 192.168.203.0 192.168.103.2 0 0 65004 i
ちなみに、PE3でのBGP経路情報を確認してみると..
PE3ASBR1
ASBR2
16. 16
OpenBMP評価結果 http://www.openbmp.org/
Web-UIは、まだリリースされていない模様。
BMPメッセージは、MySQL上で 参照可能。
mysql> select RouterIP,PeerName,PeerIP,PeerASN from v_peers;
+---------------+---------------+---------------+---------+
| RouterIP | PeerName | PeerIP | PeerASN |
+---------------+---------------+---------------+---------+
| 192.168.100.1 | 192.168.0.2 | 192.168.0.2 | 65000 |
| 192.168.100.1 | 10.0.0.7 | 10.0.0.7 | 65001 |
| 192.168.100.2 | 10.0.0.7 | 10.0.0.7 | 65001 |
| 192.168.100.2 | 192.168.1.2 | 192.168.1.2 | 65000 |
| 192.168.100.3 | 10.0.1.5 | 10.0.1.5 | 65000 |
| 192.168.100.3 | 192.168.103.2 | 192.168.103.2 | 65004 |
+---------------+---------------+---------------+---------+
6 rows in set (0.00 sec)
mysql> select RouterName,PeerName,Prefix,PrefixLen,Origin,Origin_AS,MED,LocalPref,NH,AS_Path from v_routes;
+---------------+---------------+---------------+-----------+--------+-----------+------+-----------+---------------+---------+
| RouterName | PeerName | Prefix | PrefixLen | Origin | Origin_AS | MED | LocalPref | NH | AS_Path |
+---------------+---------------+---------------+-----------+--------+-----------+------+-----------+---------------+---------+
| 192.168.100.3 | 192.168.103.2 | 192.168.203.0 | 24 | igp | 0 | 0 | 0 | 192.168.103.2 | 65004 |
+---------------+---------------+---------------+-----------+--------+-----------+------+-----------+---------------+---------+
1 row in set (0.00 sec)
実際に、動かしてみて…
C-Planeで伝搬されるBMPメッセージを受信できるようだが、
mpBGPにより伝搬されたUPDATEメッセージは参照不可。
すわなち、vpnv4アドレス情報を保持できていない…
BGP UPDATEメッセージ
のみ参照可能
17. 17
RyuBMP評価結果 http://osrg.github.io/bmp/
Ryu SDN Framework上で動作可能なため、独自機能の拡
張が図りやすい。なお、WebUI/DBは存在しない。
2015 Jul 19 11:57:30 | 192.168.100.3 | 65000,10.0.1.5 |
BMPRouteMonitoring={'path_attributes': {'ORIGIN': '?', 'MP_REACH_NLRI': {'nexthop':
'10.0.1.1', 'nlri': [{'prefix': '192.168.101.0/30', 'label_list': [25], 'route_dist':
'65000:1'}, {'prefix': '192.168.102.0/30', 'label_list': [26], 'route_dist': '65000:1'}]},
'AS_PATH': [[65001]], 'MULTI_EXIT_DISC': 0, 'LOCAL_PREF': 100, 'EXTENDED_COMMUNITIES':
['65000:1']}, 'received_time': '1970/01/01 09:00:00', 'message_type': 'BGP_Update'}
2015 Jul 19 11:57:30 | 192.168.100.3 | 65000,10.0.1.5 |
BMPRouteMonitoring={'path_attributes': {'ORIGIN': 'i', 'MP_REACH_NLRI': {'nexthop':
'10.0.1.1', 'nlri': [{'prefix': '192.168.201.0/24', 'label_list': [27], 'route_dist':
'65000:1'}]}, 'AS_PATH': [[65001, 65002]], 'MULTI_EXIT_DISC': 0, 'LOCAL_PREF': 100,
'EXTENDED_COMMUNITIES': ['65000:1']}, 'received_time': '1970/01/01 09:00:00', 'message_type':
'BGP_Update'}
2015 Jul 19 11:57:59 | 192.168.100.3 | 65004,10.10.10.3 | BMPRouteMonitoring={'message_type':
'BGP_Update', 'received_time': '1970/01/01 09:00:00', 'path_attributes': {'ORIGIN': 'i',
'MULTI_EXIT_DISC': 0, 'NEXT_HOP': '192.168.103.2', 'AS_PATH': [[65004]]}, 'NLRI': [{'prefix':
'192.168.203.0/24'}]}
実際に、動かしてみて…
C-Planeで伝搬されるBMPメッセージからBGP/mpBGP
により伝搬されたUPDATEメッセージを任意に抽出可能。
BGPメッセージParser活用により
出力イメージを自由に加工できる
19. 19
BGP mpBGP mpBGP BGP
Ping
(1)BGP
経路追加
End-End開通監視ツール
RyuBMP
BGP
経路確認
ping
(疎通確認)
End-End開通監視ツール構成
mpBGP
mpBGP
21. 21
$
git
clone
https://github.com/ttsubo/docker-‐simpleRouter.git
$
cd
docker-‐simpleRouter
$
git
checkout
TestAutomation
$
git
branch
*
TestAutomation
master
1. docker-simpleRouterを入手する
$
./simpleRouter.sh
install
2. dockerをインストールする
3. 再度ログイン後に、dockerバージョンを確認する
$
docker
version
$
docker
pull
ttsubo/simple-‐router:latest
$
docker
pull
ttsubo/pc-‐term:latest
$
docker
pull
ttsubo/test-‐server:latest
$
docker
images
4. Dockerイメージを入手する
$
sudo
pip
install
robotframework
$
sudo
pip
install
robotframework-‐requests
$
sudo
pip
install
robotframework-‐sshlibrary
$
sudo
pip
install
requests
5. Robot Frameworkパッケージ関係を入手する
$
./simpleRouter.sh
start
6. simpleRouterプログラムを起動する
$
docker
ps
7. Dockerコンテナの起動状況を確認する
→ 約5分程度したら起動完了
(1) End-End開通監視ツールのデモ環境
22. 22
(2) BGP経路追加(Static route登録)
BGP6のdockerコンテナ上からルーティング情報 172.16.0.0/24 を追加する。
には、 pybot Tests/test1_create_route.robot を起動するのみ。
$ cd Robot_Framework/
$ pybot Tests/test1_create_route.robot
==============================================================================
Test1 Create Route
==============================================================================
(1-1) Create prefix(172.16.0.0/24) in vrf(65010:101) in Router(BGP6) | PASS |
------------------------------------------------------------------------------
(1-2) Check previous prefix in RoutingTable in Peer Router(BGP4) | PASS |
------------------------------------------------------------------------------
(1-3) check reachability from pc1(192.168.1.102) to pc2(172.16.0.101) | PASS |
------------------------------------------------------------------------------
Test1 Create Route | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
PC2 PC1
AS65010 AS65011
BGP6 BGP4
BGP4
BGP1
BGP2
BGP3
192.168.2.101 192.168.1.102
172.16.0.0/24
BGP経路追加
RyuBMP
bmp
23. 23
$ docker exec -it TestServer bash
root@TestServer:~# cd Test_automation/
root@TestServer:~/Test_automation# tail -f Test_result.txt
2015/07/23 04:57:58 [1] [OK] [adj_rib_in_changed]
2015/07/23 05:27:00 [2] [OK] [adj_rib_in_changed]
(3) End-End開通確認ツール動作結果
TestServerのdockerコンテナ上から、ツール動作結果を確認する。
root@TestServer:~/Test_automation# cd rest-client/
root@TestServer:~/Test_automation/rest-client# ./get_event.sh 2
..snip
-------------------------------------
Event Infomation
-------------------------------------
event_id [2]
event_time [2015/07/23 05:27:00]
event_type [adj_rib_in_changed]
peer_bgp_id [10.0.0.1]
peer_as [65010]
received_time [2015/07/23 05:26:59]
vpnv4_prefix [65010:101:172.16.0.0/24]
nexthop [192.168.101.101]
BGP経路追加を実施して、しばらくすると、
イベントID:2 の行が出力される。
イベントID:2 の詳細を確認する。
.. cont
24. 24
-------------------------------------
Ping Result [OK]
-------------------------------------
$ ping -c 5 172.16.0.101 -I 192.168.1.102
PING 172.16.0.101 (172.16.0.101) from 192.168.1.102 : 56(84) bytes of data.
64 bytes from 172.16.0.101: icmp_seq=1 ttl=64 time=25.7 ms
64 bytes from 172.16.0.101: icmp_seq=2 ttl=64 time=27.3 ms
64 bytes from 172.16.0.101: icmp_seq=3 ttl=64 time=24.8 ms
64 bytes from 172.16.0.101: icmp_seq=4 ttl=64 time=21.0 ms
64 bytes from 172.16.0.101: icmp_seq=5 ttl=64 time=21.2 ms
--- 172.16.0.101 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 21.057/24.049/27.315/2.488 ms
-------------------------------------
show Neighbor Result
-------------------------------------
bgpd> show neighbor received-routes 192.168.101.101 all
Status codes: x filtered
Origin codes: i - IGP, e - EGP, ? - incomplete
Timestamp Network Labels Next Hop Metric LocPrf Path
2015/07/23 04:57:56 192.168.2.101/32 None 192.168.101.101 100 None [65010] ?
2015/07/23 05:26:59 172.16.0.0/24 None 192.168.101.101 100 None [65010] ?
-------------------------------------
show Rib Result
-------------------------------------
bgpd> show rib vpnv4
Status codes: * valid, > best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Labels Next Hop Reason Metric LocPrf Path
*> 65010:101:192.168.1.102/32 [300] 192.168.105.102 Only Path 100 ?
*> 65010:101:192.168.2.101/32 [600] 192.168.101.101 Only Path 100 65010 ?
*> 65010:101:172.16.0.0/24 [601] 192.168.101.101 Only Path 100 65010 ?
イベントID:2 の詳細を確認する。つづき
← End-Endでping疎通結果が確認できる
← BGP1にて、BGP4から受信したBGP経路情報が
確認できる
← BGP1にて、保持しているBGP経路情報が
確認できる