Weitere ähnliche Inhalte
Ähnlich wie 【CEDEC2019 】5G時代に対応した『モノビットエンジン5G』を初公開! HoloLens対応した通信クラウド最新情報も! (20)
【CEDEC2019 】5G時代に対応した『モノビットエンジン5G』を初公開! HoloLens対応した通信クラウド最新情報も!
- 12. スマホ/家庭用ゲームやVRコンテンツで、マルチプレイを簡単に実現できる、リアルタイム通信ミドルウェアで
す。主に4つの製品ラインナップで展開しています。2017年にVer2.0に進化しました!
1,Monobit Revolution Server (略称:MRS)
MMORPGや、多人数MOアクションゲームにも対応出来る処理速度とレスポンスを
追求した、高速ゲームサーバです。シンプルなAPIで超高速通信かつ大規模同時接
続を実現します。
2,Monobit Unity Networking 2.0 (略称:MUN)
Unityに特化した通信ミドルウェアです。マッチング、ルーム、通信リレーの機能が
標準で用意されており、ネットワークの知識がなくてもマルチプレイを実装可能。
MRSと連携して、サーバにもC++/C#でコードが書けるように進化しました。
3,VR Voice Chat
VRコンテンツに「ボイスチャット機能」を手軽に実装できるUnity専用の無料
アセットです。MUNを搭載し、正確な物理同期・音声同期の実現が可能です。
xRデバイスへの搭載実績もあり、様々な業態にて利用されています。
本日の
メインテーマは
こちら!
■モノビットエンジンVer.2.0シリーズ
4,モノビットエンジンクラウド
MUNをバックエンドに搭載し、マルチプレイゲームをUnity上で簡単に実現
するクラウドサービスです。また、MUNの「VR Voice Chat」も標準で利用可能と
なっています。
- 21. ■ 「Monobit Reliable Udp β版(MRU)」が生まれた理由
5Gは『高速大容量』『低遅延』『同時多数接続』の
3つの特徴を持ちます。
参照「2020年に本格導入!5Gが創る新しい未来を東工大・阪口教授が解説!(前編)」
https://www.oro.com/ja/technology/013/
同時多数接続で
コンテンツの
あり方が変わる?
タイムラグは
1/10
- 22. ■ Monobit Reliable Udp β版(MRU)
5Gの通信速度を最大限に活かせる
RUDPの通信アルゴリズムを一新!
MRSのRUDP通信プロトコル、
「Monobit Reliable Udp β版(MRU)」
を搭載したバージョンを、
先日公開いたしました!
http://www.monobitengine.com/
MRSが
バージョンアップ!
- 24. ■ Monobit Reliable Udp β版(MRU) 詳細
MRU : Monobit Reliable UDP
〜5G世代のモバイルゲームに最適な通信プロトコルを目指して〜
• モノビットエンジン 取締役CTO
• 中嶋謙互
• Twitter @ringo
• https://github.com/kengonakajima
- 25. ■ Internet Protocol Stack
https://www.w3.org/People/Frystyk/thesis/TcpIp.html
ハードウェア
1個1個のパケットを
マシンまで届ける
マシンの中のプロセスや
ソケットにデータを届ける
それぞれのアプリケーション
- 27. ■ WeBの発達
• インターネット黎明期: 1994年より前
– サーバーのリモート操作(telnet/ssh)や電子メール、FTPのために、データを正しい順序
で確実に届ける方法が必要だった。 TCPがこのために普及し、標準になった。
• ウェブ普及期: 1994年〜2005年
– TCPの上に実装されたHTTPがウェブの発展を支えた。
• モバイル普及期: 2005年〜
– 特にモバイルにおいて、HTTP(TCP)の遅さやIPアドレス変化が問題になった。
– WebSocketのようなつなぎっぱなしアプリではさらに問題が悪化した。
• TCP限界期: 2012年〜
– TCPを今さら捨てることはできないので、UDPをうまく使って、TCPの問題を解決する
ための挑戦が始まった。 Google社がSPDYを提案した。その後QUIC、HTTP3と概念と
仕様の発展が続く。
- 29. ■ TCPの時代分け
• 1980年代 : TCP登場、telnetでマシンを遠隔操作
• 1990年代 : メールやHTTPなどで大ブレイク
• 2000年代 : モバイルで長時間のストールを防ぎたい!
• 2010年代 : 動画や音声を高速送信したい!
- 30. ■ ゲームにおける通信の歴史
• シリアル通信時代: 1990年台前半まで
– ゲームの通信は、RS-232Cを使ってPCを接続してローカルマルチプレイを行うことが多かった。
• PCマルチプレイ発展期: 1990年台後半
– Windows95以降はソケットライブラリを使えるようになり、IPv4/UDPを用いてマルチプレイを実装するのが普通に
なった。パケットの順序制御や再送を行うロジックは、ゲームごとに作っていた。MMOでは、TCPもよく使われるよ
うになった。
• ゲーム機でも通信: 2000年〜
– PS2のネットワークアダプタなど、ゲーム機でもIPv4で通信ができるようになった。UDPを使うことが多かった。
UDPとTCPの併用。
– スマホ以前の携帯電話ではUDPが使えないこともあった。
• モバイルゲーム時代: 2010年〜
– スマホが一般化し、IPv4/IPv6上でUDP/TCPを用いて自由にマルチプレイを実装できるようになった。
– UDPの再送や順序制御用のライブラリがオープンソースで利用可能になった。
ゲームは最初からUDPと友達であった
- 33. ■ TCP: head of line blocking
TCP
こんなふうにしたい
packet1の影響で、全体が長時間ストールする
packet1はストールするがpacket2,3は早く届く
packet1の再送
packet1の再送
- 35. ■ インターネットの性能
• パケットロス率
– 有線LAN : スイッチとケーブルがちゃんとしてたら、ほぼ0だが
、完全に0ではない
– 無線LAN : 負荷がないときでも10000個に1個ぐらい消える。負
荷が高いと、100個に1個消えるときもある
– モバイルネットワーク : 電波がいいときでも100個に1個消える
かも、電波が悪いと1割消えたりする
- 37. ■ RUDP (Reliable UDP)
• UDPに信頼性を追加した通信プロトコル
• ビデオゲームでは、1990年代から、各ゲームで
独自に実装していた。
• Webでは、2012年ごろから、Googleが主導し
て、QUICの標準化が進められている。
- 38. ■ RUDP (Relible UDP)
• UDPに信頼性を追加した通信プロトコル
• ビデオゲームでは、1990年代から、各ゲー
ムで独自に実装していた。
• Webでは、2012年ごろから、Googleが主導
して、QUICの標準化が進められている。
- 39. ■ RUDPの実装
• ENet (2004~) MRSでも採用している。少人数用
• LiteNetLib(2016~) ピュアC#実装
• netcode.io (2016~) C, Glenn Fiedler氏による
• quicly (2017~) C, QUICのドラフト15?
• gQUIC : GoogleのQUIC実装、最新版ドラフト+実験用
• iQUIC : IETFのリファレンス実装
• ほかにも用途に合わせて、数え切れないほどある
- 40. ■ MRU : Monobit RUDP
• C++(ほぼC)
• IPアドレス変化への対応
• 正しい順序で送る
• 確実に送る (早めの再送)
• 順序も確実さも保証しない方法で送ることもできる
• 0RTTハンドシェイク
• チェックサム
• C10K以上のMMO向けにチューニング(少人数ももちろんOK)
• スロット飽和攻撃対策
– IP偽装対策
– 大量接続対策
• Linux/Windows/iOS/Android/MacOSに対応、ゲーム機は対応予定
• 実装していない機能
– ストリーム内の多重化チャネル (ゲームでは必要性が薄いため)
– 暗号化(MRSのレイヤで実装するため)
- 41. ■ MRU: IPアドレス変化への対応
• MRUでは、すべてのパケットに、送り元ID(64bit)と送り先ID(64bit)が付加されているので、IPアドレ
スが変わっても、接続のやりなおしが不要で、0RTT(往復時間ゼロ)で通信が継続できる。
• IPv6からIPv4に変わっても問題なし。 (iOSでのNAT64にも対応)
- 42. ■ MRU: 順序制御と再送制御
• TCPを単純にしたものでだいたい同じ
– 受信側でパケットをキューにためて順番どおり取
り出す(詳細は省略)
• QUICにはない「早めの再送」を実装している。
– データをあえて2回(設定次第でN回)づつ冗長に送
って、
再送の必要性自体を無くす
- 46. ■ MRU: MMO向けのチューニング
• Linux カーネル3以降で追加された
send/recvmmsgシステムコールを使用。
– Linux以外ではsendmsgを使用
• カーネルコールオーバーヘッドを減らしている
• クラウドインスタンスでも効果を発揮している。
• 測定値は後述
- 47. ■ MRU: IPアドレス偽装攻撃への対応
• IPアドレス偽装とは
– 典型的なDDoS攻撃であるスロット飽和攻撃
で使われる。使われていないIPアドレスを送
り元に設定したIPパケットを送って、サーバ
ーの接続スロットを飽和させる。
- 55. • udpmax (MRUを使わない、UDP高負荷ツール)
– iperf3は性能が不足しているため、自作した
sv1 sv2
シングルスレッド
sendmmsgテスト size=1
udpmax udpmax
71万pkt/s
40Mbytes/s
sv1 sv2
4スレッド
sendmmsgテスト size=1
udpmax udpmax
108万pkt/s
78Mbytes/s
udpmax
udpmax
udpmax
udpmax
udpmax
udpmax
4スレッド
sendmmsgテスト size=1472
70万pkt/s
1.06Gbytes/s
8Gbps出ている、速い
■物理層ベンチマーク
- 59. • 同時接続1, 間隔0.1秒、サイズ24, 早めの再送OFF
– ./udptest 10.100.xx.xx —interval=0.1 --
fast_retransmit=0 --conn=1
– 10コールバック/s
– 20pkt/s(send+recv)
– 平均パケットサイズ 60bytes
– サーバCPU : 5% (ほぼ空ループ毎秒1万回、調整可
能)
■MRU層の動作確認
- 60. • 同時接続12000, 間隔0.01秒、サイズ24,早めの再
送OFF
– ./udptest 10.100.xx.xx --interval=0.01 --
fast_retransmit=0 --conn=4000 x 3プロセス
– 108万コールバック/s
– 71万8000pkt/s (物理限界)
– 84Mbytes/s, 平均パケットサイズ 111bytes
– サーバ側CPU : 80% (1スレッド. 4vCPUなので
最大400%)
これ以上負荷をかけると、物理層が耐えられないので再送が増えすぎ、
接続が切れてエラー。
■MRU層最大帯域毎秒
- 61. • 同時接続12000, 間隔0.1秒, 早めの再送なし, エコーあ
り、 サイズ1000
–./udptest 10.100.xx.xx --interval=0.1 --
fast_retransmit=0 --echo --conn=4000 --
size=1000 x 3
–39000コールバック/s
–25万pkt/s
–256Mbytes/s, 平均パケットサイズ 1026bytes
–サーバ側CPU : 70%(1スレッド)
■MRU層最大コールバック毎秒
- 64. • MRU, 同時接続4800、間隔0.005秒、サイズ24、早め
の再送なし echoなし
–./mrsbenchcl 10.100.102.80 1200 5 —
fast_retransmit=0 x 4
–62万コールバック/s
–72万pkt/s(send+recv) 物理限界 73Mbytes/s
–平均パケットサイズ 100bytes
–サーバCPU : 58% (1スレッド)
■スロット飽和攻撃 (IP偽装あり)
- 66. • MRU, 同時接続3000、間隔0.01秒、サイズ512、早めの
再送なし echoなし
–./mrsbenchcl 10.100.102.80 1500 10 —
fast_retransmit=0 —size=512 x 2スレッド
–24万コールバック/s
–55.7万pkt/s(send+recv) 303Mbytes/s
–平均パケットサイズ 544bytes
–サーバCPU : 70% (1スレッド)
■スロット飽和攻撃 (IP偽装あり)
- 68. TCP MRU
最大コールバック回数 34万/s 62万/s
上記時点での
サーバCPU
100% 58%
上記時点での
UDPパケット数
69万pkt/s 72万pkt/s
最大帯域 340Mbytes/s 303Mbytes/s
上記時点での
サーバCPU
90% 70%
上記時点での
データサイズ
1400 (MTU合わせ) 512 (MRS現状仕様による)
シングルスレッドサーバーの最高性能を示している。
■スロット飽和攻撃 (IP偽装あり)
- 71. • モノビットエンジン MRS バージョン 2.0.0から
、MRUは選択可能です。ぜひお試しください!
■スロット飽和攻撃 (IP偽装あり)
- 85. ■HoloLens同士の位置合わせ (他の方法)
• 起動位置合わせ
• 画像認識(ARマーカー)
– OpenCV
→超有名OSS。勿論無料
– Vuforia
→基本は有償だが、
無償プランも有。
ユーザー登録は必須。
• モノビットエンジンのHoloLensデモを作成した際に取った方法
– VuforiaとMRTKのSpatialMappingの併用
- 86. • Gaze - 目視
• Bloom -メニューを出す
• Air tap - クリック
• Voice – 音声入力
■HoloLensアプリ開発する際の入力方法の選択肢
- 87. • MRTK-Mixed Reality Toolkit
– https://github.com/microsoft/MixedReality
Toolkit-Unity
HoloLens基本機能、操作方法、UI表現など
■ HoLorens開発上便利なAPI
- 88. UI操作方法等 – MRTK付属のUI、Air tap
キャリブレーション – Vuforia、MRTKの
SpatialMapping
オブジェクト同期 - ボイスチャット – モ
ノビットエンジンクラウド
■モノビットエンジンHoLolensデモ