SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Copyright©2014 NTT corp. All Rights Reserved.
Lagopusで試すFirewall
OpenFlow1.3で実現する
FW運用のテストツール試作
2015/09/29
hibitomo
1Copyright©2014 NTT corp. All Rights Reserved.
はじめに
 今回の内容はTremaday#7で発表した
内容+αです.
 Tremadayでのリクエストにお応えして,
ACLのテスト駆動をデモします.
2Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 Lagopus/OpenFlowについて
 お約束
 TremaDayの内容
 聞いたことある人はごめんなさい
 テスト駆動なFW
 アーキテクチャ
 Ryu certificationと おまじない
 デモ
3Copyright©2014 NTT corp. All Rights Reserved.
コントローラ
SDN?OpenFlow?Lagopus?
 レガシーなネットワーク装置
ルータ
コントロールプレーン
データプレーン
ファイアーウォール
コントロールプレーン
データプレーン
ロードバランサ
コントロールプレーン
データプレーン
 SDN
スイッチ
データプレーン
スイッチ
データプレーン
スイッチ
コントロールプレーン
データプレーン
アプリ
コントローラ
コントロールプレーン
アプリ
プログラマブルAPI
OpenFlowプロトコル
4Copyright©2014 NTT corp. All Rights Reserved.
OpenFlow?
 どういうパケットだったら
 受信ポート番号,パケットヘッダの値(宛先,ソー
ス,各種ID...)
 どういう処理をする
 パケットヘッダの追加,削除,編集
 転送(ユニキャスト,マルチキャスト,ロードバラ
ンシング...)
 コントローラにパケットを転送して処理も可能
OpenFlow コントローラ
コントロールプレーン
OpenFlow
プロトコル
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
5Copyright©2014 NTT corp. All Rights Reserved.
Lagopus
 OpenFlowスイッチのソフトウェア実装
 汎用x86サーバで動作可能
 高速なパケット処理と幅広いプロトコルに対応
 > 10Gbps
 OpenFlow仕様に幅広く対応
OpenFlow コントローラ
コントロールプレーン
OpenFlow
プロトコル
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
6Copyright©2014 NTT corp. All Rights Reserved.
ユースケースの例
 SDN Japan 2014での実証実験
 アク セスポイ ント  
■  A Pの識別(V LA N )
■  V ID 毎にQoS制御
PoEスイッチ
インターネット
アクセスポイント
( AP)
La g op u sの役割
7Copyright©2014 NTT corp. All Rights Reserved.
オープンソース
 2014年7月31日に公開
 http://lagopus.github.io/
 開発への参加
 コードの提供 -> GitHub Pull Request
 バグレポート -> GitHub Issues
 議論 -> Developers ML
8Copyright©2014 NTT corp. All Rights Reserved.
Copyright©2014 NTT corp. All Rights Reserved.
Lagopusで試すFirewall
OpenFlow1.3で実現する
FW運用のテストツール試作
2015/09/29
hibitomo
10Copyright©2014 NTT corp. All Rights Reserved.
ところで
 ご覧になったことありますか?
 @stereocatさん, Tremaday #4
http://www.slideshare.net/stereocat55/tremafirewall
11Copyright©2014 NTT corp. All Rights Reserved.
@stereocatさんのスライドです
http://www.slideshare.net/stereocat55/tremafirewall
12Copyright©2014 NTT corp. All Rights Reserved.
@stereocatさんのスライドです
http://www.slideshare.net/stereocat55/tremafirewall
13Copyright©2014 NTT corp. All Rights Reserved.
@stereocatさんのスライドです
http://www.slideshare.net/stereocat55/tremafirewall
14Copyright©2014 NTT corp. All Rights Reserved.
ところで,,,,
 実装はOpenFlow1.0ベース
 RangeはBitmaskでどう表現するの???
 そもそもL4はbitmask掛けれない...
 FWをOpenFlowで表現するのは無理?
 簡単なテストにしか使えない?
