Slide 1

Slide 1 text

「はじめてのNetwork Service Mesh」 CyberAgent, Inc. @nnao45

Slide 2

Slide 2 text

❖ 現在はScalaとかJavaばっか書いてる人 ❖ 身も心も捧げたレベルでAWSばかり触ってる人 ❖ 元々はBGPばかり触っていた人 ❖ 今年はなぜか新卒のDB研修をやる予定です ❖ 最近スラムダンク見てます、やっと海南戦始まる ❖ 宮城君が好きです @nnao45 CyberAgent AI事業本部 リテールテックDiv

Slide 3

Slide 3 text

おしながき 1. NetworkService Mesh概要 2. ネットワークのラベリングの歴史 3. Network Service Meshとは一体?

Slide 4

Slide 4 text

NetworkService Mesh概要

Slide 5

Slide 5 text

5 • Network Service Meshとは – L2/L3レイヤーのIstioインスパイアなサービスメッ シュ。VNFの思想を強く受けている。 用途 – kubeのリソースにユーザが使いたいL2/L3Network Serviceを与えるのが主な目的 • GitHub – ★374 https://github.com/networkservicemesh/network servicemesh • 類似/関連プロダクト – Istio, Envoy

Slide 6

Slide 6 text

L2/L3サービスメッシュ? 6

Slide 7

Slide 7 text

7 (個人的にはCloud Native Network Functionの方がイメー ジにあっている) L2/L3サービスメッシュ?

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

● Day 0 - K8s admin enables Network Service Mesh on cluster ○ helm install nsm ● Day 1 - Network Service Deployed to K8s cluster ○ helm install marshas-app-connectivity ● No change to underlying K8s ● Works with any CNI プログラマブルかつ、モジュールとしてNSMは追加 できる

Slide 10

Slide 10 text

実はですね・・・ どちらかというと、Network Service Meshの過去の発表スライドからは新 規性やKubernetesとの親和性が目立つのですが、実際中を見てみると、 ネットワーク技術が長い間直面し、解決しようとしてきた課題に対してとても 効果的であることが見えてきます。

Slide 11

Slide 11 text

ネットワークのラベリングの歴史

Slide 12

Slide 12 text

あれ???今日ってクラウドネイティブの勉強会ですよ ね? 12

Slide 13

Slide 13 text

実はネットワークの持つ潜在的ニーズは、 クラウドネイティブの思想で解決できるのかもしれない 13

Slide 14

Slide 14 text

14 LABEL どちらも、「ラベル」が非常に大事な概念なのです

Slide 15

Slide 15 text

ネットワークのラベリングの歴史 • ネットワークは「どういうトラフィックなのかを判別して帯域資源 を有効活用したい」のに「通常ルータやスイッチは通すトラ フィックがどういうトラフィックか分からない」という決定的な ギャップが根底に存在する。 いんたーねっ つ

Slide 16

Slide 16 text

ネットワークのラベリングの歴史 • 例えば、普段大したトラフィックを題してないとあるサーバが突 然1Gbpsのトラフィックで帯域を埋めていました、として、それ が排除すべきトラフィックであるかどうか分かりますか? いんたーねっ つ 1G 1G 1G 1G

Slide 17

Slide 17 text

ネットワークのラベリングの歴史 • L2的な解決→VLANと呼ばれるラベリングで、そのネットワー クセグメントにはどういうサーバがいるか管理し、障害影響範 囲を制御する いんたーねっ つ VLAN10 VLAN20 VLAN30

Slide 18

Slide 18 text

ネットワークのラベリングの歴史 • L2的な解決→VLANと呼ばれるラベリングで、そのネットワー クセグメントにはどういうサーバがいるか管理し、制御する いんたーねっ つ VLAN10 VLAN20 VLAN30 大量のトラフィック VLAN10は○○課だな ・・・何をやっているか 聞いてみよう。

Slide 19

Slide 19 text

ネットワークのラベリングの歴史 • しかしL2の情報だと、VxLANなどL2拡張している場合を除け ば一度ルーティングを挟めば揮発してしまう情報してしまった り、あくまでIPアドレスにBINDするので柔軟じゃない。 いんたーねっ つ VLAN10 VLAN20 VLAN30 VLAN10の事は俺は 知っている VLAN10ってなんのこ と???

Slide 20

Slide 20 text

ネットワークのラベリングの歴史 • 例えば、障害など起きた時に、「動的に帯域が空いている経路 の対してルーティングを行いたい」というニーズがあったときど うしましょう? いんたー ねっつ R1 R2 R3 R4 R5 R6 T1 T2

Slide 21

Slide 21 text

ネットワークのラベリングの歴史 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1 T2 実はここの線が工事中で、障害時 に耐えられるだけの帯域が残って ない・・・としたら? • 例えば、障害など起きた時に、「動的に帯域が空いている経路 の対してルーティングを行いたい」というニーズがあったときど うしましょう?

