LoginSignup
0
0

More than 1 year has passed since last update.

OpenFlow@Treamの環境構築

Last updated at Posted at 2022-03-23

概要

OpenFlowの勉強用にTremaの環境を構築する。

環境

  • OS : osx multipass上で動作するUbuntu 16.04
  • Ruby 2.3
  • OpenVSwich 2.5.9

手順

(1) Ubutnu16.04を起動する。

$ multipass launch -n openflow 16.04
$ multipass shell openflow

Ubuntu 16.04を指定するのがポイント。
デフォルトだとUbuntu18.04が起動する。Ubuntu18.04だとopensslのバージョンが1.1以上となり、Ruby2.3と互換性がなく環境構築にハマる。。

(2) Rubyをインストール

$ sudo apt-get update
$ sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev  libffi-dev
$ tar -xzvf ruby-2.3.1.tar.gz
$ cd ruby-2.3.1/ 
$ ./configure 
$ mak
$ sudo make install
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

(3) Bundlerをインストール

sudo gem install bundler -v 1.11.2

(4) OpenVswitchをインストール

$ sudo apt-get install -y openvswitch-switch
$ sudo service openvswitch-switch start
$ ovs-vswitchd --version
ovs-vswitchd (Open vSwitch) 2.5.9
Compiled Jan 28 2021 19:49:45

(5) サンプルの動作確認

$ git clone https://github.com/trema/hello_trema
$ cd hello_trema
$ bundle _1.11.2_ install --binstubs
$ ./bin/trema run lib/hello_trema.rb -c trema.conf[sudo] password for ubuntu: 
Trema started.
Hello 0xabc!

(6) パケット確認
(5)実施時のパケットをキャプチャ。
ループバックアドレスのコントローラ(ポート6653)とスイッチ(ポート50444)間でOpenflowのパケットが送受信していることが確認できる。

コントローラ(ポート6653)→ Hello → スイッチ(ポート50444)
コントローラ(ポート6653)← Hello ← スイッチ(ポート50444)
コントローラ(ポート6653)→ ECHO Request → スイッチ(ポート50444)
コントローラ(ポート6653)← ECHO Response ← スイッチ(ポート50444)
コントローラ(ポート6653)→ Feature Request → スイッチ(ポート50444)
コントローラ(ポート6653)← Feature Response ← スイッチ(ポート50444)

 15 3.258849   127.0.0.1  127.0.0.1 TCP  76 50442 → 6653 [SYN] Seq=0 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=22881 TSecr=0 WS=128
 16 3.258855   127.0.0.1 127.0.0.1 TCP  56 6653 → 50442 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
 21 3.780455   127.0.0.1 127.0.0.1 TCP  76 50444 → 6653 [SYN] Seq=0 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=23013 TSecr=0 WS=128
 22 3.780471   127.0.0.1 127.0.0.1 TCP  76 6653 → 50444 [SYN, ACK] Seq=0 Ack=1 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=23013 TSecr=23013 WS=128
 23 3.780483   127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [ACK] Seq=1 Ack=1 Win=43776 Len=0 TSval=23013 TSecr=23013
 24 3.780517   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_HELLO
 25 3.780522   127.0.0.1 127.0.0.1 TCP  68 6653 → 50444 [ACK] Seq=1 Ack=9 Win=43776 Len=0 TSval=23013 TSecr=23013
 26 3.782109   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_HELLO
 27 3.782121   127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [ACK] Seq=9 Ack=9 Win=43776 Len=0 TSval=23013 TSecr=23013
 28 3.784120   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_ECHO_REQUEST
 29 3.784127   127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [ACK] Seq=9 Ack=17 Win=43776 Len=0 TSval=23013 TSecr=23013
 30 3.784171   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_ECHO_REPLY
 31 3.785372   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_FEATURES_REQUEST
 32 3.785542   127.0.0.1 127.0.0.1 OpenFlow 148Type: OFPT_FEATURES_REPLY
 37 3.822649   127.0.0.1 127.0.0.1 TCP  68 6653 → 50444 [ACK] Seq=25 Ack=97 Win=43776 Len=0 TSval=23023 TSecr=23013
 50 8.790217   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_ECHO_REQUEST
 51 8.790255   127.0.0.1 127.0.0.1 TCP  68 6653 → 50444 [ACK] Seq=25 Ack=105 Win=43776 Len=0 TSval=24265 TSecr=24265
 52 8.793534   127.0.0.1 127.0.0.1 OpenFlow 76 Type: OFPT_ECHO_REPLY
 53 8.839841   127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [ACK] Seq=105 Ack=33 Win=43776 Len=0 TSval=24278 TSecr=24266
 58 11.547035  127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [FIN, ACK] Seq=105 Ack=33 Win=43776 Len=0 TSval=24954 TSecr=24266
 59 11.558029  127.0.0.1 127.0.0.1 TCP  68 6653 → 50444 [FIN, ACK] Seq=33 Ack=106 Win=43776 Len=0 TSval=24957 TSecr=24954
 60 11.558043  127.0.0.1 127.0.0.1 TCP  68 50444 → 6653 [ACK] Seq=106 Ack=34 Win=43776 Len=0 TSval=24957 TSecr=24957

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0