Copyright©2014 NTT corp. All Rights Reserved.
Lagopusで試すFirewall
OpenFlow1.3で実現する
FW運用のテストツール試作
Copyright©2014 NTT corp. All Rights Reserved.
Lagopusで試すFirewall
OpenFlow1.3で実現する
FW運用のテストツール試作
ココが違う
17Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 OpenFlow1.3で実現するFirewall
 Range表記のbitmask変換
 TCP/UDPポートのmask適用方法
 実装(テーブル設計)
 FW運用のテストツール試作
 Ryu Certificationの流用
 おまじない
 デモ
18Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 OpenFlow1.3で実現するFirewall
 Range表記のbitmask変換
 TCP/UDPポートのmask適用方法
 実装(テーブル設計)
 FW運用のテストツール試作
 Ryu Certificationの流用
 おまじない
 デモ
19Copyright©2014 NTT corp. All Rights Reserved.
Rangeの表記どうする?
 そもそもTCAMで検索できているはず
 TCAMは{0,1,don’t care}で検索
 RangeもTCAMで検索しているなら,Lagopus
でも検索できるはず.
 再起アルゴリズムで
Range -> Bitmask表記のルールに変換
20Copyright©2014 NTT corp. All Rights Reserved.
例題
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
 0110 ~ 1111 をbitmaskのルールに分割
21Copyright©2014 NTT corp. All Rights Reserved.
例題
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
 0110 ~ 1111 をbitmaskのルールに分割
22Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
1. ****が範囲に含まれるかチェック
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
****
23Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
2. ****の範囲を2つに分割
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1***0***
24Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
3. 1***はRangeに含まれる
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1***0***
25Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
2’. 0***を2つに分割
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1***00** 01**
26Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
2’’. 01**を2つに分割
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
00** 010* 1***011*
27Copyright©2014 NTT corp. All Rights Reserved.
Algorithm 簡単(?)に
2’’. 01**を2つに分割
0 1
0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
00** 010* 1***011*
0110 ~ 1111 で表されるレンジは,{011*, 1***}で
表されるルールの集合でちょうどカバー出来る.
28Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 OpenFlow1.3で実現するFirewall
 Range表記のbitmask変換
 TCP/UDPポートのmask適用方法
 実装(テーブル設計)
 FW運用のテストツール試作
 Ryu Certificationの流用
 おまじない
 デモ
29Copyright©2014 NTT corp. All Rights Reserved.
TCP/UDPポートのmask適用方法
 Metadataにコピーする
 しかし,Copy_Fieldは未対応....
Metadata (64bit)L4 srcL4 dst
30Copyright©2014 NTT corp. All Rights Reserved.
TCP/UDPポートのmask適用方法
 単純に書きくだす.
※ルール数が65536 * 2 * 2 = 26万
for i in range(0, 65535):
# SRC
for ip_proto in [6, 17] :
flow = {"table_id":0,"priority":1000,
"actions":[{"type":"WRITE_METADATA","metadata":i << 16,
"metadata_mask":0x00000000FFFF0000}],
"match":{"dl_type":2048,"ip_proto":ip_proto,"tp_src":i}}
mod_flow_entry(datapath, flow, ofproto.OFPFC_ADD)
# DST
...
31Copyright©2014 NTT corp. All Rights Reserved.
Lagopusなら動く
 Lagopusならなんとかしてくれる.
私の戦闘力は
100万です.
32Copyright©2014 NTT corp. All Rights Reserved.
その他の手
 リアクティブに登録しても実現できる
1. TCP/UDPパケットが来たらPacket-In
2. ポート番号のメタデータコピーのルール追加
未登録のPort番号で
あれば,Packet-In
Port番号コピーのルール
+ Packet-Out
コントローラ
スイッチ
データプレーン
コントロールプレーン
33Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 OpenFlow1.3で実現するFirewall
 Rangeの表記どうする?
 TCP/UDPポートどうする?
 実装(テーブル設計)
 FW運用のテストツール試作
 Ryu Certificationの流用
 おまじない
 デモ
34Copyright©2014 NTT corp. All Rights Reserved.
実装
 テーブル設計
 table 0:
 L4 srcポートをmetadataにコピー(32~16bitに)
 table 1:
 L4 dstポートをmetadataにコピー (16~0bitに)
 table 2:
 Range -> Bitmask変換したルール群投入
 マッチしたら落とす or OUTPUT
