OSS+ Compass

【SDNチャレンジ】 第30回 LINCインストール(Raspberry Pi 3)編

2017.07.07

SDNチャレンジ

NEW

はじめに

photo-1441973270863-189a40107d80.jpg

以前、Raspberry Pi 2 Model BにOpen vSwitchをインストールし、動作確認まで行いました。
参考記事:

今回は、Raspberry Pi 3 Model B(以下、Raspberry Pi 3)でも動くLINCのインストールを行い、動作確認まで行ってみましょう。

 

LINCとは

LINCは、Apache 2.0ライセンスによって開発されている、OpenFlowスイッチです。
同じくソフトウェアで実装されているOpen vSwitchとは違い、開発言語にErlang言語を使用していて、ErlangノードとしてOSのユーザー空間に実装されています。
機能追加に対して柔軟性が高く、新しいOpenFlow機能の開発とテストを迅速に行うことができることや、Erlangは、並行処理指向のプログラミング言語のためCPUコア数が多いシステムで性能を発揮することが期待できます。

 

インストールの準備

LINCを動作させるためには、以下のソフトウェアが必要です。

ソフトウェア バージョン 備考
RASPBIAN JESSIE WITH DESKTOP 4.9 Raspberry Pi 3用OS
Erlang 5.10.4 LINCを記述しているプログラミング言語および実行環境
LINC 1.0 ソフトウェア実装のOpenFlowスイッチ
VirtualBox 5.1.8 Ubuntuを仮想環境で動作させるソフトウェア
Tera Term 4.95 各コンポーネントへssh接続するために使用するターミナルソフトウェア
Win32 Disk Imager 0.9.5 microSDカードにイメージファイルを書き込むためのフリーソフトウェア
Ubuntu 16.04 Linuxのディストリビューション
Java 1.8 OpenDaylightが使用しているプログラミング言語および実行環境
OpenDaylight Boron-SR4 オープンソースのOpenFlowコントローラ

今回、構築する構成は以下の通りです。

OpenFlowコントローラはPCのVirtualBox内にUbuntu16.04を構築して、その中にOpenDaylightを構築します。
Raspberry Pi 3にErlangとLINCをインストールし、その先にクライアントマシーンとしてWindowsのPCを2台接続する構成です。

IPアドレスの割り当ては以下の通りです。

Host1とHost2で疎通確認を行い、LINCをインストールしたRaspberry Pi 3がOpenFlowスイッチとして動作することを確認します。

 

LINCのインストール

それでは実際に構築してみましょう。

 

Raspberry Pi 3の準備

まず、Raspberry Pi 3で使用するmicroSDカードにRASPBIAN JESSIE WITH DESKTOPのイメージファイルを書き込みます。

今回は、microSDカードへのOSイメージの書き込みにはWin32 Disk Imagerを使用します。

RASPBIAN JESSIE WITH DESKTOPをダウンロードするために「Download ZIP」をダブルクリックし、PCにダウンロードします。

RSP3OVS-002.PNG

ダウンロードしたファイルをダブルクリックして解凍し、イメージファイルをCドライブ直下に移動させます。RSP3OVS-004.PNG

Win32 Disk Imagerを起動して、microSDカードにRaspbian Jessie with DESKTOPのイメージファイルを書き込みます。RSP3OVS-005.PNG

Raspbian Jessie with DESKTOPではPCからRaspberry Pi 3にログインするために使用するssh接続がデフォルトでは無効にされています。
ssh接続を有効にするために、microSDカードの中に「ssh」という識別子のないファイルを作成します。
RSP3OVS-008.PNGRSP3OVS-009.PNG

準備したmicroSDカードをRaspberry Pi 3に挿入し、以下のように接続し、IPアドレス等を設定しssh接続を確認した後、表示、タイムゾーンを設定します。

ディストリビューションを確認してみましょう。
pi@raspberrypi:~ $ lsb_release -a

No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie

カーネルのバージョン番号を確認します。
pi@raspberrypi:~ $ uname -a

Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

Raspberry Pi 3のIPアドレス等をファイルの最後に設定します。
pi@raspberrypi:~ $ sudo vi /etc/dhcpcd.conf
pi@raspberrypi:~ $ cat /etc/dhcpcd.conf

・・・
interface eth0
static ip_address=192.168.137.251
static routers=192.168.137.1
static domain_name_servers=8.8.8.8

