LINEのネットワークオーケストレーション / network-orchestration

LINEのネットワークオーケストレーション / network-orchestration

LINEのネットワークオーケストレーション
土屋俊貴(LINE株式会社 ITSC Verda室 ネットワーク開発チーム・ソフトウェアエンジニア)
LINEのデータセンタネットワークでは、これまでAnsibleを利用した構成管理と設定自動化を進めてきていました。これらの構成管理や設定自動化はネットワーク構築や運用を目的としていたため、他のサービスとの連携はあまり考えられていませんでした。しかしネットワーク機能などの開発が進むにつれて、プライベートクラウドやその他のサービスと連携して、ネットワーク自体の設定も柔軟に変更できることが求められるようになってきました。このセッションでは、こうした課題を解決するために現在取り組んでいるネットワークオーケストレーションについて紹介します。

53850955f15249a1a9dc49df6113e400?s=128

LINE Developers

August 19, 2020
Tweet

Transcript

  1. Verda    LINE    

  2. • Verda  %  (2019-10 ~ )  

     "% • $! •      (2017-04 ~ 2019-10)    "#&  &% 
  3. Agenda • LINE •    •  

      
  4. Agenda • LINE •    •  

      
  5. LINE L3 Server ToR Leaf Spine External l Full-L3 BGP

    CLOS  l Whitebox Switch(Mellanox) + Linux base NOS(Cumulus Linux)
  6. Agenda • LINE •    •  

      
  7.    Switch ZTP Server Ansible Server l :

    Zero Touch Provisioning (ZTP) l : Ansible
  8. Switch ZTP Server Ansible Server l  : Zero Touch

    Provisioning (ZTP) l  : Ansible ZTP &  (OS  ,  )   
  9. Switch ZTP Server Ansible Server l : Zero Touch Provisioning

    (ZTP) l   : Ansible Ansible (Interface, Routing, …  )   
  10. Switch ZTP Server Ansible Server l : Zero Touch Provisioning

    (ZTP) l : Ansible     
  11.    l  $# l  $# "

    l ToR $ ! l  $ ToR Server A Server B 10.1.1.1/32 10.1.1.1/32
  12.    l +  %*& ,. A ::

    .C A3 0 :A 2: . A :: X P O - SL P O T AI 0I I I / : 1A1 !"  ( #$' { “Switch-A”:[“serverX”,…] } A , ) !"  “serverX” → “Switch-A”
  13.   1. Private Cloud7  H,+@ A6 l *E;

    %'F1C/9<5: l )B H,+@ ?:  ( $0>/3) l 7  H,2 l -I $ 0>/3: 3(G: VMBGP -I.D) 8( l QoS4:: "#&!= H,QoS0>4:
  14.   2. 8,(*4Ansible&#%-% l 3,(2000,02 (2020/08%1) l 7"+',( (%

    l )/7"-% … l $!:. l )/569  (1. ; )
  15.   3. !'&/OS "4# l )1Mellanox + Cumulus Linux1.9

    l -6$753+ 4/ 2( l  " 4#  … l -6$*0 "%,*8  
  16. Agenda • LINE •    •  

      
  17.    1. Private CloudC R0/JMB → API1O /.@IN3

    54? 2. &PE>A) LAnsible;5:-H:-( → @IN35Agent (Sync Agent)+ KF 3. $/./OS!# %D' → NAPALM<Q2*   "#9P OS-7G=( Sync Agent ;8 @IOS 6 N,
  18.  :    Region A Region B ZTP

    Server API Server Switch etcd Sync Agent Switch etcd Sync Agent
  19.    : ZTP Region A Region B ZTP

    Server API Server Switch etcd Sync Agent Switch etcd Sync Agent OS Install Deploy Agent
  20.    : ZTP ZTP Server Switch Sync Agent

    DHCP Server  ZTP ScriptURL  ZTP Script  ZTP Script      Ansible - Sync Agent  -  
  21.    : ZTP ZTP Server Switch Sync Agent

    DHCP Server ) ZTP ScriptURL " * ZTP Script " + ZTP Script ,    - Ansible - Sync Agent -  Ansible  (% 1. ZTP Script$( # 2.   Ansible '& ((!) • Agentupdate • …
  22.    :  Region A Region B ZTP

    Server API Server Switch etcd Switch etcd Sync Agent  watch switch data Service Sync Agent  watch switch status
  23.    :  Region A Region B ZTP

    Server API Server Switch etcd Switch etcd Sync Agent Service  Request Update switch data Configure switch Sync Agent API Fetch switch data Covert switch data NAPALM base data model
  24.    :  Region A Region B ZTP

    Server API Server Switch etcd Switch etcd Sync Agent Service  Request  Update switch data  Configure switch Sync Agent API   Fetch switch data  Covert switch data Cumulus Ansible Data model Ansible Inventory 
  25.    API Server Switch1 etcd Server Controller Sync

    Agent Switch2 Sync Agent
  26.    API Server Switch1 etcd Sync Agent ServerA

    Switch2 Sync Agent Server Controller API Request 10.0.0.1/32 { “hostname”: “ServerA”, “address”: “10.0.0.1/32”, “ip_version”: 4, } if1
  27.    API Server Switch1 etcd Sync Agent ServerA

    Switch2 Sync Agent Server Controller 10.0.0.1/32 Key: “/servers/config/ServerA” { “hostname”: “ServerA”, “prefixes”: [“10.0.0.1/32”], } if1
  28.    API Server Switch1 etcd Sync Agent ServerA

    Switch2 Sync Agent Server Controller 10.0.0.1/32 LLDP Watch LLDP database if1
  29.    API Server Switch1 etcd Sync Agent ServerA

    Switch2 Sync Agent Server Controller 10.0.0.1/32 LLDP Fetch Server information Key: “/servers/config/ServerA” Key: “/servers/config/ServerA” { “hostname”: “ServerA”, “prefixes”: [“10.0.0.1/32”], } if1
  30.    API Server Switch1 etcd Sync Agent ServerA

    Switch2 Sync Agent Server Controller 10.0.0.1/32 if1 Update prefix filter (Ansible) ip prefix-list filter-if1-in permit 10.0.0.1/32
  31.    1. Private CloudC R0/JMB → API1O /.@IN3

    54? 2. &PE>A) LAnsible;5:-H:-( → @IN35Agent (Sync Agent)+ KF 3. $/./OS!# %D' → NAPALM<Q2*   "#9P OS-7G=( Sync Agent ;8 @IOS 6 N,
  32.  l LINE "!')@3;*  6, l  47 l

    ZTPAnsible3;* l 3;*.+9 l 0247 l "!'!&%( l ? "!'# A/  "!'385<>1  $-=: