SlideShare una empresa de Scribd logo
1 de 22
2013 年 4 月
株式会社エーピーコミュニケーションズ:
近藤
TremaTrema で構築!で構築!
中小企業の社内中小企業の社内 LANLAN
自己紹介
 エーピーコミュニケーションズという会社で働いて
います。
 中小規模の Sier でネットワーク、サーバ、開発をやってい
ます。
 でも、私は“フツー“のネットワークエンジニアです。
 プログラミングは、趣味でも仕事でもやったことありませ
んでした
2
今日の目的
 社内 LAN を Trema+Pica8 を使って NW 更改した話をしま
す、
 Trema.0.3.14
 Pica8 Pronto3290(PicOS1.6.1)
 Trema ユーザー的な視点で。
 そして、地味です。
 GUI の実装はしていません。
 要はレイヤ 3 までのはなしです。
3
目次
 社内 LAN の構成
 動作の仕組みなど
 導入後のフローテーブルの状態
 性能について
 まとめ
4
社内 LAN の構成
5
 規模と構成(既存)
 規模
 クライアント :30 台(色々な部門)
 検証用 SV:40 台(仮想&物理)
 ファイルサーバ :1 台
 プリンタ:1台
 無線 AP :1台
 規模と構成(既存)(続き)
 超概略構成
 すべてのホストが一つのセグメント。
 ちょうど、社内 LAN 更改の話が出たので、
社内 LAN の構成
6
Hub
L2SW
FW
… となった訳です
私の上司
社内 LAN の構成
7
 移行後
 OpenFlow スイッチは物理的な HW*1 台
 実は、フルメッシュでも動作。経路切替もできます。
 スイッチが全セグメントを集約する
 各部門ごとに別のセグメントへ移動
 アドレスのアサインは DHCP をつかう
 ブラウジングは、 WebProxy 経由
 …一部通信制限あり(コードにベタ書き )
…            という
感じ。です
社内 LAN の構成
8
 移行後(続き)
 … 構成図
Server Seg.
DHCP SV
Web Proxy SV
File SV
WLANClient Seg.
(DHCP Client*??hosts)
B Group Seg.
(DHCP Client*10hosts)
A Group Seg.
(DHCP Client*10hosts)
C Seg.
*20~30hosts
OF Mgmt Seg.
OF Ctrlr SV,
Remo-maintainance SV.
Traffic Monitor SV
on ESX
TestSV*40hosts On ESX
Mgmt Eth0
GW Seg.
C. Seg.
GW
今回は、 DHCP を使う上、オフィス LAN という特性上リアクティブ型です。
動作の仕組み
 このスクリプトでできること
 LLDP のトポロジ管理
 CapabilityTLV で簡単な接続機器識別
 おまけ:トポロジー描画
 フルメッシュ・シングル構成での L3 ルーティングと L2 ス
イッチング
 DHCP リレーエージェント
 ARP の返答と L2 的な透過
 ブロードキャスト / マルチキャスト制限
 経路切り替え
9
動作の仕組み
 転送処理のルール(とエントリの優先度)
 ARP ・ LLDP のような特殊なやつは常に、 Packet_In で処理
 同じセグメント間の ARP であれば、 Flow で通過させてあげる
 DHCP パケットは常に、 Packet_In で処理
 コントローラで、 DHCP リレーをやらせる
 DHCP フィールドをいじる必要がある(後述)
 そのほかの IP パケット
 同じセグメント間通信
 異なるセグメントへの通信
 Internet への通信
※ 例外はあるが、基本的にリアクティブにフローを学習
10
動作の仕組み
 転送処理のルール(とエントリの設計)