IPアドレス等の設定を反映するために、Raspberry Pi 3を再起動します。
pi@raspberrypi:~ $ sudo shutdown -r now

PCにIPアドレスとネットワークの共有を設定します。
RSP3OVS-011.PNG

Tera Termを使用して、PCからssh接続を行います。
ユーザー名は「pi」、パスワードは「raspberry」です。RSP3OVS-029.PNG RSP3OVS-030.PNGRSP3OVS-031.PNG PCからRaspberry Pi 3にssh接続できました。

Raspberry Pi 3の表示を日本に設定します。
pi@raspberrypi:~ $ sudo raspi-config
RSP3OVS-017.PNG RSP3OVS-018.PNGRSP3OVS-019.PNGRSP3OVS-020.PNGRSP3OVS-021.PNG

Raspberry Pi 3のタイムゾーンを日本に設定します。RSP3OVS-017.PNG

RSP3OVS-022.PNGRSP3OVS-023.PNGRSP3OVS-024.PNG

Raspberry Pi 3を再起動して、表示と時刻を確認します。RSP3OVS-026.PNG Raspberry Pi 3の表示と時刻を確認できました。

これでRaspberry Pi 3の準備は終了です。

 

LINCのインストール

準備したRaspberry Pi 3にLINCをインストールしていきます。

Raspberry Pi 3のシステムをアップデートし、必要なパッケージをインストールし、Erlangのソースコードをダウンロードします。

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get upgrade
pi@raspberrypi:~ $ sudo apt-get install -y gcc wget make autoconf openssl libssl-dev libncurses5 libncurses5-dev
pi@raspberrypi:~ $ wget http://erlang.org/download/otp_src_R16B03-1.tar.gz
pi@raspberrypi:~ $ ls

–2017-06-13 16:24:29– http://erlang.org/download/otp_src_R16B03-1.tar.gz
erlang.org (erlang.org) をDNSに問いあわせています… 192.121.151.106
erlang.org (erlang.org)|192.121.151.106|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 66253556 (63M) [application/x-tar]
`otp_src_R16B03-1.tar.gz’ に保存中

otp_src_R16B03-1.ta 100%[====================>] 63.18M 80.3KB/s 時間 12m 29ss

2017-06-13 16:37:00 (86.4 KB/s) – `otp_src_R16B03-1.tar.gz’ へ保存完了 [66253556/66253556]

ダウンロードしたファイルを確認しましょう。
pi@raspberrypi:~ $ ls

Desktop Music Templates otp_src_R16B03-1.tar.gz
Documents Pictures Videos python_games
Downloads Public oldconffiles

ダウンロードしたファイルを解凍します。
pi@raspberrypi:~ $ tar -xzvf otp_src_R16B03-1.tar.gz
pi@raspberrypi:~ $ ls

Desktop Music Templates otp_src_R16B03-1
Documents Pictures Videos otp_src_R16B03-1.tar.gz
Downloads Public oldconffiles python_games

環境変数を設定します。
pi@raspberrypi:~$ export ERL_TOP=/home/pi/otp_src_R16B03-1
pi@raspberrypi:~$ vi .profile
pi@raspberrypi:~$ cat .profile | grep ERL_TOP

export ERL_TOP=/home/pi/otp_src_R16B03-1

カレントディレクトリを移動し、コンパイルし、インストールします。
pi@raspberrypi:~ $ cd otp_src_R16B03-1
pi@raspberrypi:~/otp_src_R16B03-1 $ ./configure
pi@raspberrypi:~/otp_src_R16B03-1 $ make
pi@raspberrypi:~/otp_src_R16B03-1 $ sudo make install

Erlangのバージョンを確認します。
pi@raspberrypi:~/otp_src_R16B03-1 $ erl +V

Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4

Erlangの動作を確認します。
pi@raspberrypi:~/otp_src_R16B03-1 $ erl