or Next table (他のアプリケーション)
35Copyright©2014 NTT corp. All Rights Reserved.
実装
 Table 0のルール例
{'priority': 1000, 'table_id': 0,
'match': {'dl_type': 2048, 'ip_proto': 6, 'tp_src': 5},
'actions': [
{'metadata_mask': 4294901760,
‘type': 'WRITE_METADATA',
'metadata': 327680}
]
}
0xFFFF0000
UDP/TCP両方で
ルール登録
0x00050000
36Copyright©2014 NTT corp. All Rights Reserved.
実装
 Table 1のルール例
{'priority': 1000, 'table_id': 1,
'match': {'dl_type': 2048, 'ip_proto': 17, 'tp_dst': 8},
'actions': [
{'metadata_mask': 65535,
'type': 'WRITE_METADATA',
'metadata': 8}
]
}
37Copyright©2014 NTT corp. All Rights Reserved.
実装
 Table 2のルール例
(アドレスに意味はありません)
{"table_id":2,"priority":65535,"cookie":0,
"actions":[],
"match":{
"dl_type":2048,
"ipv4_src":“192.168.1.10/255.255.255.240",
"ipv4_dst":“192.168.1.171/255.255.255.240",
"ip_proto":17,
"metadata":"0x0000000000580050/0x00000000ffffffff"}
}
38Copyright©2014 NTT corp. All Rights Reserved.
その他メリット
 ルールの追加/削除が動的に出来ます.
 priorityをちゃんと考えれば.
 他のアプリと組み合わせられます.
 テーブル設計の競合注意
 QoSも出来る
 ステートは持てない.
 速いかも?(試してない)
39Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 OpenFlow1.3で実現するFirewall
 Rangeの表記どうする?
 TCP/UDPポートどうする?
 実装(テーブル設計)
 FW運用のテストツール試作
 Ryu Certificationの流用
 おまじない
 デモ
40Copyright©2014 NTT corp. All Rights Reserved.
再掲
http://www.slideshare.net/stereocat55/tremafirewall
41Copyright©2014 NTT corp. All Rights Reserved.
再掲
http://www.slideshare.net/stereocat55/tremafirewall
ここまでの内容
ここからの内容
42Copyright©2014 NTT corp. All Rights Reserved.
Ryu Certification
 SDN Framework ‘Ryu’のSwitchテストツール
 スイッチのOpenFlow仕様への準拠の度合いを検証する
 テストパターンはJSONで記述
http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
43Copyright©2014 NTT corp. All Rights Reserved.
Ryu Certification
 SDN Framework ‘Ryu’のSwitchテストツール
 スイッチのOpenFlow仕様への準拠の度合いを検証する
 テストパターンはJSONで記述
http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
44Copyright©2014 NTT corp. All Rights Reserved.
Ryu Certification
 SDN Framework ‘Ryu’のSwitchテストツール
 スイッチのOpenFlow仕様への準拠の度合いを検証する
 テストパターンはJSONで記述
http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
固定
45Copyright©2014 NTT corp. All Rights Reserved.
Ryu Certification
 SDN Framework ‘Ryu’のSwitchテストツール
 スイッチのOpenFlow仕様への準拠の度合いを検証する
 テストパターンはJSONで記述
http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
固定
または未達検知
46Copyright©2014 NTT corp. All Rights Reserved.
こうか!
Lagopus
FW
補助SW 試験対象SW
Ryu
Certification
テストパターン
ファイル
ACL
(1)パケットインのみの
フローエントリ登録
(2)パケット印加
(3)パケットイン
又は未達検知
47Copyright©2014 NTT corp. All Rights Reserved.
未達検知のおまじない
--- /usr/local/lib/python2.7/dist-packages/ryu/tests/switch/tester.py 2015-
01-16 11:41:22.000000000 +0900
+++ tester.py 2015-09-29 14:26:26.706239312 +0900
@@ -789,11 +789,7 @@
before = before_stats[target_tbl_id]
after = rcv_msgs[target_tbl_id]
if before['lookup'] < after['lookup']:
- lookup = True
- if before['matched'] < after['matched']:
- raise TestFailure(self.state)
- if not lookup:
- raise TestError(self.state)
+ raise TestFailure(self.state)
48Copyright©2014 NTT corp. All Rights Reserved.
テストパターンファイルの記述
 ACCEPT