11
…たとえば サーバからインターネット向けの Web 通信
サーバから DHCP クライアント向けの DHCP 通信
…たとえば サーバからインターネット向けの Web 通信
サーバから DHCP クライアント向けの DHCP 通信
DHCP
Web
In_port
:SV Side
In_port
:SV Side
Ether src
:SV
Ether src
:SV
Ether dst
:OFS
Ether dst
:OFS
Ether type
:IP
Ether type
:IP
VLAN id
:0
VLAN id
:0
VLAN pcp
:0
VLAN pcp
:0
IP src
:SV
IP src
:SV
IP dst
:OFS
IP dst
:OFS
IP proto
:17
IP proto
:17
IP ToS bits
:0
IP ToS bits
:0
Tp Src
:67
Tp Src
:67
Tp Dst
:68
Tp Dst
:68
In_port
:SV Side
In_port
:SV Side
Ether src
:SV
Ether src
:SV
Ether dst
:OFS
Ether dst
:OFS
Ether type
:IP
Ether type
:IP
VLAN id
:0
VLAN id
:0
VLAN pcp
:0
VLAN pcp
:0
IP src
:SV
IP src
:SV
IP dst
:Internet
IP dst
:Internet
IP proto
:6
IP proto
:6
IP ToS bits
:0
IP ToS bits
:0
Tp Src
:80
Tp Src
:80
Tp Dst
:xxxxx
Tp Dst
:xxxxx
DHCPSV
Web proxy
In Segment B
DHCPSV
Web proxy
In Segment B
FirewallFirewallDHCP Client
Web Browser
In Segment A
DHCP Client
Web Browser
In Segment A
DHCP
DNS
Web
SMBWeb
DNS
To And From The InternetTo And From The Internet
To And From The ServerTo And From The Server
OFSOFS
オフィス LAN …は色々な通信が飛び交うオフィス LAN …は色々な通信が飛び交う
動作の仕組み
 転送処理のルール(とエントリの設計)
 リアクティブ型エントリを設計する際の注意点・やるべきこと
 通信の種類の整理
 HWSW は、 TCAM が小さい。「冗長なエントリ」は可能な限り
集約。
 ほかのエントリとマッチングフィールドが重複しないように注意する
。
 HW 処理から CPU 処理に切替わると、驚くほどパフォーマンス悪く
なるよ。
 フローの優先度。
… だとおもいます。
12
サーバからインターネット向けの Web 通信 と サーバから DHCP クライアント向けの DHCP 通信の比
較
サーバからインターネット向けの Web 通信 と サーバから DHCP クライアント向けの DHCP 通信の比
較
DHCP
Web
In_port
:SV Side
In_port
:SV Side
Ether src
:SV
Ether src
:SV
Ether dst
:OFS
Ether dst
:OFS
Ether type
:IP
Ether type
:IP
VLAN id
:0
VLAN id
:0
VLAN pcp
:0
VLAN pcp
:0
IP src
:SV
IP src
:SV
IP dst
:OFS
IP dst
:OFS
IP proto
:17
IP proto
:17
IP ToS bits
:0
IP ToS bits
:0
Tp Src
:67
Tp Src
:67
Tp Dst
:68
Tp Dst
:68
In_port
:SV Side
In_port
:SV Side
Ether src
:SV
Ether src
:SV
Ether dst
:OFS
Ether dst
:OFS
Ether type
:IP
Ether type
:IP
VLAN id
:0
VLAN id
:0
VLAN pcp
:0
VLAN pcp
:0
IP src
:SV
IP src
:SV
IP dst
:Internet
IP dst
:Internet
IP proto
:6
IP proto
:6
IP ToS bits
:0
IP ToS bits
:0
Tp Src
: xxxxx
Tp Src
: xxxxx
Tp Dst
:80
Tp Dst
:80
アクションが異なるほかのエントリと被る可能性がないフィールド1つ使う。たとえば、 IP dst 。
動作の仕組み
 DHCP リレーエージェント①
 …Racket というライブラリ
 Message.data から必要な値を取得して、 Racket にわたして、
 パケット生成 ( 赤まるを書き換え ) ・ Packet_out 。「ほぼ」こ
