はじめてのNetwork Service Mesh

D02d368f98011616d6a8612af1ca4de5?s=47 nnao45
April 28, 2020
490

はじめてのNetwork Service Mesh

D02d368f98011616d6a8612af1ca4de5?s=128

nnao45

April 28, 2020
Tweet

Transcript

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

  2. ❖ 現在はScalaとかJavaばっか書いてる人 ❖ 身も心も捧げたレベルでAWSばかり触ってる人 ❖ 元々はBGPばかり触っていた人 ❖ 今年はなぜか新卒のDB研修をやる予定です ❖ 最近スラムダンク見てます、やっと海南戦始まる

    ❖ 宮城君が好きです @nnao45 CyberAgent AI事業本部 リテールテックDiv
  3. おしながき 1. NetworkService Mesh概要 2. ネットワークのラベリングの歴史 3. Network Service Meshとは一体?

  4. NetworkService Mesh概要

  5. 5 • Network Service Meshとは – L2/L3レイヤーのIstioインスパイアなサービスメッ シュ。VNFの思想を強く受けている。 用途 –

    kubeのリソースにユーザが使いたいL2/L3Network Serviceを与えるのが主な目的 • GitHub – ★374 https://github.com/networkservicemesh/network servicemesh • 類似/関連プロダクト – Istio, Envoy
  6. L2/L3サービスメッシュ? 6

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

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

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

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

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

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

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

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

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

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

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

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

    R4 R5 R6 T1 T2
  21. ネットワークのラベリングの歴史 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1

    T2 実はここの線が工事中で、障害時 に耐えられるだけの帯域が残って ない・・・としたら? • 例えば、障害など起きた時に、「動的に帯域が空いている経路 の対してルーティングを行いたい」というニーズがあったときど うしましょう?
  22. ネットワークのラベリングの歴史 • L3(L7)的な解決→RSVP(RFC2205)とかMPLS-TE Automatic Bandwidth を使用して、パケットのラベリングをし、 帯域予約や制御をする。 いんたー ねっつ R1

    R2 R3 R4 R5 R6
  23. ネットワークのラベリングの歴史 いんたー ねっつ R1 R2 R3 R4 R5 R6 T1

    T2 • L3(L7)的な解決→RSVP(RFC2205)とかMPLS-TE Automatic Bandwidth を使用して、パケットのラベリングをし、 帯域予約や制御をする。
  24. ネットワークのラベリングの歴史 • 障害時、OSPFやシンプルなBGPルーティング情報による迂 回だけだと、「その迂回経路の帯域は十分か?」という情報ま では分からず迂回しちゃう。 いんたー ねっつ R1 R2 R3

    R4 R5 R6 T1 T2 実はここの線が工事中で、障害時 に耐えられるだけの帯域が残って ない・・・としたら?
  25. ネットワークのラベリングの歴史 • RSVP-TEや、MPLS-TE Automatic Bandwidthを使用するこ とで、帯域を事前に予約したり現在の帯域情報から柔軟に ルーティングをする事を可能にしてくれる。 いんたー ねっつ R1

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

    するしかない
  27. でも待てよ・・・。 27

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

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

  30. 本当はこういう事したいんじゃないの? でーたせんたー全体 でーたせんたーのど こか いんたーねっつ 動画流す 高トラ フィック App 低トラ

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

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

    フィック App お前はトラフィック多 いけどサービスに必 要だから多めにトラ フィック流せるように するわ お前はトラフィック なくていいから少 な 動画流す 高トラ フィック App
  33. 本当はこういう事したいんじゃないの? • トラフィックが多いアプリにだけ帯域予約 • 外部からアクセスしたいアプリにだけVPNトンネルを 張る • 決算処理するアプリにだけDPI機能で監視する アプリ単位でネットワーク機能を追加したい・・・!

  34. 34

  35. Network Service Meshとは一体?

  36. 36 • Network Service Meshとは – L2/L3レイヤーのIstioインスパイアなサービスメッ シュ。VNFの思想を強く受けている。 用途 –

    kubeのリソースにユーザが使いたいL2/L3Network Serviceを与えるのが主な目的 • GitHub – ★374 https://github.com/networkservicemesh/network servicemesh • 類似/関連プロダクト – Istio, Envoy
  37. 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のラベル」 で表現する。
  38. 38 Network Service Mesh設定例 Network Service Network Service Endpoint Object

    Of Interest Firewall Service Network Service Endpoint VPN Service Secure Intranet Service
  39. 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
  40. 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"
  41. 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
  42. 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
  43. 内部構造 43

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

  45. 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サービスが あるか保管しておいてある
  46. 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に接 続要求を飛ばす
  47. 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
  48. 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
  49. 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と呼ばれるトンネリングをはることで、 ノードをまたいでも直接的な接続を可能とす る
  50. • アプリ単位でネットワーク機能を付与するというもので、どちらかという と大規模な環境のネットワーク屋さんに刺さる技術っぽい。 • まだまだ発展途上だけど、実際本当にノードを気にせず、しかも専用の CNIを追加しないでラベルベースでNFV付与できるのは結構筋が良く感 じる。 • 大規模なエンタープライズに需要を感じた。 50

    Network Service Meshまとめ
  51. 参考資料 • 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
  52. Fin.