B6-4

OpenFlow を用いたルーティング学習教材の開発
Development of Learning Materials for Routing by Using the OpenFlow
石川 有彩*1, 吉原 和明*2, 井口 信和*3, 渡辺 健次*4
Arisa ISHIKAWA , Kazuaki YOSHIHARA*2, Nobukazu IGUCHI*3, Kenzi WATANABE*4*1
広島大学教育学研究科*1
Graduate School of Education, Hiroshima University*2
福山大学工学部*2
Faculty of Engineering, Fukuyama University*3
近畿大学理工学部*3
Faculty of Science and Engineering, Kindai University*4
広島大学人間社会科学研究科*4
Graduate School of Humanities and Social Sciences, Hiroshima University
Email: m196554@hiroshima-u.ac.jp*1

あらまし：高等学校学習指導要領解説情報編には，学習内容として「情報通信ネットワークの仕組みと構成要素を理解する」ことが示されている．しかし，実世界の情報通信ネットワークの構成要素である，ルータや L2 スイッチなどは教材として用意することが難しく，体験的な学習が行われていない．そこで本
研究では，OpenFlow という技術を用いて，様々なネットワーク機器の演習を行える教材の開発を行っている．
キーワード：教材開発，情報通信ネットワーク，演習，OpenFlow，可視化

1.

はじめに

高等学校学習指導要領解説情報編 1 には，学習内容として「情報通信ネットワークの仕組みと構成要素を理解する」ことが示されている．しかし，実世界の情報通信ネットワークの構成要素である，ルータや L2 スイッチなどは教材として用意することが難しく，体験的な学習が行われていない．
そこで本研究では，OpenFlow という技術を用いて，様々なネットワーク機器の演習が行える教材の開発を行っている．

2.

教材の開発

2.1 OpenFlow
OpenFlow はソフトウェアによりネットワークの制御機能を自由に設計・実装することができる技術である．OpenFlow は「OpenFlow スイッチ（以下，スイッチ」と呼ばれる転送部と，「OpenFlow コントローラ（以下，コントローラ」と呼ばれる制御部に分かれており，コントローラでスイッチの転送機能を自由に設計・実装することができる．
つまり，コントローラからスイッチに指示を与えることで，スイッチにルータの機能を持たせたり，L2 スイッチの機能を持たせたりすることができる．
本研究では，コントローラに「Ryu」を，スイッチには「Open vSwitch（以下，OvS」を用いた．
また，Ryu には WSGI に対応した Web サーバの機能があり，REST API を作成することができる 2．この機能を利用して，外部からスイッチの IP アドレスや経路情報などを設定することができる．

2.2 システムの構成
教材の開発には 4 つの Raspberry Pi 3 を用意し，1つはコントローラ，残り 3 つはスイッチとして用いた．Raspberry Pi 3 には WiFi モジュールが内蔵されており，無線通信を行うことができる．
システムの構成を図１に示す．コントローラとスイッチ間の通信や，スイッチ同士のシステム上の通信は無線で行った．また，OpenFlow で制御するネットワークは有線で構築した．
本研究では，ホストから有線ネットワークに pingを送信し，ICMP パケットが流れる様子を LED テープの光で可視化する．
      

図１. システムの構成
2.3 パケットキャプチャ
ICMP パケットの流れる様子を LED テープの光で可視化するためには，パケットをキャプチャする必要がある．本研究では，OpenFlow を用いたパケットキャプチャの方法を考案した．
まず，ping を実行した時に送信される，ICMP パケットがスイッチへ来た時，スイッチはそのパケッ― 261 ―教育システム情報学会 JSiSE2020
第45回全国大会
2020/9/2-9/4

