動画を配信するしくみの1つにマルチキャストがあります。これはNTT東/西の「ひかりTV」などで実際に使われているしくみで,動画などのデータを多くの視聴者に対して効率的に配信できるという特徴があります。このマルチキャストを使った動画配信をTremaで実現してみます。観たい人にだけ届けるマルチキャストマルチキャストを使った動画配信の動作を簡単に説明しておきましょう(図1⁠)⁠。動画ストリーミングサーバが配信を始めると,マルチキャストネットワークが視聴者全員にパケットをコピーして転送します。ここでもし,動画を観ない人も含めた全員に動画を届けてしまうと,ネットワークの負荷が非常に大きくなってしまいます。そこでマルチキャストでは,動画を観る視聴者にだけパケットを配信します。マルチキャストネットワークマルチキャストを実現するには,今まで扱ってきたレイヤ2(注1)よりも上位のレイヤの情報を使う必要があります。テレビのチャンネルに相当するグループアドレスはIPヘッダ(レイヤ3)の中に含まれています。それぞれの視聴者に,観たいチャンネルの動画を届けるためには,このグループアドレスに基づいてパケット転送を行う必要があります。このように,マルチキャストでは扱うレイヤが増えるため,これまで本連載で紹介してきた内容よりも少し踏み込んだOpenFlowプログラミングが必要となります。Tremaでは各レイヤの情報をとても簡単に扱うことができます。それでは,マルチキャストの詳しいしくみから順に見ていきましょう。注1)職場や家庭のLANで使われるスイッチングハブなどがレイヤ2の装置です。レイヤ2では,MACアドレスを基にパケットの転送が行われます。マルチキャストの動作マルチキャスト転送を実現するために,OpenFlowスイッチはどのように動作すればよいでしょうか?説明を簡単にするため,スイッチ1台の構成を考えましょう(図2)。ストリーミングサーバが動画パケットをスイッチに送ると,スイッチは受け取ったパケットをコピーして,受信ホストがつながっているすべてのポートに出力します。Protocol)パケットを出して「どの動画を観たいか」をスイッチに伝えます。スイッチは,このIGMPパケットを受け取ったポートに対してのみパケットを送信します。ポイントは,IGMPを送ったホストの管理方法と,IGMPを送ったホストにだけパケットを届けるしくみです。OpenFlowでの実現方法を見ていきましょう。OpenFlowでのマルチキャストここでも説明を簡単にするため,スイッチ1台の小さなネットワークに,動画を送信するストリーミングサーバ1台と受信するホスト3台を接続した場合を考えます。視聴者にだけパケットを送るまずは,視聴者にだけパケットを送るしくみです(図3⁠)⁠。マルチキャストでは,送信者であるストリーミングサーバはパケットの宛先フィールドにグループアドレス(たとえば239.192.0.1)を含めます。これは「どの視聴者グループに動画を届けるか」を示すグループ名の一種と考えてください。視聴者にだけパケットを送るコントローラは,packet_inで送られてきたパケットのグループアドレスを参照し,そのグループに参加しているホスト(視聴者)を調べます。視聴者が接続しているポートにパケットを出力するフローをflow_modメッセージでスイッチに書き込みます。これで,以降のパケットは視聴者にだけ転送されます。グループへの参加と脱退ホストがグループに参加/脱退するためにはIGMPパケットを使います。ホストがIGMPパケットを送ると,これがpacket_inとしてコントローラに上がります。コントローラは,これがグループへの参加(MEMBERSHIP_REPORT)であるか脱退(LEAVE_GROUP)であるかを判別し,内部的に持っているグループ情報を更新します。このグループ情報は,定期的にフローを更新する際に使います(図4⁠)⁠。著者プロフィール高宮安仁(たかみややすひと)Trema開発チーム自称リーダー。東京の大学で計算科学を学び,並列プログラミング用ライブラリや,大規模クラスタ管理ツールの開発,とくに東工大のスパコンTSUBAME,分散クラスタInTriggerの管理基盤などなど主に分散・大規模システムのミドルウェア開発者・研究者として活動。現在は企業の研究者として,OpenFlow用プログラミングフレームワークTremaのメイン開発者。モットーは何がなんでも定時に帰ること。コンピューターはもちろん映画や音楽も好きで,スクラッチDJとしても活動しています。鈴木一哉(すずきかずや)Trema開発チームのメンバー。Ascend,古河電工,ヤマハ等のネットワーク機器を扱うエンジニアを経て,現在は経路制御の研究に従事。ホエールズ時代からのベイスターズファンで,98年の優勝時にはもちろん横浜スタジアムへ駆けつけました。野球のない時期には,もっぱらSFを読んでいます。会社ではランニングサークルに入っており,先日も多摩川の駅伝に参加しましたが,練習不足で全然走れませんでした。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。