Slide 22

Slide 22 text

ネットワークのラベリングの歴史 • L3(L7)的な解決→RSVP(RFC2205)とかMPLS-TE Automatic Bandwidth を使用して、パケットのラベリングをし、 帯域予約や制御をする。 いんたー ねっつ R1 R2 R3 R4 R5 R6

Slide 23

Slide 23 text

ネットワークのラベリングの歴史 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1 T2 • L3(L7)的な解決→RSVP(RFC2205)とかMPLS-TE Automatic Bandwidth を使用して、パケットのラベリングをし、 帯域予約や制御をする。

Slide 24

Slide 24 text

ネットワークのラベリングの歴史 • 障害時、OSPFやシンプルなBGPルーティング情報による迂 回だけだと、「その迂回経路の帯域は十分か?」という情報ま では分からず迂回しちゃう。 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1 T2 実はここの線が工事中で、障害時 に耐えられるだけの帯域が残って ない・・・としたら?

Slide 25

Slide 25 text

ネットワークのラベリングの歴史 • RSVP-TEや、MPLS-TE Automatic Bandwidthを使用するこ とで、帯域を事前に予約したり現在の帯域情報から柔軟に ルーティングをする事を可能にしてくれる。 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1 T2

Slide 26

Slide 26 text

ネットワークは「ヘッダーの情報しか見れない」 ↓ トラフィックに対する問題に対して、 ヘッダーにラベルを追加するという解決策を取る・・・しかな い事が多い! ペイロード(どういうアプリか?) 付加価値(NW機器がつける) + どういうアプリか知れれば一番だけど、そんなことはで きないから、細かく制御したいぶんだけヘッダに追加 するしかない

Slide 27

Slide 27 text

でも待てよ・・・。 27

Slide 28

Slide 28 text

俺たちがクラウドネイティブなインフラに期待することって。 • immutableなインフラであること • ステートレス • 物理レイヤーを気にしないこと。

Slide 29

Slide 29 text

俺たちがクラウドネイティブなインフラに期待することって。 • immutableなインフラであること→そのアプリがIPや乗ってるサーバの 場所、スイッチのポートが変わるとネットワーク上で検知するのが凄い 厳しい。 • ステートレス→IPがまさにステートそのものだよね • 物理レイヤーを気にしないこと。→どこのルータに、どこのスイッチに所 属するかバリバリ意識しないといけない

Slide 30

Slide 30 text

本当はこういう事したいんじゃないの? でーたせんたー全体 でーたせんたーのど こか いんたーねっつ 動画流す 高トラ フィック App 低トラ フィック App お前はトラフィック多 いけどサービスに必 要だから多めにトラ フィック流せるように するわ お前はトラフィック少 なくていいから少なめ な

Slide 31

Slide 31 text

本当はこういう事したいんじゃないの? でーたせんたー全体 でーたせんたーのど こか いんたーねっつ 動画流す 高トラ フィック App 低トラ フィック App お前はトラフィック多 いけどサービスに必 要だから多めにトラ フィック流せるように するわ お前はトラフィック少 なくていいから少なめ な

Slide 32

Slide 32 text

本当はこういう事したいんじゃないの? でーたせんたー全体 でーたせんたーのど こか いんたーねっつ 動画流す 高トラ フィック App 低トラ フィック App お前はトラフィック多 いけどサービスに必 要だから多めにトラ フィック流せるように するわ お前はトラフィック なくていいから少 な 動画流す 高トラ フィック App

Slide 33

Slide 33 text

本当はこういう事したいんじゃないの? • トラフィックが多いアプリにだけ帯域予約 • 外部からアクセスしたいアプリにだけVPNトンネルを 張る • 決算処理するアプリにだけDPI機能で監視する アプリ単位でネットワーク機能を追加したい・・・!

Slide 34

Slide 34 text

34

Slide 35

Slide 35 text

Network Service Meshとは一体?

Slide 36

Slide 36 text

36 • Network Service Meshとは – L2/L3レイヤーのIstioインスパイアなサービスメッ シュ。VNFの思想を強く受けている。 用途 – kubeのリソースにユーザが使いたいL2/L3Network Serviceを与えるのが主な目的 • GitHub – ★374 https://github.com/networkservicemesh/network servicemesh • 類似/関連プロダクト – Istio, Envoy

Slide 37

Slide 37 text

Network Service Mesh全体像 37 Network Service Network Service Endpoint L2/L3 Connection Object Of Interest 特定のKubernetesリソースに与えたい L2/L3 サービス全体。以後 NS。 例えば、セキュアなイントラネット接続。 特定のKubernetesリソースに与えたい L2/L3サービス終端。以後 NSE。 例えば、VPNのトンネル終端とか、 VXLANのVTEP。 特定のKubernetesリソースとNSEを繋ぐ、 L2/L3のコネクティビティ。 要はルーティングなのだが、 Network Service Meshの場合はそれを「 Kubernetesのラベル」 で表現する。