トを適切に処理しつつ，コントローラへ転送する．
パケットを受け取ったコントローラは，そのヘッダ情報を解析し，送信元 IP アドレスや宛先 IP アドレスなど，LED テープを光らせるための情報が入ったメッセージを生成する．そして，そのメッセージを無線でスイッチへ送信する．
メッセージを受け取ったスイッチはその内容から，自機が制御している LED テープをどのように光らせるかを決定する．
2.4 メッセージを用いた LED テープの制御
LED テ ー プ は ， ス イ ッ チ と し て 用 い て い る
Raspberry Pi で制御しており，LAN ケーブル一本にLED テープが一本対応するように用意した．
スイッチが LED テープを制御するには，光の流れる方向と光らせるタイミングを決定する必要があり，その判断材料となるのがパケットのヘッダ情報である．そこで，コントローラが Raspberry Pi にメッセージを送ることで，LED テープの制御を行うようにした．
メッセージには，パケットがどのポートから入ってきたかを表す「in_port」と，そのパケットの宛先タイプ，送信元 IP アドレス，宛先 IP アドレスもし
くはゲートウェイの IP アドレスの情報が格納されている．
宛先タイプとは，パケットキャプチャしたスイッチにとって，ping の宛先がどの位置にあるかを分けたものである．以下のように分けられる．
A) ping の宛先が自機B) ping の宛先が自機のリンク上にあるC) ping の宛先が自機のリンク上にはない
このメッセージを用いた LED テープの制御の流れを述べる．
まず，コントローラからパケットキャプチャのメッセージを受け取ったスイッチは，送信元 IP アドレ
スと自機の IP アドレスを照らし合わせ，ping の送信元がリンク上にあるかどうかを調べる．送信元がリンク上にあれば，自機が制御している LED テープのうち，in_port 側に対応しているものを光らせる．送信元がリンク上になければ，別の Raspberry Pi が送信元から自機のもとへ光を流し終えるまで待機する．
次に，宛先タイプが A なら，光の向きを変えてもう一度光らせる．これで，自機に光が流れ込んだ後，自機から光が出て行く，という ICMP エコー要求とICMP エコー応答の様子を表現することができる．
宛先タイプが B なら，宛先がある側の LED テープを光らせる．
宛先タイプが C なら，ゲートウェイがある側のLED テープを光らせる．
このように，メッセージの内容に応じて LED テープの制御を行った．
2.5 ルーティングの実験
図１の構成で，OpenFlow スイッチにルータの機能を実装して実験を行った．

まず，コントローラでルータのアプリを実行する．
次にスイッチで LED テープを制御するためのプログラムを実行する．そして，スイッチの IP アドレスや経路情報を HTTP メソッドでコントローラに送信して設定を行う．
この状態で ping を送信して実験を行った．図２はホスト 1 からホスト 2 へ ping を送信し，その流れをLED テープの光で可視化している様子である．右下の LED テープはホスト 2 とスイッチの間のパケットの流れを表現している．

図２. 実験の結果
ホスト 1 から全てのインターフェイスへ ping を送信した場合と，ホスト 2 から全てのインターフェイスへ ping を送信した場合の実験を行った．結果，全ての場合で正しくパケットの流れを可視化することができた．

3.

おわりに

本研究では，OpenFlow を用いたルーティング学習教材の開発を行った．本教材では，コントローラからスイッチにルータの役割をするよう指示して，その際のスイッチの IP アドレスや経路情報を設定することができる．また，そうして構築したネットワークを流れるパケットの流れを LED テープの光の流れで確認できるようにした．
今後は L2 スイッチや Firewall なども OpenFlow で実装し，それらで構築されたネットワークを流れるパケットを，LED テープの光で可視化できるようにする．また，生徒が IP アドレスや経路情報を設定する際のインターフェイスについても考える必要がある．

謝辞
本研究は JSPS 科研費 18K11570 の助成を受けたものです．
参考文献(1) 文部科学省:高等学校学習指導要領解説情報編, p.35
（2018）(2) RYU project team:"REST 連携-Ryubook1.0 ドキュメン
ト", <https://osrg.github.io/ryu-book/ja/html/rest_api.htm
l>(2020 年 6 月 2 日アクセス)― 262 ―