[
"test1",
{
"description":"allow sample test",
"prerequisite":[
### match -> in_port:1, action -> output:4294967293 ###
],
“tests”:[
{
“ingress”:[ ### テストしたいパケット ### ],
“PACKET_IN”:[ ### ingressと同じ ### ]
}
]
}
]
Packet_In
49Copyright©2014 NTT corp. All Rights Reserved.
テストパターンファイルの記述
 DROP
[
"test1",
{
"description":"allow sample test",
"prerequisite":[
### match -> in_port:1, action -> output:4294967293 ###
],
“tests”:[
{
“ingress”:[ ### テストしたいパケット ### ],
“table-miss”:[ 0 ]
}
]
}
]
Packet_In
50Copyright©2014 NTT corp. All Rights Reserved.
 デモ
51Copyright©2014 NTT corp. All Rights Reserved.
出力
--- Test start ---
waiting for switches connection...
dpid=0000000000000001 : Join target SW.
dpid=0000000000000002 : Join tester SW.
Network Test 1
test1-1
OK
Network Test 2
ACCEPT sample test
OK
DROP sample test
ERROR
Table-miss error: increment in matched_count.
--- Test end ---
--- Test report ---
Table-miss error(1)
Network Test 2 DROP sample test
OK(2) / ERROR(1)
Testログ
Summary
52Copyright©2014 NTT corp. All Rights Reserved.
その他の利点
 同じアーキテクチャで他のNW機器もテスト可
 descriptionを書きましょう(※重要)
 いろいろなプロトコルのテスト可能
 VLAN
 MPLS
 PBB
 転送,破棄以外のテストも可能
 QoS
 Broadcast
53Copyright©2014 NTT corp. All Rights Reserved.
まとめ
 Lagopus (OpenFlow1.3) でL3/L4の
パケットフィルタを実現.
 Ryu Certificationを利用して,パケッ
トフィルタのテストを実現.
54Copyright©2014 NTT corp. All Rights Reserved.
Thank you for your attention
This research is a part of the project for “Research and Development of
Network Virtualization Technology” supported by the Ministry of Internal
Affairs and Communications.

Contenu connexe

Tendances

自動でできるかな?
自動でできるかな?自動でできるかな?
自動でできるかな?
_norin_
 

Tendances (20)

Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud buildersMulti Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
 
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
 
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
 
自動でできるかな?
自動でできるかな?自動でできるかな?
自動でできるかな?
 
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
君にもできる! にゅーとろん君になってみよー!!  「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...君にもできる! にゅーとろん君になってみよー!!  「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
 
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策
【Interop Tokyo 2015】最新セキュリティサーベイからみるトレンドと解決策
 
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
『WAN SDN Controller NorthStarご紹介 & デモ』
『WAN SDN Controller NorthStarご紹介 & デモ』『WAN SDN Controller NorthStarご紹介 & デモ』
『WAN SDN Controller NorthStarご紹介 & デモ』
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門
 

En vedette

En vedette (20)

OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかOpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみようRyu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみよう
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
 
Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。
 
Network Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyNetwork Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudy
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Dockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたDockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみた
 
Openflow超解釈
Openflow超解釈Openflow超解釈
Openflow超解釈
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととか最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととか
 
ハードなOpen flowswitcの話
ハードなOpen flowswitcの話ハードなOpen flowswitcの話
ハードなOpen flowswitcの話
 
Basic functionalities of ez cast dongle
Basic functionalities of ez cast dongleBasic functionalities of ez cast dongle
Basic functionalities of ez cast dongle
 
Industrial Equipment.
Industrial Equipment. Industrial Equipment.
Industrial Equipment.
 
la comunicación en la sociedad
la comunicación en la sociedad la comunicación en la sociedad
la comunicación en la sociedad
 
Virus360 supersaiyajinlegendario.exe
Virus360 supersaiyajinlegendario.exeVirus360 supersaiyajinlegendario.exe
Virus360 supersaiyajinlegendario.exe
 
Guide hygiene informatique_anssi
Guide hygiene informatique_anssiGuide hygiene informatique_anssi
Guide hygiene informatique_anssi
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into Modules
 

Similaire à Lagopusで試すFW

Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
openrtm
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
 

Similaire à Lagopusで試すFW (20)

Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
 
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
ネットワーク構築訓練 入門
ネットワーク構築訓練 入門ネットワーク構築訓練 入門
ネットワーク構築訓練 入門
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
loggregator update
loggregator updateloggregator update
loggregator update
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組統合ログ分析技術Lognosisと運用ログ分析の取組
統合ログ分析技術Lognosisと運用ログ分析の取組
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
CONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 NetworkCONBU LL Diver/YAPC::Asia 2014 Network
CONBU LL Diver/YAPC::Asia 2014 Network
 
Lagopus Router
Lagopus RouterLagopus Router
Lagopus Router
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
 

Lagopusで試すFW

  • 1. Copyright©2014 NTT corp. All Rights Reserved. Lagopusで試すFirewall OpenFlow1.3で実現する FW運用のテストツール試作 2015/09/29 hibitomo
  • 2. 1Copyright©2014 NTT corp. All Rights Reserved. はじめに  今回の内容はTremaday#7で発表した 内容+αです.  Tremadayでのリクエストにお応えして, ACLのテスト駆動をデモします.
  • 3. 2Copyright©2014 NTT corp. All Rights Reserved. Agenda  Lagopus/OpenFlowについて  お約束  TremaDayの内容  聞いたことある人はごめんなさい  テスト駆動なFW  アーキテクチャ  Ryu certificationと おまじない  デモ
  • 4. 3Copyright©2014 NTT corp. All Rights Reserved. コントローラ SDN?OpenFlow?Lagopus?  レガシーなネットワーク装置 ルータ コントロールプレーン データプレーン ファイアーウォール コントロールプレーン データプレーン ロードバランサ コントロールプレーン データプレーン  SDN スイッチ データプレーン スイッチ データプレーン スイッチ コントロールプレーン データプレーン アプリ コントローラ コントロールプレーン アプリ プログラマブルAPI OpenFlowプロトコル
  • 5. 4Copyright©2014 NTT corp. All Rights Reserved. OpenFlow?  どういうパケットだったら  受信ポート番号,パケットヘッダの値(宛先,ソー ス,各種ID...)  どういう処理をする  パケットヘッダの追加,削除,編集  転送(ユニキャスト,マルチキャスト,ロードバラ ンシング...)  コントローラにパケットを転送して処理も可能 OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  • 6. 5Copyright©2014 NTT corp. All Rights Reserved. Lagopus  OpenFlowスイッチのソフトウェア実装  汎用x86サーバで動作可能  高速なパケット処理と幅広いプロトコルに対応  > 10Gbps  OpenFlow仕様に幅広く対応 OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  • 7. 6Copyright©2014 NTT corp. All Rights Reserved. ユースケースの例  SDN Japan 2014での実証実験  アク セスポイ ント   ■  A Pの識別(V LA N ) ■  V ID 毎にQoS制御 PoEスイッチ インターネット アクセスポイント ( AP) La g op u sの役割
  • 8. 7Copyright©2014 NTT corp. All Rights Reserved. オープンソース  2014年7月31日に公開  http://lagopus.github.io/  開発への参加  コードの提供 -> GitHub Pull Request  バグレポート -> GitHub Issues  議論 -> Developers ML
  • 9. 8Copyright©2014 NTT corp. All Rights Reserved.
  • 10. Copyright©2014 NTT corp. All Rights Reserved. Lagopusで試すFirewall OpenFlow1.3で実現する FW運用のテストツール試作 2015/09/29 hibitomo
  • 11. 10Copyright©2014 NTT corp. All Rights Reserved. ところで  ご覧になったことありますか?  @stereocatさん, Tremaday #4 http://www.slideshare.net/stereocat55/tremafirewall
  • 12. 11Copyright©2014 NTT corp. All Rights Reserved. @stereocatさんのスライドです http://www.slideshare.net/stereocat55/tremafirewall
  • 13. 12Copyright©2014 NTT corp. All Rights Reserved. @stereocatさんのスライドです http://www.slideshare.net/stereocat55/tremafirewall
  • 14. 13Copyright©2014 NTT corp. All Rights Reserved. @stereocatさんのスライドです http://www.slideshare.net/stereocat55/tremafirewall
  • 15. 14Copyright©2014 NTT corp. All Rights Reserved. ところで,,,,  実装はOpenFlow1.0ベース  RangeはBitmaskでどう表現するの???  そもそもL4はbitmask掛けれない...  FWをOpenFlowで表現するのは無理?  簡単なテストにしか使えない?
  • 16. Copyright©2014 NTT corp. All Rights Reserved. Lagopusで試すFirewall OpenFlow1.3で実現する FW運用のテストツール試作
  • 17. Copyright©2014 NTT corp. All Rights Reserved. Lagopusで試すFirewall OpenFlow1.3で実現する FW運用のテストツール試作 ココが違う
  • 18. 17Copyright©2014 NTT corp. All Rights Reserved. Agenda  OpenFlow1.3で実現するFirewall  Range表記のbitmask変換  TCP/UDPポートのmask適用方法  実装(テーブル設計)  FW運用のテストツール試作  Ryu Certificationの流用  おまじない  デモ
  • 19. 18Copyright©2014 NTT corp. All Rights Reserved. Agenda  OpenFlow1.3で実現するFirewall  Range表記のbitmask変換  TCP/UDPポートのmask適用方法  実装(テーブル設計)  FW運用のテストツール試作  Ryu Certificationの流用  おまじない  デモ
  • 20. 19Copyright©2014 NTT corp. All Rights Reserved. Rangeの表記どうする?  そもそもTCAMで検索できているはず  TCAMは{0,1,don’t care}で検索  RangeもTCAMで検索しているなら,Lagopus でも検索できるはず.  再起アルゴリズムで Range -> Bitmask表記のルールに変換
  • 21. 20Copyright©2014 NTT corp. All Rights Reserved. 例題 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1  0110 ~ 1111 をbitmaskのルールに分割
  • 22. 21Copyright©2014 NTT corp. All Rights Reserved. 例題 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1  0110 ~ 1111 をbitmaskのルールに分割
  • 23. 22Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 1. ****が範囲に含まれるかチェック 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ****
  • 24. 23Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 2. ****の範囲を2つに分割 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1***0***
  • 25. 24Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 3. 1***はRangeに含まれる 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1***0***
  • 26. 25Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 2’. 0***を2つに分割 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1***00** 01**
  • 27. 26Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 2’’. 01**を2つに分割 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 00** 010* 1***011*
  • 28. 27Copyright©2014 NTT corp. All Rights Reserved. Algorithm 簡単(?)に 2’’. 01**を2つに分割 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 00** 010* 1***011* 0110 ~ 1111 で表されるレンジは,{011*, 1***}で 表されるルールの集合でちょうどカバー出来る.
  • 29. 28Copyright©2014 NTT corp. All Rights Reserved. Agenda  OpenFlow1.3で実現するFirewall  Range表記のbitmask変換  TCP/UDPポートのmask適用方法  実装(テーブル設計)  FW運用のテストツール試作  Ryu Certificationの流用  おまじない  デモ
  • 30. 29Copyright©2014 NTT corp. All Rights Reserved. TCP/UDPポートのmask適用方法  Metadataにコピーする  しかし,Copy_Fieldは未対応.... Metadata (64bit)L4 srcL4 dst
  • 31. 30Copyright©2014 NTT corp. All Rights Reserved. TCP/UDPポートのmask適用方法  単純に書きくだす. ※ルール数が65536 * 2 * 2 = 26万 for i in range(0, 65535): # SRC for ip_proto in [6, 17] : flow = {"table_id":0,"priority":1000, "actions":[{"type":"WRITE_METADATA","metadata":i << 16, "metadata_mask":0x00000000FFFF0000}], "match":{"dl_type":2048,"ip_proto":ip_proto,"tp_src":i}} mod_flow_entry(datapath, flow, ofproto.OFPFC_ADD) # DST ...
  • 32. 31Copyright©2014 NTT corp. All Rights Reserved. Lagopusなら動く  Lagopusならなんとかしてくれる. 私の戦闘力は 100万です.
  • 33. 32Copyright©2014 NTT corp. All Rights Reserved. その他の手  リアクティブに登録しても実現できる 1. TCP/UDPパケットが来たらPacket-In 2. ポート番号のメタデータコピーのルール追加 未登録のPort番号で あれば,Packet-In Port番号コピーのルール + Packet-Out コントローラ スイッチ データプレーン コントロールプレーン
  • 34. 33Copyright©2014 NTT corp. All Rights Reserved. Agenda  OpenFlow1.3で実現するFirewall  Rangeの表記どうする?  TCP/UDPポートどうする?  実装(テーブル設計)  FW運用のテストツール試作  Ryu Certificationの流用  おまじない  デモ
  • 35. 34Copyright©2014 NTT corp. All Rights Reserved. 実装  テーブル設計  table 0:  L4 srcポートをmetadataにコピー(32~16bitに)  table 1:  L4 dstポートをmetadataにコピー (16~0bitに)  table 2:  Range -> Bitmask変換したルール群投入  マッチしたら落とす or OUTPUT or Next table (他のアプリケーション)
  • 36. 35Copyright©2014 NTT corp. All Rights Reserved. 実装  Table 0のルール例 {'priority': 1000, 'table_id': 0, 'match': {'dl_type': 2048, 'ip_proto': 6, 'tp_src': 5}, 'actions': [ {'metadata_mask': 4294901760, ‘type': 'WRITE_METADATA', 'metadata': 327680} ] } 0xFFFF0000 UDP/TCP両方で ルール登録 0x00050000
  • 37. 36Copyright©2014 NTT corp. All Rights Reserved. 実装  Table 1のルール例 {'priority': 1000, 'table_id': 1, 'match': {'dl_type': 2048, 'ip_proto': 17, 'tp_dst': 8}, 'actions': [ {'metadata_mask': 65535, 'type': 'WRITE_METADATA', 'metadata': 8} ] }
  • 38. 37Copyright©2014 NTT corp. All Rights Reserved. 実装  Table 2のルール例 (アドレスに意味はありません) {"table_id":2,"priority":65535,"cookie":0, "actions":[], "match":{ "dl_type":2048, "ipv4_src":“192.168.1.10/255.255.255.240", "ipv4_dst":“192.168.1.171/255.255.255.240", "ip_proto":17, "metadata":"0x0000000000580050/0x00000000ffffffff"} }
  • 39. 38Copyright©2014 NTT corp. All Rights Reserved. その他メリット  ルールの追加/削除が動的に出来ます.  priorityをちゃんと考えれば.  他のアプリと組み合わせられます.  テーブル設計の競合注意  QoSも出来る  ステートは持てない.  速いかも?(試してない)
  • 40. 39Copyright©2014 NTT corp. All Rights Reserved. Agenda  OpenFlow1.3で実現するFirewall  Rangeの表記どうする?  TCP/UDPポートどうする?  実装(テーブル設計)  FW運用のテストツール試作  Ryu Certificationの流用  おまじない  デモ
  • 41. 40Copyright©2014 NTT corp. All Rights Reserved. 再掲 http://www.slideshare.net/stereocat55/tremafirewall
  • 42. 41Copyright©2014 NTT corp. All Rights Reserved. 再掲 http://www.slideshare.net/stereocat55/tremafirewall ここまでの内容 ここからの内容
  • 43. 42Copyright©2014 NTT corp. All Rights Reserved. Ryu Certification  SDN Framework ‘Ryu’のSwitchテストツール  スイッチのOpenFlow仕様への準拠の度合いを検証する  テストパターンはJSONで記述 http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
  • 44. 43Copyright©2014 NTT corp. All Rights Reserved. Ryu Certification  SDN Framework ‘Ryu’のSwitchテストツール  スイッチのOpenFlow仕様への準拠の度合いを検証する  テストパターンはJSONで記述 http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html
  • 45. 44Copyright©2014 NTT corp. All Rights Reserved. Ryu Certification  SDN Framework ‘Ryu’のSwitchテストツール  スイッチのOpenFlow仕様への準拠の度合いを検証する  テストパターンはJSONで記述 http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html 固定
  • 46. 45Copyright©2014 NTT corp. All Rights Reserved. Ryu Certification  SDN Framework ‘Ryu’のSwitchテストツール  スイッチのOpenFlow仕様への準拠の度合いを検証する  テストパターンはJSONで記述 http://osrg.github.io/ryu-book/ja/html/switch_test_tool.html 固定 または未達検知
  • 47. 46Copyright©2014 NTT corp. All Rights Reserved. こうか! Lagopus FW 補助SW 試験対象SW Ryu Certification テストパターン ファイル ACL (1)パケットインのみの フローエントリ登録 (2)パケット印加 (3)パケットイン 又は未達検知
  • 48. 47Copyright©2014 NTT corp. All Rights Reserved. 未達検知のおまじない --- /usr/local/lib/python2.7/dist-packages/ryu/tests/switch/tester.py 2015- 01-16 11:41:22.000000000 +0900 +++ tester.py 2015-09-29 14:26:26.706239312 +0900 @@ -789,11 +789,7 @@ before = before_stats[target_tbl_id] after = rcv_msgs[target_tbl_id] if before['lookup'] < after['lookup']: - lookup = True - if before['matched'] < after['matched']: - raise TestFailure(self.state) - if not lookup: - raise TestError(self.state) + raise TestFailure(self.state)
  • 49. 48Copyright©2014 NTT corp. All Rights Reserved. テストパターンファイルの記述  ACCEPT [ "test1", { "description":"allow sample test", "prerequisite":[ ### match -> in_port:1, action -> output:4294967293 ### ], “tests”:[ { “ingress”:[ ### テストしたいパケット ### ], “PACKET_IN”:[ ### ingressと同じ ### ] } ] } ] Packet_In
  • 50. 49Copyright©2014 NTT corp. All Rights Reserved. テストパターンファイルの記述  DROP [ "test1", { "description":"allow sample test", "prerequisite":[ ### match -> in_port:1, action -> output:4294967293 ### ], “tests”:[ { “ingress”:[ ### テストしたいパケット ### ], “table-miss”:[ 0 ] } ] } ] Packet_In
  • 51. 50Copyright©2014 NTT corp. All Rights Reserved.  デモ
  • 52. 51Copyright©2014 NTT corp. All Rights Reserved. 出力 --- Test start --- waiting for switches connection... dpid=0000000000000001 : Join target SW. dpid=0000000000000002 : Join tester SW. Network Test 1 test1-1 OK Network Test 2 ACCEPT sample test OK DROP sample test ERROR Table-miss error: increment in matched_count. --- Test end --- --- Test report --- Table-miss error(1) Network Test 2 DROP sample test OK(2) / ERROR(1) Testログ Summary
  • 53. 52Copyright©2014 NTT corp. All Rights Reserved. その他の利点  同じアーキテクチャで他のNW機器もテスト可  descriptionを書きましょう(※重要)  いろいろなプロトコルのテスト可能  VLAN  MPLS  PBB  転送,破棄以外のテストも可能  QoS  Broadcast
  • 54. 53Copyright©2014 NTT corp. All Rights Reserved. まとめ  Lagopus (OpenFlow1.3) でL3/L4の パケットフィルタを実現.  Ryu Certificationを利用して,パケッ トフィルタのテストを実現.
  • 55. 54Copyright©2014 NTT corp. All Rights Reserved. Thank you for your attention This research is a part of the project for “Research and Development of Network Virtualization Technology” supported by the Ministry of Internal Affairs and Communications.