れだけ。
13
n.layers[5] = Racket::L5::BOOTP.new
n.layers[5].type = type
n.layers[5].hwtype = hwtype
n.layers[5].hops = 0
n.layers[5].id = tid
n.layers[5].secs
n.layers[5].flags
n.layers[5].cip = cip
n.layers[5].yip = yip
n.layers[5].sip = sip
n.layers[5].gip = gi_addr
n.layers[5].chaddr = mac
n.layers[5].server = nil
n.layers[5].file = nil
n.layers[5].fix! payload
n.layers[4].payload = n.layers[5]
n.layers[4].fix!(n.layers[3].src_ip, n.layers[3].dst_ip)
n.layers[4].payload = ""
frame = ether_h << n.pack
return frame + message.data[-1, 1]
動作の仕組み
 DHCP リレーエージェント②
 …Packet_In の処理のかきかた。
14
if message.udp_src_port == 68
/* 仮に、奇数ポートと偶数ポートでアドレス払い出しを替える場合 */
    port = ( message.in_port ).modulo(2)
if port == 1
   gip_addr = "192.168.80.254"
else
   gip_addr = "192.168.81.254“
end
data = rewrite_dhcp message, gip_addr
actions = []
/* ながいので 省略。ここはブロードキャストをユニキャストに変更する為のアクション */
send_packet_out(
   dpid,
   :actions => actions,
   :data => data
)
send_flow_mod_add(
   dpid,
   :match => ExactMatch.from( message ),
   :actions=>SendOutPort.new(:port=>OFPP_CONTROLLER, :max_len=>10000),
   :priority => 65535,
   :idle_timeout => 60
)
end
DHCP リレーは、フィールドの書き換えを伴う為、
コントローラに Packet_In させる為の Flow を追加する。
デフォルトの max_len は 128Byte 、 DHCP は 128Byte よりも大きいので、
Max_len を指定してあげる。
動作の仕組み
 ブロードキャスト転送
 ローカルブロードキャストと DHCP のみ、転送を許可
 DHCP だけは、 Packet_in させてあげる
 それ以外のブロードキャストは Drop させてやる
 フローを書き込んでおいて、二度と Packet_In させないように
する。
15
・ Flow Entry
cookie=0x185b56, duration=57.864s, priority=10000,ip,in_port=9,dl_dst=ff:ff:ff:ff:ff:ff,nw_dst=192.168.83.255  
actions=output:10,output:6,output:7,output:8,output:12
cookie=0x186b9b, duration=41.695s, priority=65535,udp,dl_dst=ff:ff:ff:ff:ff:ff,tp_src=68 actions=CONTROLLER:10000
導入後のフローテーブルの状態
 スイッチのフローエントリー数
 最大でも、凡そ 600 フロー。
 この程度なら、まだ余裕※です。
 増減の時間帯に規則性がある
※ 出典: Pica8 社製 Pronto のベンチマークでは、公称最大エントリ数 2048 。
http://www.toyo.co.jp/page.jsp?id=18304
16
性能について
 LAN 内通信(ファイル転送※ 1 )
 …なぜかアップロードのほうが速度がはやい ※ 2
※1 稼働中なので iperf できないのです
※2 端末とサーバのディスク書き込み速度のせいか?
17
Upload Download
=456Mbps =240Mbps
性能について
 …インターネット向け(下り)
http://www.musen-lan.com/speed/
18
性能について
 …インターネット向け(上り)
http://www.musen-lan.com/speed/
19
性能について
 コントローラの CPU 負荷とメモリ使用率
 全時間帯でメモリは 2.5%(51MB)
 利用可能メモリ: 2G
 全時間帯で CPU は 30% …程度で稼働中
 Intel(R) Xeon(R)2.4Ghz*2core
