25
BMP活用による SDN時代のオーバレイNW監視手法の提案 2015.7.24 @ttsubo 【BGP/MPLS-VPN編】

BMP活用による SDN時代のオーバレイNW監視手法の提案

Embed Size (px)

Citation preview

BMP活用による SDN時代のオーバレイNW監視手法の提案

2015.7.24 @ttsubo

【BGP/MPLS-VPN編】

2

自己紹介

⚫ SDN/NFV技術に興味を持ったNWエンジニア ⚫ SDN時代にふさわしいNWエンジニアを目指して、  Python/Golang等を勉強中 ⚫ Ryu SDN Frameworkの、BGPSpeakerを  使いはじめて、BGPプログラミングの面白さに  目覚めつつあります。

@ttsubo

3

1. オーバレイNWとは

オーバーレイ・ネットワーク(overlay network)とは、 あるコンピュータネットワークの上に構築された別のコンピュータネットワークのことである。 オーバーレイ・ネットワーク上のノードは、下位ネットワークのトポロジーを意識せずに通信することができる。

~Wikipediaより~

オーバレイな階層ネットワーク概念

4IPネットワーク

D-Plane

C-Plane

CE3CE1

C/D-Plane概念を適用してネットワーク抽象化

最近のトレンド として、オーバレイ側の D-Planeが自動構築できる ように、C-Planeが配備

されつつある

5

⚫ GRE/MPLS/VxLAN等の通信プロト  コル技術が一般化 ⚫ L2VPN閉域ネットワーク制御として  EVPN/VxLANがHotTopic! ⚫ L3VPN閉域ネットワーク制御として    BGP/MPLS-VPNは、実用化技術として  成熟の域

2. オーバレイNW事例

今回、BGP/MPLS-VPNに着目

6LDP(OSPF)面

CE3CE1

BGP面

・BGPピア間の通信経路は、OSPFにより解決 ・BGPのNEXTHOPへの到達性がシングルホップで対応できるよう  LDPによるMPLSトンネルを自動生成

RR RR CE3CE1

BGP/LDP面による階層化構造を構成BGP/MPLS-VPNでのC-Planeの特徴

7MPLS面

CE3CE1

CE3CE1

・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  LDP等により自動生成されたMPLSトンネルにより解決

D-Plane

BGP/MPLS-VPNでのD-Planeの特徴

8

BGP経路情報の伝搬状況をリアルタイムに監視する手法が存在しないため、Edge/Core構成が大規模になるほど、通信経路を確認作業が煩雑になる。

3. 技術課題

従来の監視手法(CLI, SNMP, Ping)に加えて、 もっと、BGP経路制御の監視手法を、高度化したい

9

BGP経路追加での開通作業フロー・独立した各作業フローを実施する必要があった ・ユーザ/通信事業者との責任分界点があいまい

通信事業者ユーザ ユーザ

(2)BGP 経路確認

(3)ping (疎通確認)

BGP mpBGP mpBGP BGP

Ping

(1)BGP 経路追加

10

不測な事態が発生した場合..・包括的な原因特定の監視手法が存在しない ・BGP/MPLS等のプロトコル知識を修得した高スキル者  の対応が必要

通信事業者ユーザ ユーザ

(1)BGP 経路追加

(2)BGP 経路確認

(3)ping (疎通確認)

BGP mpBGP

Ping疎通NG

mpBGP

Ping

11

4. BGP監視技術の候補

IETF会合では、BGP監視手法として、 以下の技術提案されている(1) BGP-LS

(2) BMP

今回、BMPに注目

North-Bound Distribution of Link-State and TE Information using BGP (draft-ietf-idr-ls-distribution-11)

BGP Monitoring Protocol(draft-ietf-grow-bmp-11)

12

BMPによるBGP経路監視

BMP Server

BGP mpBGP mpBGP BGP

BGP 経路追加

BMP Client

BMP Client

mpBGP

BGP

BMP Client機能を有する各BGPルータでは、受信したBGP UPDATEメッセージにより、adj-RIB-inの経路情報の更新を契機として、同UPDATEメッセージをBMP Serverに通知することが可能となる。

BMP Client

mpBGP

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).

14C-Plane

CE3CE1 BGP mpBGP

mpBGP BGP

mpBGP

mpBGPBMP 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に通知できるよう評価環境を構築した

15BGP/MPLS-VPN面

192.168.203.0/24192.168.201.0/24

192.168.202.0/24

PE3#show bgp vpnv4 unicast allBGP table version is 19, local router ID is 10.0.1.2Status 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, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found

Network Next Hop Metric LocPrf Weight PathRoute 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

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

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活用により 出力イメージを自由に加工できる

18

6. UseCase”End-End開通監視”

RyuBMP活用により、BGP経路追加に伴うEnd-End開通監視ツールの プロトタイプを作ってみた。(1) BGP経路確認の自動化 adj-RIB-in情報の更新に伴い、BMPメッセージ伝搬された Edgeルータに対して、BGP経路情報を確認する。

(2) End-End経路診断の自動化 BGP経路追加によるBMPメッセージ受信を契機に、事前に エントリしておいたEnd-End経路診断パターンを実行して 疎通性を確認する。

19

BGP mpBGP mpBGP BGP

Ping

(1)BGP 経路追加

End-End開通監視ツール

RyuBMP

BGP 経路確認

ping (疎通確認)

End-End開通監視ツール構成

mpBGP

mpBGP

20

7. End-End開通監視ツールの簡易デモ

BGP経路追加に伴うEnd-End開通監視 ツールは、以下のslideshareをベースに、動作イメージを確認することができる。

http://www.slideshare.net/ToshikiTsuboi/sdn-lab-robot-framework

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  install2. 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

(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

$ 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

------------------------------------- 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経路情報が   確認できる

25

将来は、アンダーレイにおけるリンクステートの変化を 監視できるBGP-LSとの連携を視野に入れたBMP(BGP Monitoring Protocol)での一元管理を目指していきたい。

IPネットワーク

D-Plane

C-Plane

CE3CE1

リンクステートの変化を 監視できるBGP-LS メッセージ連携

おわりに