Slide 38

Slide 38 text

38 Network Service Mesh設定例 Network Service Network Service Endpoint Object Of Interest Firewall Service Network Service Endpoint VPN Service Secure Intranet Service

Slide 39

Slide 39 text

39 Network Service Mesh設定例 Network Service Network Service Endpoint Object Of Interest L2/L3 Connection Firewall Service Network Service Endpoint VPN Service Secure Intranet Service app: firewall app:vpn

Slide 40

Slide 40 text

40 Network Service Mesh設定例 Network Service Network Service Endpoint Object Of Interest L2/L3 Connection Firewall Service Network Service Endpoint VPN Service Secure Intranet Service app:vpn app: firewall apiVersion: networkservicemesh.io/v1alpha1 kind: NetworkService metadata: name: secure-intranet-connectivity spec: payload: IP matches: - match: sourceSelector: app: "firewall" route: - destination: destinationSelector: app: "vpn" - match: route: - destination: destinationSelector: app: "firewall"

Slide 41

Slide 41 text

41 Network Service Mesh設定例 Network Service Network Service Endpoint Object Of Interest L2/L3 Connection Firewall Service Network Service Endpoint VPN Service Secure Intranet Service app:vpn L2/L3 Connection app: firewall

Slide 42

Slide 42 text

42 Network Service Mesh設定例 Network Service Network Service Endpoint Object Of Interest L2/L3 Connection Firewall Service Network Service Endpoint VPN Service Secure Intranet Service app:vpn L2/L3 Connection apiVersion: networkservicemesh.io/v1alpha1 kind: NetworkService metadata: name: secure-intranet-connectivity spec: payload: IP matches: - match: sourceSelector: app: "firewall" route: - destination: destinationSelector: app: "vpn" - match: route: - destination: destinationSelector: app: "firewall" app: firewall

Slide 43

Slide 43 text

内部構造 43

Slide 44

Slide 44 text

https://github.com/networkservicemesh/networkservicemesh/blob/master/docs/examples/icmp-res ponder.md

Slide 45

Slide 45 text

K8s API Server Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... IstioにおけるEnvoy Proxyのように、サービス ディスカバリーやデータプレーン運搬をしてく れるヤツ CRDとしてnetworkservicemeshサービスが あるか保管しておいてある

Slide 46

Slide 46 text

K8s API Server Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... 新たなNetwork Serviceに接続したいクライア ントはデーモンセットとして存在する NSMに接 続要求を飛ばす

Slide 47

Slide 47 text

Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... Select NetworkService NetworkServiceEndpoint NSMはmNSCに接続要求を受けると NSRに 該当するサービスがどこにあるかNSRに聞 きに行く K8s API Server

Slide 48

Slide 48 text

Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... remote.NetworkService.Request NSMはmNSCに接続要求を受けると NSRに 該当するサービスがどこにあるかNSRに聞 きに行く K8s API Server

Slide 49

Slide 49 text

Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... Network Service Manager Domain Network Service Manager (NSMgr) NSM Forwarder Network Service Client (NSC) Network Service Client (NSC) ... Network Service Endpoint (NSE) Network Service Endpoint (NSE) ... ... K8s API Server vWire (L2/L3 connection (tunnel)) Create & Inject Interface Create & Inject Interface 接続要求が成功すると、 vWireと呼ばれるトンネリングをはることで、 ノードをまたいでも直接的な接続を可能とす る

Slide 50

Slide 50 text

• アプリ単位でネットワーク機能を付与するというもので、どちらかという と大規模な環境のネットワーク屋さんに刺さる技術っぽい。 • まだまだ発展途上だけど、実際本当にノードを気にせず、しかも専用の CNIを追加しないでラベルベースでNFV付与できるのは結構筋が良く感 じる。 • 大規模なエンタープライズに需要を感じた。 50 Network Service Meshまとめ

Slide 51

Slide 51 text

参考資料 • networkservicemesh/networkservicemesh • https://github.com/networkservicemesh/networkservicemesh/blob/master/docs/what-is-nsm.md • Network Service Mesh • https://www.cisco.com/c/dam/m/en_us/network-intelligence/service-provider/digital-transformation/kno wledge-network-webinars/pdfs/1128_TECHAD_CKN_PDF.pdf • Network Service Mesh SP Intro • https://docs.google.com/presentation/d/1hFy0FZVJYahyK_vj_3pNCuaXGFEMZ-pg9B3iym7DXEg • Network Service Mesh: VPN Gateway • https://docs.google.com/presentation/d/1BnouS8d_Aesq9IPRPWRxTcZR1ZtmULcyh6l0gAK204Q/e dit#slide=id.g3b5aa99a10_0_74 51

Slide 52

Slide 52 text

Fin.