20
まとめなど
21
 小規模ですが、 Ruby コードでも性能面では全く問題なし!
 もっと小さなノート PC でもこの規模であれば、きっと大丈夫。かも
 サーバのスペックなどいろいろベースはできたはず。
 スループット、文句なしに実用的。
 もちろん、実装次第。今回は、 Trema(Ruby)+HW スイッチの構成。
 やっぱり、動的に ACL を書くような GUI ツールがほしい。
 これは、べつの件で開発中。
 CLI だけなら(割と)簡単な方法あります!かっこいい GUI もつくってます!
 今後の OpenFlow スイッチ開発に期待したいです。
 おそらく、大きな NW や使いかたによっては、絶対に TCAM の容量が足りなくな
…る
 小さい規模の NW に GE48 …ポートは、すこしオーバースペック
 SDN なみなさま、小さな NW で OpenFlow 。どう思います?
まとめなど
22
              質問?
    私たちは、 Interop 2013 に出展しま
す。

Más contenido relacionado

La actualidad más candente

RouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみようRouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみよう
Yousuke Saki
 
SNEPは大変だった
SNEPは大変だったSNEPは大変だった
SNEPは大変だった
Hirokuma Ueno
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
Brocade
 

La actualidad más candente (20)

201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 
DS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使うDS-LiteをFreeBSDで使う
DS-LiteをFreeBSDで使う
 
Wireless bridge
Wireless bridgeWireless bridge
Wireless bridge
 
wakamonog6 ルーティングチュートリアル 〜サービスの成長とネットワークの変遷〜
wakamonog6 ルーティングチュートリアル 〜サービスの成長とネットワークの変遷〜wakamonog6 ルーティングチュートリアル 〜サービスの成長とネットワークの変遷〜
wakamonog6 ルーティングチュートリアル 〜サービスの成長とネットワークの変遷〜
 
ルーティングチュートリアル - AS間経路制御
ルーティングチュートリアル - AS間経路制御ルーティングチュートリアル - AS間経路制御
ルーティングチュートリアル - AS間経路制御
 
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
RouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみようRouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみよう
 
IIJmio meeting #2 IIJmioとIPv6の話
IIJmio meeting #2 IIJmioとIPv6の話IIJmio meeting #2 IIJmioとIPv6の話
IIJmio meeting #2 IIJmioとIPv6の話
 
OSC2011 Tokyo/Spring 自宅SAN友の会(前半)
OSC2011 Tokyo/Spring 自宅SAN友の会(前半)OSC2011 Tokyo/Spring 自宅SAN友の会(前半)
OSC2011 Tokyo/Spring 自宅SAN友の会(前半)
 
ネットワーク初学者のための主要なプロトコルのお話
ネットワーク初学者のための主要なプロトコルのお話ネットワーク初学者のための主要なプロトコルのお話
ネットワーク初学者のための主要なプロトコルのお話
 
SNEPは大変だった
SNEPは大変だったSNEPは大変だった
SNEPは大変だった
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
 

Destacado

Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Michio Koyama
 
20130801 lan sheet pr_movie
20130801 lan sheet pr_movie20130801 lan sheet pr_movie
20130801 lan sheet pr_movie
SWATBrains
 
SSD+Squidで画像をキャッシュしなイカ?
SSD+Squidで画像をキャッシュしなイカ?SSD+Squidで画像をキャッシュしなイカ?
SSD+Squidで画像をキャッシュしなイカ?
Kazutoshi Fujimoto
 
Buffalo製無線APでのmultiple vlanの使い方
Buffalo製無線APでのmultiple vlanの使い方Buffalo製無線APでのmultiple vlanの使い方
Buffalo製無線APでのmultiple vlanの使い方
Toshiki Matsubara
 
サーバーとは(社内で利用されるサーバー)
サーバーとは(社内で利用されるサーバー)サーバーとは(社内で利用されるサーバー)
サーバーとは(社内で利用されるサーバー)
Hiroshi Oyamada
 
