Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネットワークエンジニアがニューラルネットワークをやってみた
Search
nori
April 22, 2017
Technology
0
3.1k
ネットワークエンジニアがニューラルネットワークをやってみた
ネットワークプログラマビリティ勉強会#12の資料です
https://network-programmability.connpass.com/event/54303/
nori
April 22, 2017
Tweet
Share
More Decks by nori
See All by nori
NetOps NG
norin
0
840
Other Decks in Technology
See All in Technology
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
420
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing
tomzoh
2
130
Deep Security Conference 2025:生成AI時代のセキュリティ監視 /dsc2025-genai-secmon
mizutani
4
2.9k
サイバーエージェントグループのSRE10年の歩みとAI時代の生存戦略
shotatsuge
4
1k
ソフトウェアテストのAI活用_ver1.25
fumisuke
1
610
Copilot coding agentにベットしたいCTOが開発組織で取り組んだこと / GitHub Copilot coding agent in Team
tnir
0
200
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
39k
Transformerを用いたアイテム間の 相互影響を考慮したレコメンドリスト生成
recruitengineers
PRO
2
440
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
290
推し書籍📚 / Books and a QA Engineer
ak1210
0
140
安定した基盤システムのためのライブラリ選定
kakehashi
PRO
3
130
LIXIL基幹システム刷新に立ち向かう技術的アプローチについて
tsukuha
1
380
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
The Cost Of JavaScript in 2023
addyosmani
51
8.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Practical Orchestrator
shlominoach
189
11k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Code Review Best Practice
trishagee
69
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Being A Developer After 40
akosma
90
590k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Transcript
ωοτϫʔΫΤϯδχΞ͕χϡʔϥϧωοτϫʔΫΛͬͯΈͨ Network Programabilty #12 @_norin_
ࣗݾհ なまえ こじま ただのり おしごと 元インフラ屋、域LAN作ったりとか twitter @_norin_
✦ 神経細胞を計算モデル化したもの ͬ͘͟ΓχϡʔϥϧωοτϫʔΫ ೖྗ ग़ྗ Y Z [ z =
w1 ɾ x + w2 ɾ y X X ͜ΕΛΈ߹Θͤͯෳࡶͳͷʹͨ͠ͷ͕ ΠϚυΩͷχϡʔϥϧωοτϫʔΫ
//ͷ͔͍ͭͲ͜Ζ ✦ 分類 画像のタグ付け(検索エンジン) ✦ 判別 手書き文字判別(Tensorflowのチュートリアル) きゅうりの等級分け ✦ 予測
天気、気温など過去データからの未来予測 既存文章から新規文章の生成
ωοτϫʔΫతظʁ ✦ フローからDDoS判別 ✦ 障害予測 この辺りは実データでやらないとおもしろくない そのうちどこかのIXかIDCさんが発表してくれるでしょう 期待の目
ຊͷϝχϡʔ ネットワークエンジニアなら一度は作る ɹɹ1JOHʹԠ͢ΔχϡʔϥϧωοτϫʔΫ "シェフのきまぐれICMP Responder
͜͜Λ//Ͱ࡞Δ 192.168.0.1→192.168.0.2のICMP Echoに対しReplayを生成する ߏ 192.168.0.1 192.168.0.2 Echo Reply
σϞ
݁Ռ "γΣϑ͕ؾ·͙Ε͗͢·ͨ͠ //ؤݻΦϠξͩͬͨ
✦ フレームワークはTensorFlowを利用 ✦ 学習データはPingの実データをキャプチャしたもの ✦ パケットを1514バイトの配列としてみなす ✦ 先頭42バイトが入出力データ Ethernet/IP/ICMPヘッダ 計算量とペイロードは変化しない・変化して欲しくないため
ͭͬͯ͘Έͨ// &UIFS)FBEFS *1)FBEFS *$.1)FBEFS 1BZMPBE 14byte 20byte 8byte
ͭͬͯ͘Έͨ// ӅΕͻͱͭ 42コ
ͭͬͯ͘Έͨ//ˌ ……… ӅΕºશଓ
ͭͬͯ͘Έͨ//ˌ ࡾっぽいナニカ
ύέοτ͕ᨅΔ༁ ✦ 元データのバリエーション不足 ✦ 192.168.0.1→192.168.0.2のPing実データから教師データを自動生成 ✦ L2やルータ越えだとMACアドレスも固定される ✦ データ数は多いが変化の少ないデータばかりに。。。 ✦
DDoSなどの実フローか自動生成でもバリエーションが必要 EtherDst EtherSrc IPDst IPSrc ID Chksum ICMP chksum Payload มԽ͢Δͷ͚ͩ͜͜
ύέοτ͕ᨅΔ༁ ✦ 教師データのバリエーション不足による部分最適化 ✦ 誤差関数がイマイチ チェックサムくらいが誤差と期待していた ✦ そもそもバイト単位での誤差ゼロが期待値 パケット全体で誤差がゼロでは意味がない ✦
(推測)バイト計算の差が影響しているかも 0x7Fと0x80の差分と127と128の差分の違い 精度と桁が実数とバイトで異なる ✦
ύέοτ͕ᨅΔ༁ ✦ NNのネットワーク構成が不適切 ✦ アドレス入替、ICMP Code書き換え、チェックサム として隠れ層5で設計 ✦ 線形部分が多く、多層の意味をなさなかった 非線形のチェックサム部のみで活性化関数を利用すべき?
✦
1JOHΛฦ͢ʹ 1)Ethernetアドレスを入れ替える 2)IPアドレスを入れ替える 3)IPヘッダ内の設定(�ID、TTL、etc ) 4)IPチェックサム設定 5)ICMP Codeの設定(Reply) 6)ICMPチェックサム設定 7)送信
代数的に考えてみる アドレスの入れ替え 単純な線形変換 νϣτ͘ͳΔ [ 0 1 1 0] [
x y] = [ y x] A = [ 0 E E 0] A ⋅ [ Ether Dst Ether Src ] = [ Ether Src Ether Dst ] ※ &୯Ґߦྻ
IPもまとめて送受信アドレスを入れ替え νϣτ͘ͳΔ 0 E 0 0 E 0 0 0
0 0 0 E 0 0 E 0 Ether Dst Ether Src IP Dst IP Src = Ether Src Ether Dst IP Src IP Dst
TTLやICMP Code(Replay)の設定はゼロ乗算と加算で対応 (代入の代わり) ��0 × A + B = B
νϣτ͘ͳΔ
チェックサム計算は非線形なのでここは関数化 ������������������IPヘッダ ヘッダを16bit×10の配列としてみると ��sum = IP[0]�+ IP[1] +�… IP[9] ��sum
= (sum & 0xffff) + (sum >> 16)������桁上がり分を下位に加算 ��sum = (sum & 0xffff) + (sum >> 16)������加算後再度繰り上がった場合 ��fchk (IP) = ~sum�����������������������������������������ビット反転 νϣτ͘ͳΔ 7FS)-FO UPT MFO JE qBHͱ͔ 55- 1SPUP DIFDLTVN 4SD *1 %TU *1
まとめるとこんな感じ νϣτ͘ͳΔ Pkt = Ether Dst Ether Src IP Dst
IP Src IP TTL IP Chk ICMP Code ICMP Chk ΞυϨεೖସ θϩΫϦΞ ύϥϝʔλઃఆ Pkt tmp = 0 E E 0 E E 0 0 0 0 0 ⋅ Pkt + 0 0 0 0 IP newTTL 0 ICMP newCode 0
まとめるとこんな感じ やればやるほどNNより関数型言語が向いてる気が νϣτ͘ͳΔ IP newchk = f chk (Pkt tmp
) ICMP newchk = f chk (Pkt tmp ) Pkt reply = Pkt tmp + 0 0 0 0 0 IP newchk 0 ICMP newchk νΣοΫαϜܭࢉ ઃఆͯ͠ Ͱ͖͕͋Γ
これを期待してアドレス入れ替え行列が学習されると。。。 νϣτ͘ͳΔ 0 E 6 0 0 E 6 0
0 0 0 0 0 E 4 0 0 E 4 0 ظͯ͠ΔϞϊ ͤΊͯର͕֯θϩʹͳͬͯ͘ΕΕͳʔ ͜Ε͕ݱ࣮ −0.02153469 0.09266856 −0.02674774 ⋯ 0.08597313 −0.03119319 0.1256434 ⋯ 0.04272136 −0.07684021 0.03384783 ⋮ ⋮ ⋮ ⋱ ܭࢉ͞ΕͨϞϊ
·ͱΊͱࡶײ NWエンジニアがニューラルネットワークをやってみた �今日は ニューラルネットワークプログラマビリティ勉強会 君も今日から�ニューラルネットワークエンジニア
·ͱΊͱࡶײ ✦ ニューラルネットワークに必要な数学は教養課程の線形代数 ✦ �遊んでみるだけならフレームワーク利用が簡単 TensorFlow、Caffe、Chainer ✦ オンラインならplayground ��http://playground.tensorflow.org/
·ͱΊͱࡶײ ✦ TensorFlowがとっつきにくい ✦ �フレームワークが難しいのはWebでもAPIでも一緒 Rails、Play、etc… ✦ ��やりたいことを実現する手段を探すのが一番の手間 チュートリアルから先をやってる記事が思いのほか少ない ✦
数学用語の英語表記がガガガ �abs/squareくらいはなんとか �determinant = 行列式、transpose = 逆行列 辺りになると? ✦
·ͱΊͱࡶײ ✦ 本質的な難しさはデータの理解とNNの設計 ✦ データの特徴と期待する出力の理解が必要 データへの異常な愛は必須 ✦ �ニューロンや隠れ層の数、特徴を掴むのは経験則 通信ネットワーク同様 ✦
�まずは先駆者や既存のものの写経から始めましょう ナナメウエなネタは大変です
·ͱΊͱࡶײ ✦ NNは通信ネットワークに向いてる?? ✦ 「プロトコル」はルールそのものなのでルールベースの方が簡単 ✦ NNフレームワークが実数を前提としている パケットの値の範囲は 0≦χ≦255�(u_int8_t) ���https://example.com:443.141592/��とかやだなー
でもIPv4アドレスが実数ならIPv6いらないんじゃ? ✦ 整数、ビット演算など計算機向けのNN/FWがあっても良さそう
·ͱΊͱࡶײ ✦ パケット加工以外の使い所 ✦ フロー解析、予測 ✦ RFC読み込み→プロトコル自動生成 ✦ キュウリの等級判別→パケットの等級判別?
·ͱΊͱࡶײ ✦ フレームワークは無償だが学習コストは高い それなりの時間が必要 ✦ 計算コストはクラウドで解決 いい時代になりました
Thank you