$30 off During Our Annual Pro Sale. View Details »

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

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

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

LINE Developers
PRO

August 19, 2020
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. Verda

    LINE

    View Slide

  2. • Verda % (2019-10 ~ )
    "%
    • $!
    • (2017-04 ~ 2019-10)

    "#&
    &%

    View Slide

  3. Agenda • LINE







    View Slide

  4. Agenda • LINE







    View Slide

  5. LINE
    L3
    Server
    ToR
    Leaf
    Spine
    External
    l Full-L3 BGP CLOS
    l Whitebox Switch(Mellanox) + Linux base NOS(Cumulus Linux)

    View Slide

  6. Agenda • LINE







    View Slide



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

    View Slide

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


    View Slide

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


    View Slide

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



    View Slide



  11. l $#
    l $# "
    l ToR
    $ !
    l $
    ToR
    Server A Server B
    10.1.1.1/32 10.1.1.1/32

    View Slide



  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”

    View Slide



  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:

    View Slide



  14. 2. 8,(*4Ansible%-%
    l 3,(2000,02 (2020/08%1)
    l 7"+',(
    (%
    l )/7"-%…
    l $!:.
    l )/569 (1. ; )

    View Slide



  15. 3. !'&/OS "4#
    l )1Mellanox + Cumulus Linux1.9
    l -6$753+ 4/ 2(
    l " 4#

    l -6$*0"%,*8

    View Slide

  16. Agenda • LINE







    View Slide



  17. 1. Private CloudCR0/JMB
    → API1O/.@IN3
    54?
    2. &PE>A) LAnsible;5:-H:-(
    → @IN35Agent (Sync Agent)+ KF
    3. $/./OS!# %D'
    → NAPALMOS-7G=(
    Sync Agent;8 @IOS 6
    N,

    View Slide


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

    View Slide


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

    View Slide


  20. : ZTP
    ZTP Server
    Switch
    Sync Agent
    DHCP Server
    ZTP ScriptURL
    ZTP Script
    ZTP Script


    Ansible
    - Sync Agent
    -

    View Slide


  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
    • …

    View Slide


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

    View Slide


  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

    View Slide


  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

    View Slide



  25. API
    Server
    Switch1
    etcd
    Server
    Controller
    Sync Agent
    Switch2
    Sync Agent

    View Slide



  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

    View Slide



  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

    View Slide



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

    View Slide



  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

    View Slide



  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

    View Slide



  31. 1. Private CloudCR0/JMB
    → API1O/.@IN3
    54?
    2. &PE>A) LAnsible;5:-H:-(
    → @IN35Agent (Sync Agent)+ KF
    3. $/./OS!# %D'
    → NAPALMOS-7G=(
    Sync Agent;8 @IOS 6
    N,

    View Slide


  32. l LINE"!')@3;*
    6,
    l 47
    l ZTPAnsible3;*
    l 3;*.+9
    l 0247
    l "!'!&%(
    l ? "!'#A/

    "!'385<>1 $-=:

    View Slide