Membuat vlan perkantoran menggunakan cisco
Membuat vlan perkantoran menggunakan ciscoMembuat vlan perkantoran menggunakan cisco
Membuat vlan perkantoran menggunakan cisco
Doddy Rakasiwi
 

Destacado (17)

Openflow実験
Openflow実験Openflow実験
Openflow実験
 
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
 
20130801 lan sheet pr_movie
20130801 lan sheet pr_movie20130801 lan sheet pr_movie
20130801 lan sheet pr_movie
 
SSD+Squidで画像をキャッシュしなイカ?
SSD+Squidで画像をキャッシュしなイカ?SSD+Squidで画像をキャッシュしなイカ?
SSD+Squidで画像をキャッシュしなイカ?
 
Buffalo製無線APでのmultiple vlanの使い方
Buffalo製無線APでのmultiple vlanの使い方Buffalo製無線APでのmultiple vlanの使い方
Buffalo製無線APでのmultiple vlanの使い方
 
無線LANデンパゆんゆん観察
無線LANデンパゆんゆん観察無線LANデンパゆんゆん観察
無線LANデンパゆんゆん観察
 
サーバーとは(社内で利用されるサーバー)
サーバーとは(社内で利用されるサーバー)サーバーとは(社内で利用されるサーバー)
サーバーとは(社内で利用されるサーバー)
 
Membuat vlan perkantoran menggunakan cisco
Membuat vlan perkantoran menggunakan ciscoMembuat vlan perkantoran menggunakan cisco
Membuat vlan perkantoran menggunakan cisco
 
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
 
さくらのVPSに来た攻撃観察記
さくらのVPSに来た攻撃観察記さくらのVPSに来た攻撃観察記
さくらのVPSに来た攻撃観察記
 
xrdpで変える!社内のPC環境
xrdpで変える!社内のPC環境xrdpで変える!社内のPC環境
xrdpで変える!社内のPC環境
 
社内向けに恋愛ゲーム作ってみた
社内向けに恋愛ゲーム作ってみた社内向けに恋愛ゲーム作ってみた
社内向けに恋愛ゲーム作ってみた
 
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
社内ネットワーク改善の過程で分かった物理ゆえの闇と脆弱性そしてネットワークの基礎入門
 
サーバ攻撃されてみた
サーバ攻撃されてみたサーバ攻撃されてみた
サーバ攻撃されてみた
 
Dmmに入社してみた
Dmmに入社してみたDmmに入社してみた
Dmmに入社してみた
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 

Similar a Tremaで構築!中小企業の社内LAN #Tremaday 120419

泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
Dai Utsui
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
Daisuke Nakajima
 
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
Takashi Yamanoue
 

Similar a Tremaで構築!中小企業の社内LAN #Tremaday 120419 (20)

FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
RasPiからSEILにL2TP/IPSec接続
RasPiからSEILにL2TP/IPSec接続RasPiからSEILにL2TP/IPSec接続
RasPiからSEILにL2TP/IPSec接続
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
20060520.tcp
20060520.tcp20060520.tcp
20060520.tcp
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
 
DPDKを拡張してみた話し
DPDKを拡張してみた話しDPDKを拡張してみた話し
DPDKを拡張してみた話し
 
Faster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDPFaster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDP
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
HTML5 技術を利用した授業や会議向けデスクトップ画面実時間配信システムとその管理システムの試作, 情報処理学会IOT研究会26
 