Erlang R16B03-1 (erts-5.10.4) [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4 (abort with ^G)
1> 1+2.
3
2>
User switch command
–> q

Erlangが動作していることが確認できました。
ホームディレクトリーに戻りましょう。
pi@raspberrypi:~/otp_src_R16B03-1 $ cd ~
必要なパッケージをインストールします。
pi@raspberrypi:~ $ sudo apt-get install -y git-core bridge-utils libpcap-dev libcap2-bin uml-utilities

レポジトリーをクローンします。
pi@raspberrypi:~ $ git clone https://github.com/FlowForwarding/LINC-Switch

Cloning into ‘LINC-Switch’…
remote: Counting objects: 7905, done.
remote: Total 7905 (delta 0), reused 0 (delta 0), pack-reused 7905
Receiving objects: 100% (7905/7905), 33.70 MiB | 25.00 KiB/s, done.
Resolving deltas: 100% (4628/4628), done.
Checking connectivity… done.

クローンしたレポジトリを確認します。
pi@raspberrypi:~ $ ls

Desktop LINC-Switch Public oldconffiles python_games
Documents Music Templates otp_src_R16B03-1
Downloads Pictures Videos otp_src_R16B03-1.tar.gz

カレントディレクトリを移動し、設定ファイルをコピーします。
pi@raspberrypi:~ $ cd LINC-Switch/rel/files
pi@raspberrypi:~/LINC-Switch/rel/files $ cp sys.config.orig sys.config

カレントディレクトリを移動し、コンパイルします。
pi@raspberrypi:~/LINC-Switch/rel/files $ cd ~/LINC-Switch
pi@raspberrypi:~/LINC-Switch $ sudo make

 

LINCの起動

Raspberry Pi 3にUSB用LANアダプターを接続し、起動することを確認します。

pi@raspberrypi:~/LINC-Switch $ ifconfig

   ・
   ・
   ・
eth1 Link encap:Ethernet HWaddr 74:03:bd:3d:06:b3
inet6 addr: fe80::ff81:cda4:1bcc:d2cd/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

eth2 Link encap:Ethernet HWaddr cc:e1:d5:02:fc:6b
inet6 addr: fe80::5958:39d4:703:19cc/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
   ・
   ・
   ・

設定ファイルを環境に合わせて編集します。
pi@raspberrypi:~/LINC-Switch $ sudo vi rel/linc/releases/1.0/sys.config
pi@raspberrypi:~/LINC-Switch $ cat rel/linc/releases/1.0/sys.config

   ・
   ・
   ・
{capable_switch_ports,
[
{port, 1, [{interface, “eth0”}]},
{port, 2, [{interface, “eth1”}]},
{port, 3, [{interface, “eth2”}]}
]},
   ・
   ・
   ・
{ports, [
{port, 1, [{queues, []}]},
{port, 2, [{queues, []}]}
{port, 3, [{queues, []}]}
]}

   ・
   ・
   ・

LINCを起動します。
pi@raspberrypi:~/LINC-Switch $ sudo rel/linc/bin/linc console

Exec: /home/pi/LINC-Switch/rel/linc/erts-5.10.4/bin/erlexec -boot /home/pi/LINC-Switch/rel/linc/releases/1.0/linc -mode embedded -config /home/pi/LINC-Switch/rel/linc/releases/1.0/sys.config -args_file /home/pi/LINC-Switch/rel/linc/releases/1.0/vm.args — console
Root: /home/pi/LINC-Switch/rel/linc
Erlang R16B03-1 (erts-5.10.4) [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

load_driver ‘netlink_drv’ from: ‘/home/pi/LINC-Switch/rel/linc/lib/netlink-1/priv’
11:28:45.672 [info] Application lager started on node linc@raspberrypi
11:28:45.674 [info] Application ssh started on node linc@raspberrypi
11:28:45.678 [info] Application enetconf started on node linc@raspberrypi
11:28:45.735 [info] Application linc started on node linc@raspberrypi
Eshell V5.10.4 (abort with ^G)
(linc@raspberrypi)1> 11:28:46.830 [info] Created port: {port,1,[{queues_status,disabled},{queues,[]},{config,{port_configuration,undefined,up,false,false,false}},{features,{features,undefined,’100Mb-FD’,true,copper,unsupported}},{queues,[]},{interface,”eth0″}]}
11:28:47.013 [info] Created port: {port,2,[{queues_status,disabled},{queues,[]},{config,{port_configuration,undefined,up,false,false,false}},{features,{features,undefined,’100Mb-FD’,true,copper,unsupported}},{queues,[]},{interface,”eth1″}]}
11:28:47.133 [info] Created port: {port,3,[{queues_status,disabled},{queues,[]},{config,{port_configuration,undefined,up,false,false,false}},{features,{features,undefined,’100Mb-FD’,true,copper,unsupported}},{interface,”eth2″}]}
11:28:47.149 [info] Connected to controller 192.168.137.8:6653/0 using OFP v4

(linc@raspberrypi)1>

プロンプトが表示され、エラー表示は無いので、正常にLINCを起動できました。
LINCプロンプトから抜けるためには「init:stop().」と入力します。

(linc@raspberrypi)1> init:stop().
ok
(linc@raspberrypi)2>
pi@raspberrypi:~ $

OpenFlowコントローラ(OpenDaylight)のインストール

今回は、OpenFlowコントローラとして、OpenDaylightを使用します。
VirtualBoxにUbuntu16.04をインストールし、その中にOpenDaylightをインストールしてきます。

VirtualBoxやUbuntu16.04のインストールについては、過去の記事にて紹介していますのでそちらを参考にしています。
詳しくはこちらをご参照ください。
参考記事:

インストールしたUbuntu16.04にOpenDaylightをインストールしていきます。

システムをアップデートして、Javaをインストールし、バージョンを確認します。
$ sudo apt-get update
$ sudo apt-get install -y openjdk-8-jdk
$ java -version

openjdk version “1.8.0_121”
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

環境変数JAVA_HOMEを設定し、確認します。
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64
$ vi ~/.profile
$ cat ~/.profile | grep JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

ファイルをダウンロードします。
$ wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.5.4-Boron-SR4/distribution-karaf-0.5.4-Boron-SR4.tar.gz

ダウンロードしたファイルを解凍します。
$ tar -xzvf distribution-karaf-0.5.4-Boron-SR4.tar.gz

ディレクトリ名をopendaylightに変更して、カレントディレクトリを移動し、OpenDaylightを起動させます。
$ mv  distribution-karaf-0.5.4-Boron-SR4 opendaylight
$ cd opendaylight
$ ./bin/karafRSP3LINC-012.PNG

必要となるFeatureをインストールします。
opendaylight-user@root> feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core

Featureがインストールされたかを確認してみましょう。
opendaylight-user@root> feature:list -i

Name | Version | Installed | Repository | Description
————————————————————————————————————————————————————————-
standard | 3.0.7 | x | standard-3.0.7 | Karaf standard feature
config | 3.0.7 | x | standard-3.0.7 | Provide OSGi ConfigAdmin support
region | 3.0.7 | x | standard-3.0.7 | Provide Region Support
package | 3.0.7 | x | standard-3.0.7 | Package commands and mbeans
http | 3.0.7 | x | standard-3.0.7 | Implementation of the OSGI HTTP Service
war | 3.0.7 | x | standard-3.0.7 | Turn Karaf as a full WebContainer
kar | 3.0.7 | x | standard-3.0.7 | Provide KAR (KARaf archive) support
ssh | 3.0.7 | x | standard-3.0.7 | Provide a SSHd server on Karaf
management | 3.0.7 | x | standard-3.0.7 | Provide a JMX MBeanServer and a set of MBeans in K
odl-openflowplugin-flow-services | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: Openflow Plugin :: Flow Services
odl-openflowplugin-southbound | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: Openflow Plugin :: Li southbound A
odl-openflowplugin-nsf-model | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: OpenflowPlugin :: NSF :: Model
odl-openflowplugin-app-config-pusher | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: Openflow Plugin :: Application – d
odl-openflowplugin-app-topology | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: Openflow Plugin :: Application – t
odl-openflowplugin-app-forwardingrules-manager | 0.3.3-Boron-SR3 | x | openflowplugin-0.3.3-Boron-SR3 | OpenDaylight :: Openflow Plugin :: Application – F
odl-mdsal-models | 0.9.3-Boron-SR3 | x | odl-mdsal-models-0.9.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Models
odl-l2switch-switch | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: Switch
odl-l2switch-hosttracker | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: HostTracker
odl-l2switch-addresstracker | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: AddressTracker
odl-l2switch-arphandler | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: ArpHandler
odl-l2switch-loopremover | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: LoopRemover
odl-l2switch-packethandler | 0.4.3-Boron-SR3 | x | l2switch-0.4.3-Boron-SR3 | OpenDaylight :: L2Switch :: PacketHandler
odl-config-persister | 0.5.3-Boron-SR3 | x | odl-config-persister-0.5.3-Boron-SR3 | OpenDaylight :: Config Persister
odl-config-startup | 0.5.3-Boron-SR3 | x | odl-config-persister-0.5.3-Boron-SR3 | OpenDaylight :: Config Persister:: Config Startup
odl-aaa-api | 0.4.3-Boron-SR3 | x | odl-aaa-0.4.3-Boron-SR3 | OpenDaylight :: AAA :: APIs
odl-config-api | 0.5.3-Boron-SR3 | x | odl-config-0.5.3-Boron-SR3 | OpenDaylight :: Config :: API
odl-config-netty-config-api | 0.5.3-Boron-SR3 | x | odl-config-0.5.3-Boron-SR3 | OpenDaylight :: Config :: Netty Config API
odl-config-core | 0.5.3-Boron-SR3 | x | odl-config-0.5.3-Boron-SR3 | OpenDaylight :: Config :: Core
odl-config-manager | 0.5.3-Boron-SR3 | x | odl-config-0.5.3-Boron-SR3 | OpenDaylight :: Config :: Manager
odl-netty | 4.0.43.Final | x | odlparent-1.7.3-Boron-SR3 | OpenDaylight :: Netty
odl-lmax | 3.3.4 | x | odlparent-1.7.3-Boron-SR3 | OpenDaylight :: LMAX Disruptor
odl-aaa-authn | 0.4.3-Boron-SR3 | x | odl-aaa-0.4.3-Boron-SR3 | OpenDaylight :: AAA :: Authentication – NO CLUSTER
odl-mdsal-dom | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: DOM
odl-mdsal-common | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: DOM Broker
odl-mdsal-dom-api | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: DOM API & SPI
odl-mdsal-dom-broker | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: DOM Broker
odl-mdsal-binding-base | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Binding Base Concepts
odl-mdsal-binding-runtime | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Binding Generator
odl-mdsal-binding-api | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Binding Base Concepts
odl-mdsal-binding-dom-adapter | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Binding Generator
odl-mdsal-eos-common | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: EOS :: Common
odl-mdsal-eos-dom | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: EOS :: DOM
odl-mdsal-eos-binding | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: EOS :: Binding
odl-mdsal-singleton-common | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Singleton :: Common
odl-mdsal-singleton-dom | 2.1.3-Boron-SR3 | x | odl-yangtools-2.1.3-Boron-SR3 | OpenDaylight :: MD-SAL :: Singleton :: DOM
odl-aaa-shiro | 0.4.3-Boron-SR3 | x | odl-aaa-0.4.3-Boron-SR3 | OpenDaylight :: AAA :: Shiro
odl-yangtools-yang-data | 1.0.3-Boron-SR3 | x | odl-yangtools-1.0.3-Boron-SR3 | OpenDaylight :: Yangtools :: Data Binding
odl-yangtools-common | 1.0.3-Boron-SR3 | x | odl-yangtools-1.0.3-Boron-SR3 | OpenDaylight :: Yangtools :: Common
odl-yangtools-yang-parser | 1.0.3-Boron-SR3 | x | odl-yangtools-1.0.3-Boron-SR3 | OpenDaylight :: Yangtools :: YANG Parser
odl-akka-scala | 2.11 | x | odl-controller-1.7.3-Boron-SR3 | Scala Runtime for OpenDaylight
odl-akka-system | 2.4.7 | x | odl-controller-1.7.3-Boron-SR3 | Akka Actor Framework System Bundles
odl-akka-clustering | 2.4.7 | x | odl-controller-1.7.3-Boron-SR3 | Akka Clustering
odl-akka-leveldb | 0.7 | x | odl-controller-1.7.3-Boron-SR3 | LevelDB
odl-akka-persistence | 2.4.7 | x | odl-controller-1.7.3-Boron-SR3 | Akka Persistence
pax-jetty | 8.1.19.v20160209 | x | org.ops4j.pax.web-3.2.9 | Provide Jetty engine support
pax-http | 3.2.9 | x | org.ops4j.pax.web-3.2.9 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 3.2.9 | x | org.ops4j.pax.web-3.2.9 | Provide HTTP Whiteboard pattern support
pax-war | 3.2.9 | x | org.ops4j.pax.web-3.2.9 | Provide support of a full WebContainer
odl-openflowjava-protocol | 0.8.3-Boron-SR3 | x | odl-openflowjava-0.8.3-Boron-SR3 | OpenDaylight :: Openflow Java :: Protocol
odl-mdsal-common | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 | OpenDaylight :: Config :: All
odl-mdsal-broker-local | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 | OpenDaylight :: MDSAL :: Broker
odl-mdsal-clustering-commons | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 |
odl-mdsal-distributed-datastore | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 |
odl-mdsal-remoterpc-connector | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 |
odl-mdsal-broker | 1.4.3-Boron-SR3 | x | odl-mdsal-1.4.3-Boron-SR3 |
odl-config-netty | 0.5.3-Boron-SR3 | x | odl-config-persister-0.5.3-Boron-SR3 | OpenDaylight :: Config-Netty
odl-restconf | 1.4.3-Boron-SR3 | x | odl-controller-1.4.3-Boron-SR3 | OpenDaylight :: Restconf
odl-restconf-noauth | 1.4.3-Boron-SR3 | x | odl-controller-1.4.3-Boron-SR3 | OpenDaylight :: Restconf
odl-mdsal-apidocs | 1.4.3-Boron-SR3 | x | odl-controller-1.4.3-Boron-SR3 | OpenDaylight :: MDSAL :: APIDOCS
odl-dlux-all | 0.4.3-Boron-SR3 | x | odl-dlux-0.4.3-Boron-SR3 | Opendaylight dlux all features
odl-dlux-core | 0.4.3-Boron-SR3 | x | odl-dlux-0.4.3-Boron-SR3 | Opendaylight dlux minimal feature
odl-dlux-node | 0.4.3-Boron-SR3 | x | odl-dlux-0.4.3-Boron-SR3 | Enable nodes in Opendaylight dlux
odl-dlux-yangui | 0.4.3-Boron-SR3 | x | odl-dlux-0.4.3-Boron-SR3 | Enable Yang UI in Opendaylight dlux
odl-dlux-yangvisualizer | 0.4.3-Boron-SR3 | x | odl-dlux-0.4.3-Boron-SR3 | Enable Yang visualizer in Opendaylight dlux

上記のように、表示されれば正常です。
OpenDaylightをGUI画面上で開くために、ブラウザを起動し、http://127.0.0.1:8181/index.htmlにアクセスしてみましょう。
以下のログイン画面が表示されます。RSP3OVS-037.PNG

Usernameに「admin」、Passwordに「admin」をそれぞれ入力しログインし、ログインに成功すると、以下のトポロジ画面が表示されます。RSP3OVS-038.PNG

 

LINCをコントローラに接続しての動作確認

LINCをインストールしたRaspberry Pi 3に接続した2つのUSBポートにUSB用LANアダプターに2台のHostを接続し、以下のようにIPアドレスを割り当てましす。

OpenFlowコントローラのIPアドレスを設定します。
pi@raspberrypi:~ $ cd LINC-Switch
pi@raspberrypi:~/LINC-Switch $ sudo vi rel/linc/releases/1.0/sys.config
pi@raspberrypi:~/LINC-Switch $ sudo cat rel/linc/releases/1.0/sys.config | grep Switch0-DefaultController

{“Switch0-DefaultController”, “192.168.137.8”, 6653, tcp}
%% {“Switch0-DefaultController”, “localhost”, 6653, tcp,

LINCを起動します。
pi@raspberrypi:~/LINC-Switch $ sudo rel/linc/bin/linc console
この状態で、Host1とHost2で双方向からpingコマンドで疎通確認を行い、正常に疎通することが確認できました。

OpenDaylightのトポロジ画面にスイッチとホストが以下のように表示されることも確認できました。RSP3LINC-014.PNG

 

おわりに

今回はLINCをRaspberry Pi 3にインストールして動作確認まで行ってみました。
LINCを使用する場合にはOpen vSwitchと違い、OpenFlow1.0には対応していないので注意が必要です。

今回の記事では、以前の記事で取り上げている内容が含まれていましたが、Ubuntuは14.04から16.04に、JavaはSE7からSE8に、OpenDaylightはHelium-SR3からBoron-SR4となっています、OSSのバージョンアップの速さを実感する記事となりました。
幾つか過去のブログの更新版的な内容も含まれましたが、役立てていただければ幸いです。

今回も最後までお付き合いを頂き、ありがとうございます。

文:河合 紀彦

photo-1441906363162-903afd0d3d52.jpg

最新記事

Category

Old Blogs