Tremaで構築!中小企業の社内LAN #Tremaday 120419

  • 1. 2013 年 4 月 株式会社エーピーコミュニケーションズ: 近藤 TremaTrema で構築!で構築! 中小企業の社内中小企業の社内 LANLAN
  • 2. 自己紹介  エーピーコミュニケーションズという会社で働いて います。  中小規模の Sier でネットワーク、サーバ、開発をやってい ます。  でも、私は“フツー“のネットワークエンジニアです。  プログラミングは、趣味でも仕事でもやったことありませ んでした 2
  • 3. 今日の目的  社内 LAN を Trema+Pica8 を使って NW 更改した話をしま す、  Trema.0.3.14  Pica8 Pronto3290(PicOS1.6.1)  Trema ユーザー的な視点で。  そして、地味です。  GUI の実装はしていません。  要はレイヤ 3 までのはなしです。 3
  • 4. 目次  社内 LAN の構成  動作の仕組みなど  導入後のフローテーブルの状態  性能について  まとめ 4
  • 5. 社内 LAN の構成 5  規模と構成(既存)  規模  クライアント :30 台(色々な部門)  検証用 SV:40 台(仮想&物理)  ファイルサーバ :1 台  プリンタ:1台  無線 AP :1台
  • 6.  規模と構成(既存)(続き)  超概略構成  すべてのホストが一つのセグメント。  ちょうど、社内 LAN 更改の話が出たので、 社内 LAN の構成 6 Hub L2SW FW … となった訳です 私の上司
  • 7. 社内 LAN の構成 7  移行後  OpenFlow スイッチは物理的な HW*1 台  実は、フルメッシュでも動作。経路切替もできます。  スイッチが全セグメントを集約する  各部門ごとに別のセグメントへ移動  アドレスのアサインは DHCP をつかう  ブラウジングは、 WebProxy 経由  …一部通信制限あり(コードにベタ書き ) …            という 感じ。です
  • 8. 社内 LAN の構成 8  移行後(続き)  … 構成図 Server Seg. DHCP SV Web Proxy SV File SV WLANClient Seg. (DHCP Client*??hosts) B Group Seg. (DHCP Client*10hosts) A Group Seg. (DHCP Client*10hosts) C Seg. *20~30hosts OF Mgmt Seg. OF Ctrlr SV, Remo-maintainance SV. Traffic Monitor SV on ESX TestSV*40hosts On ESX Mgmt Eth0 GW Seg. C. Seg. GW 今回は、 DHCP を使う上、オフィス LAN という特性上リアクティブ型です。
  • 9. 動作の仕組み  このスクリプトでできること  LLDP のトポロジ管理  CapabilityTLV で簡単な接続機器識別  おまけ:トポロジー描画  フルメッシュ・シングル構成での L3 ルーティングと L2 ス イッチング  DHCP リレーエージェント  ARP の返答と L2 的な透過  ブロードキャスト / マルチキャスト制限  経路切り替え 9
  • 10. 動作の仕組み  転送処理のルール(とエントリの優先度)  ARP ・ LLDP のような特殊なやつは常に、 Packet_In で処理  同じセグメント間の ARP であれば、 Flow で通過させてあげる  DHCP パケットは常に、 Packet_In で処理  コントローラで、 DHCP リレーをやらせる  DHCP フィールドをいじる必要がある(後述)  そのほかの IP パケット  同じセグメント間通信  異なるセグメントへの通信  Internet への通信 ※ 例外はあるが、基本的にリアクティブにフローを学習 10
  • 11. 動作の仕組み  転送処理のルール(とエントリの設計) 11 …たとえば サーバからインターネット向けの Web 通信 サーバから DHCP クライアント向けの DHCP 通信 …たとえば サーバからインターネット向けの Web 通信 サーバから DHCP クライアント向けの DHCP 通信 DHCP Web In_port :SV Side In_port :SV Side Ether src :SV Ether src :SV Ether dst :OFS Ether dst :OFS Ether type :IP Ether type :IP VLAN id :0 VLAN id :0 VLAN pcp :0 VLAN pcp :0 IP src :SV IP src :SV IP dst :OFS IP dst :OFS IP proto :17 IP proto :17 IP ToS bits :0 IP ToS bits :0 Tp Src :67 Tp Src :67 Tp Dst :68 Tp Dst :68 In_port :SV Side In_port :SV Side Ether src :SV Ether src :SV Ether dst :OFS Ether dst :OFS Ether type :IP Ether type :IP VLAN id :0 VLAN id :0 VLAN pcp :0 VLAN pcp :0 IP src :SV IP src :SV IP dst :Internet IP dst :Internet IP proto :6 IP proto :6 IP ToS bits :0 IP ToS bits :0 Tp Src :80 Tp Src :80 Tp Dst :xxxxx Tp Dst :xxxxx DHCPSV Web proxy In Segment B DHCPSV Web proxy In Segment B FirewallFirewallDHCP Client Web Browser In Segment A DHCP Client Web Browser In Segment A DHCP DNS Web SMBWeb DNS To And From The InternetTo And From The Internet To And From The ServerTo And From The Server OFSOFS オフィス LAN …は色々な通信が飛び交うオフィス LAN …は色々な通信が飛び交う
  • 12. 動作の仕組み  転送処理のルール(とエントリの設計)  リアクティブ型エントリを設計する際の注意点・やるべきこと  通信の種類の整理  HWSW は、 TCAM が小さい。「冗長なエントリ」は可能な限り 集約。  ほかのエントリとマッチングフィールドが重複しないように注意する 。  HW 処理から CPU 処理に切替わると、驚くほどパフォーマンス悪く なるよ。  フローの優先度。 … だとおもいます。 12 サーバからインターネット向けの Web 通信 と サーバから DHCP クライアント向けの DHCP 通信の比 較 サーバからインターネット向けの Web 通信 と サーバから DHCP クライアント向けの DHCP 通信の比 較 DHCP Web In_port :SV Side In_port :SV Side Ether src :SV Ether src :SV Ether dst :OFS Ether dst :OFS Ether type :IP Ether type :IP VLAN id :0 VLAN id :0 VLAN pcp :0 VLAN pcp :0 IP src :SV IP src :SV IP dst :OFS IP dst :OFS IP proto :17 IP proto :17 IP ToS bits :0 IP ToS bits :0 Tp Src :67 Tp Src :67 Tp Dst :68 Tp Dst :68 In_port :SV Side In_port :SV Side Ether src :SV Ether src :SV Ether dst :OFS Ether dst :OFS Ether type :IP Ether type :IP VLAN id :0 VLAN id :0 VLAN pcp :0 VLAN pcp :0 IP src :SV IP src :SV IP dst :Internet IP dst :Internet IP proto :6 IP proto :6 IP ToS bits :0 IP ToS bits :0 Tp Src : xxxxx Tp Src : xxxxx Tp Dst :80 Tp Dst :80 アクションが異なるほかのエントリと被る可能性がないフィールド1つ使う。たとえば、 IP dst 。
  • 13. 動作の仕組み  DHCP リレーエージェント①  …Racket というライブラリ  Message.data から必要な値を取得して、 Racket にわたして、  パケット生成 ( 赤まるを書き換え ) ・ Packet_out 。「ほぼ」こ れだけ。 13 n.layers[5] = Racket::L5::BOOTP.new n.layers[5].type = type n.layers[5].hwtype = hwtype n.layers[5].hops = 0 n.layers[5].id = tid n.layers[5].secs n.layers[5].flags n.layers[5].cip = cip n.layers[5].yip = yip n.layers[5].sip = sip n.layers[5].gip = gi_addr n.layers[5].chaddr = mac n.layers[5].server = nil n.layers[5].file = nil n.layers[5].fix! payload n.layers[4].payload = n.layers[5] n.layers[4].fix!(n.layers[3].src_ip, n.layers[3].dst_ip) n.layers[4].payload = "" frame = ether_h << n.pack return frame + message.data[-1, 1]
  • 14. 動作の仕組み  DHCP リレーエージェント②  …Packet_In の処理のかきかた。 14 if message.udp_src_port == 68 /* 仮に、奇数ポートと偶数ポートでアドレス払い出しを替える場合 */     port = ( message.in_port ).modulo(2) if port == 1    gip_addr = "192.168.80.254" else    gip_addr = "192.168.81.254“ end data = rewrite_dhcp message, gip_addr actions = [] /* ながいので 省略。ここはブロードキャストをユニキャストに変更する為のアクション */ send_packet_out(    dpid,    :actions => actions,    :data => data ) send_flow_mod_add(    dpid,    :match => ExactMatch.from( message ),    :actions=>SendOutPort.new(:port=>OFPP_CONTROLLER, :max_len=>10000),    :priority => 65535,    :idle_timeout => 60 ) end DHCP リレーは、フィールドの書き換えを伴う為、 コントローラに Packet_In させる為の Flow を追加する。 デフォルトの max_len は 128Byte 、 DHCP は 128Byte よりも大きいので、 Max_len を指定してあげる。
  • 15. 動作の仕組み  ブロードキャスト転送  ローカルブロードキャストと DHCP のみ、転送を許可  DHCP だけは、 Packet_in させてあげる  それ以外のブロードキャストは Drop させてやる  フローを書き込んでおいて、二度と Packet_In させないように する。 15 ・ Flow Entry cookie=0x185b56, duration=57.864s, priority=10000,ip,in_port=9,dl_dst=ff:ff:ff:ff:ff:ff,nw_dst=192.168.83.255   actions=output:10,output:6,output:7,output:8,output:12 cookie=0x186b9b, duration=41.695s, priority=65535,udp,dl_dst=ff:ff:ff:ff:ff:ff,tp_src=68 actions=CONTROLLER:10000
  • 16. 導入後のフローテーブルの状態  スイッチのフローエントリー数  最大でも、凡そ 600 フロー。  この程度なら、まだ余裕※です。  増減の時間帯に規則性がある ※ 出典: Pica8 社製 Pronto のベンチマークでは、公称最大エントリ数 2048 。 http://www.toyo.co.jp/page.jsp?id=18304 16
  • 17. 性能について  LAN 内通信(ファイル転送※ 1 )  …なぜかアップロードのほうが速度がはやい ※ 2 ※1 稼働中なので iperf できないのです ※2 端末とサーバのディスク書き込み速度のせいか? 17 Upload Download =456Mbps =240Mbps
  • 20. 性能について  コントローラの CPU 負荷とメモリ使用率  全時間帯でメモリは 2.5%(51MB)  利用可能メモリ: 2G  全時間帯で CPU は 30% …程度で稼働中  Intel(R) Xeon(R)2.4Ghz*2core 20
  • 21. まとめなど 21  小規模ですが、 Ruby コードでも性能面では全く問題なし!  もっと小さなノート PC でもこの規模であれば、きっと大丈夫。かも  サーバのスペックなどいろいろベースはできたはず。  スループット、文句なしに実用的。  もちろん、実装次第。今回は、 Trema(Ruby)+HW スイッチの構成。  やっぱり、動的に ACL を書くような GUI ツールがほしい。  これは、べつの件で開発中。  CLI だけなら(割と)簡単な方法あります!かっこいい GUI もつくってます!  今後の OpenFlow スイッチ開発に期待したいです。  おそらく、大きな NW や使いかたによっては、絶対に TCAM の容量が足りなくな …る  小さい規模の NW に GE48 …ポートは、すこしオーバースペック  SDN なみなさま、小さな NW で OpenFlow 。どう思います?

Notas del editor

  1. それぞれの通信で、優先度がかぶらないようにフローを規定。
  2. それぞれの通信で、優先度がかぶらないようにフローを規定。
  3. それぞれの通信で、優先度がかぶらないようにフローを規定。
  4. 一般的な、 DHCP Relay の動作を Ruby で再現。
  5. 一般的な、 DHCP Relay の動作を Ruby で再現。
  6. フローなしの状態から、通信を開始すると、パケット一発目が 100ms 以上かかるのが少しきになる…。
  7. 4番目、わがまま。
  8. 今回のシステムよりも、もうちょっとまともなものです。