SlideShare a Scribd company logo
Masayuki	Kobayashi
LINE	Corporation
masayuki.kobayashi at	linecorp.com
NETWORK	FOR	 :
⼤規模サービスを⽀えるネットワークインフラの全貌
LINE	Developer	Meetup	#45	in	Kyoto - 2018/09/27
Introduction
• ⼩林 正幸 / Masayuki Kobayashi
• LINE株式会社
– IT Service Center – Network dept - Service Network Team
• Network Engineer
– LINEのプロダクションネットワーク全般の設計・構築
– Peering coordinator@AS38631
Agenda
• Data Center Network Architecture
– L2-Less, BGP Only Design
• Data Center Interconnect
– Segment Routing Backbone
• Next Challenge
LINEのネットワーク
Data	CenterBackbone	/	DCIPeering	EdgeInternetUser
⾃前で設計・構築・運⽤
ネットワークを設計する上で必要なこと
1. 膨⼤なトラフィックを処理できるか
– Tbps級のサーバ間通信トラフィック
– 地理的に分散した複数のDCを⼀つに⾒せる
2. 簡単かつ迅速にスケールアウトできるか
– シンプルで、繰り返し可能なアーキテクチャ
– Cloud Native時代の展開スピード
3. 安定した運⽤ができるか
– Failure domain ≒ L2 domainの最⼩化
– 機器が壊れることを前提としたN+1の設計
What’s	Next?
2018~
JANOG39 LINEのインフラを運⽤して⾒えてきた課題(Japanese)
[Blog] https://engineering.linecorp.com/ja/blog/detail/135
[PDF] https://www.janog.gr.jp/meeting/janog39/application/files/9714/8609/7135/JANOG39_LINE.pdf
ネットワークの変遷
性能・拡張性・運⽤の限界
新しいアーキテクチャが必要
何が問題だったのか
1. 性能:⾼いオーバーサブスクリプションレート
– 現在のトラフィック量に対してネットワークがボトルネックに
– 同⼀PoD内にHadoopサーバーを配置する要件
2. 拡張性:スケールアップが必要な2N構成
– ⽚⽅の機器障害で、キャパシティが半減
– 簡単にスケールアウトできるネットワークが必要
3. 運⽤:L2ネットワークの運⽤はもう嫌だった
– L2はその仕様上、⼤きくなるほど運⽤負荷が⾼くなる
Ø BUM Traffic, VLAN管理
Ø Large L2 domain ≒ Large failure domain
L2-LESS
BGP	ONLY	DATA	CENTER
S3
S2
S1
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
10G
100G
100G
E1
Data Center Network Overview
cluster
BB PE
InternetGlobal
Network
FW NAT	
100G
Data	Center
基本構成
S3
S2
S1
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
10G
100G
100G
E1
Data Center Network Overview
cluster
BB PE
InternetGlobal
Network
FW NAT	
100G
Data	Center
Tbps級のサーバ間通信
East-West Traffic
数百Gbps
DCI Traffic
&
Internet Traffic
トラフィックパターン User
Tbpsを捌くLINEのネットワークアーキテクチャ
CLOS-style,	Similar	to	RFC7938
S3
S2
S1
=ToR
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
S	=	Stratum
E1
cluster
E	=	External
Switches
Servers
PoD
S1: Top of Rack Switches
S3: Top of Spine Switches
S3
ServerS2 S1S2S1Server
5-stage CLOS network (Unfolded)
AB
rack
AB
rack
AB
rack
・・・・・
AB
rack
・・・・・
・・・・・
・・・・・
最も離れたラックのサーバ間通信も最大5ノード経由すれば到達できる
サーバ間通信にボトルネックが発⽣しない設計
S3
S2
S1
SV
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
E1
cluster
Top of Rack(ToR):
サーバ48台を接続、1ラックにつき2台で冗⻑
Uplinkは100G x 4port, 2台で最⼤800G
ToRを収容, 上下帯域はノンブロッキング:
クラスタ内のノード数は4で固定(S1のUplink数)
クラスタ数はS1の数(ラック数)で決定
最も離れたラック間の通信を処理:
クラスタの数は4で固定
クラスタ内のノード数は、S2のクラスタ数で決定
外部との通信を処理:
インターネット、他のDC宛の通信など
PoD内で完結する通信はここに到達しない
便宜上”クラスタ”と呼んでいるが、
クラスタ(同じ階層)の機器同⼠は接続しない。
10G
100G
100G
100G
100G
すべての階層でスケールアウト可能なN+1構成
S3
S2
S1
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
E1 cluster
cluster cluster
A B
rack
A B
rack
ノード追加
クラスタ追加
ラック追加
リンク追加
単⼀故障時の縮退率が⼩さくなる
↑ スイッチ専⽤のラック列(すべて100G)
32port x 100Gのホワイトボックススイッチを採⽤
電源投⼊後はほぼ⾃動でネットワークに復帰(ZTP + Ansible)
S3
S2
S1
SV
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
E1
cluster
Goodbye, L2 Extension!
サーバからインターネットまでBGP⼀つ
ü すべての機器をEBGP接続
サービストラフィックを扱う機器すべて
10G
100G
100G
100G
100G
EBGP
Underlay
ü サーバに直接BGPを喋らせる
ToRの切替時にトラフィックロスがゼロ
ü DC内からL2ドメインを排除
LAG無し、L2オーバーレイ無し、L3のみ
ü 4-byte Private ASNを利⽤
Loopback IPから⼀意に算出、管理不要
ü P2Pリンクにアドレスを付けない
RFC5549 BGP Unnumbered
なぜBGPを採⽤したのか
1. ⼤規模環境で利⽤しやすい
– 標準化され使い慣れているプロトコル
– IGP(IS-IS, OSPF)はフラッディングメカニズムがスケールの障壁に
2. 経路制御がしやすい
– ECMPやAnycastに加えて、迂回や経路フィルタが簡単
– IBGPはその仕様上の制約が多いためEBGPを選択
3. BGPは任意の情報を広報できる
– 将来的なAFI(SAFI)/NLRI拡張技術への対応可能性
• 例: Advertising Segment Routing Policies in BGP
BGPによるトラフィック制御
S3
S2
S1
=ToR
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
E1cluster
BB PE
Internet
Global
Network
FW NAT	
10G
100G
100G
100G
ECMP
Load-Balancing
NAT & FW: VRF-Redirect
特定の送信元/宛先IPの通信を
専⽤機器宛に捻じ曲げる
DC内トラフィックはすべてロードバランシング
BGPパス属性が等コスト(Multipath-Relax)
BGP Onlyにしたことによるメリット
S3
S2
S1
=ToR
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・
・・・・・ ・・・・・ ・・・・・
E1cluster
BB PE
Internet
Global
Network
FW NAT	
10G
100G
100G
100G
4. BUM Trafficの範囲を極⼩化:
• Failure domainの最⼩化
• VLAN管理からの解放
1. メンテナンス性の向上:
• ベンダ依存のプロトコルの排除
• 特定の機器のIsolateが簡単(AS-PATH Prepend)
• BFDが不要(Interface down = BGP down)
3. モビリティの向上:
VMをどこにでも移動できる
2. 設定の⾃動化:
• 個別のパラメータが少ない
• BGPの設定を共通化
運⽤
⾃動化しやすいBGP設定フォーマットを採⽤
router bgp 4215270229
bgp bestpath as-path multipath-relax
bgp router-id 10.233.1.85
bgp max-med on-startup 60
neighbor 10.1.1.1 remote-as 4212364501
neighbor 10.2.2.2 remote-as 4210184442
...
neighbor 10.20.20.20 remote-as 4210966516
router bgp 4215270229
bgp bestpath as-path multipath-relax
bgp router-id 10.233.1.85
bgp max-med on-startup 60
neighbor swp1 remote-as external
neighbor swp2 remote-as external
...
neighbor swp32 remote-as external
⼀般的なBGP設定
機器ごとにユニークなパラメータ
Unique Unique
ü I/FでBGPを有効化 → NeighborのAS番号とIPの指定が不要
ü BGP OPEN MessageのAS番号チェックを緩和(RFC4271違反)
ü 個別のパラメータを最⼩限にすることで、設定をテンプレート化
ü サーバとネットワーク機器で共通のオペレーションが可能
LINEで採⽤しているBGP設定(FRR)
すべての機器で共通
ASNはrouter-idから⾃動算出
運⽤
S3から⾒たBGP Neighbor
• BGPでhostnameを渡す
• オペレーターに優しい
• LLDPと合わせてトポロジ作成
S1で⾒た経路情報(左:BGPデーモン, 右:Linux Kernel)
• /32はサーバのIP
• IPv4経路のNext-hopはIPv6 LLA(左)
• ダミーIP(169.254.0.1)を経由してカーネルにインストール(右)
• 対向のLLAからMACアドレスを割り出しネイバーエントリ作成
実際の経路情報
経路フィルタの⾃動制御
• Web UI上でサーバにIPをリクエストした時点で、割り当てと広報が開始
– 設定ミス等で意図しないトラフィックの誘引(ハイジャック)が起きる可能性
• ToRに経路フィルタを設定、許可されたIPのみ⾃動でフィルタ開放
– Controllerが隣接関係情報から対象のToRを特定し、定期的にAnsible実⾏
BareMetal	Server
hostname:	line
ToR
Switch	A
BareMetal	
Controller
Network	
Controller
Topology
Controller
Ansible
RabbitMQ
Server	User
1. Request	IP
(Web	UI)
2.	Call	filter	API
2’.	Assign	IP:
203.0.113.100
3.	Query	peer	info
{hostname:line}
4.	Response	switch	info
{hostname:switch A}
5.	Update	filter	data
{hostname:switch A,	filter-in:203.0.113.100}
6.	Add	Ansible	task
{hostname:switch A}
8.	Update	filter
7.	Slack	notify
国内拠点事例1
S3
S2
S1
Server
A B
rack
cluster
A B
rack
cluster
cluster
cluster
cluster cluster cluster
A B
rack
cluster
A B
rack
・・・・・ ・・・・・ ・・・・・
E1 cluster
6,720台
280台
56台
20台
4台
100G	x	2	links	x	5	switches	x	4	clusters
4,000	G	(6%)
67,200	G	(100%)
10G	x	48	servers	x	140	racks
Server	Uplink
56,000	G	(83.3%)
100G	x	4	links	x	140	racks
S1	Uplink
56,000	G	(83.3%)
100G	x	10	links	x	4	switches	x	14	clusters
S2	Uplink
140 Racks
14 clusters
4 clusters
DR-Site, 同⼀PoD内にHadoopサーバを配置する要件
国内拠点事例2
プロダクションネットワーク, ホワイトボックススイッチ948台
DATA	CENTER	INTERCONNECT
SEGMENT	ROUTING	MPLS
複数のDCを⼀つに⾒せるネットワーク
Data Center Site 2 Data Center Site 1Data Center Interconnect
EBGP EBGP
Underlay	BGP Underlay	BGPMP-BGP	w/	SR
各DCの内部構成を隠蔽する低遅延な共有転送基盤
L3	Reachability
DC間を異経路冗⻑の回線で接続
セグメントルーティングの導⼊
障害のサービス影響を最⼩限にするトランスポート
Data Center Interconnect
Payload Payload PayloadPayloadPayload
VPN	Label
SR	Label
VPN	Label
SR	Label
VPN	Label
サーバ間通信
ユーザ向け通信
Traffic Engineering
SR	Label
障害発⽣
迂回経路⽤ Adj-SID Label
宛先ノード⽤ Prefix-SID Label
通信識別⽤ Label
迂回経路
TI-LFA
SID:16103
SID:16104
SID:16101
SID:16102
Data Center Site 2 Data Center Site 1
ユーザ向けと内部向けで通信を分離各拠点でAS番号を再利⽤可能 重要な通信をクラシファイ
なぜセグメントルーティングを採⽤したのか
1. 使い慣れたMPLSをデータプレーンに利⽤できる
– 拠点間のVPN通信にMPLSのラベルスタックが必要
• シンプルなVPNサービストランスポートとしての役割
– Segment-ID(SID)をIGPで広報するだけで動く
2. シグナリングプロトコルを排除できる
– 今後の拡張を考えると、Hop-by-Hopのステート設定は排除したい
– Binding SIDの有効活⽤に期待
3. TI-LFA FRR & SR-Policyが利⽤できる
– ファイバカットなどの障害の影響を最⼩限にする
– Prefixごとの回線使⽤⽐率調整など(未導⼊)
まとめ
1. 膨⼤なトラフィックを処理できるか
ü サーバ間通信に対してノンブロッキングになるように設計
ü ⾼密度100Gスイッチの採⽤
ü 低遅延・広帯域の回線でDC同⼠を接続
2. 簡単かつ迅速にスケールアウトできるか
ü CLOSネットワーク化によりスケールアウトが容易に
ü ホワイトボックススイッチの⾃動化で展開スピードが向上
3. 安定した運⽤ができるか
ü L2を作らない
ü 機器が壊れても影響の少ないN+1冗⻑
ü シンプルな制御のバックボーンネットワーク
最後に
• もっと詳しい話は懇親会で!
• 技術的な意⾒交換会なども⼤歓迎です
• We are hiring
– Tokyo: https://linecorp.com/ja/career/position/229
THANK	YOU!
APPENDIX:
DESIGN	THE	FUTURE NETWORK
OUR	NEXT	CHALLENGE
これからのLINEのネットワーク
サービス開始
• Single	PoD
• Vender	Lock-in
• Hardware	LB
急拡⼤期
• Multi	PoD
• Vender	Lock-in
• Hardware	LB
安定運⽤期
• Fabric	network
• L2-less	underlay
• Disaggregation
• Software	LB
Next Level
• Programable	
Data	Plane
• NFV
• Service	Chaining
⼀般的なネットワーク機器だけでは実現できない領域へ
コモディティ化した機器で構築していたネットワーク
標準化され枯れたプロトコル&頻出のユースケース
Phase	1 Phase	2 Phase	3 Phase	4
今ここ
LINEが求めるデータプレーンとコントロールプレーン実装
⼀般的なネットワーク機器と適材適所で組み合わせて運⽤
SRv6	Overlay
VPN	&	Service	Chaining	
Segment Routing IPv6	Data	Center
Server	=	SRv6	Strategic	Node
BGP	CLOS	Underlay	=	Packet	Transit	Node
BGP	CLOS	Edge	=	SRv6	Endpoint	Node
Tenant	#1	Production	
Tenant	#2	Development
Tenant	#3	Load	Balancer
LB
VRF
Target	Network
検証中
END.DX4
VRF
VRF
ü 転送処理に徹底したDCアンダーレイ
ü ルーティングヘッダによるサービスオーバーレイ
ü Unified Data Plane
IPv6	Underlay
Stateless,	Pure	IP	ECMP
FW
海外拠点で導⼊検討中のユースケース

More Related Content

PPTX
あなたのところに専用線が届くまで
PDF
インターネットの仕組みとISPの構造
PDF
閉域網接続の技術入門
PDF
本当は楽しいインターネット
PPTX
コンテナネットワーキング(CNI)最前線
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
SRv6 study
PDF
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
あなたのところに専用線が届くまで
インターネットの仕組みとISPの構造
閉域網接続の技術入門
本当は楽しいインターネット
コンテナネットワーキング(CNI)最前線
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
SRv6 study
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース

What's hot (20)

PDF
大規模DCのネットワークデザイン
PDF
IPv4/IPv6 移行・共存技術の動向
PDF
BGP Unnumbered で遊んでみた
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
PDF
ロードバランスへの長い道
PDF
Fluentdのお勧めシステム構成パターン
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
PDF
ネットワークエンジニアはどこでウデマエをみがくのか?
PPTX
VPP事始め
PDF
最近のOpenStackを振り返ってみよう
PDF
DPDKによる高速コンテナネットワーキング
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
PDF
Linux女子部 systemd徹底入門
PDF
Scapyで作る・解析するパケット
PDF
DockerとPodmanの比較
PPTX
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
PDF
ゼロからはじめるKVM超入門
PDF
Ethernetの受信処理
PDF
AWSのログ管理ベストプラクティス
PDF
TCAMのしくみ
大規模DCのネットワークデザイン
IPv4/IPv6 移行・共存技術の動向
BGP Unnumbered で遊んでみた
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
ロードバランスへの長い道
Fluentdのお勧めシステム構成パターン
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ネットワークエンジニアはどこでウデマエをみがくのか?
VPP事始め
最近のOpenStackを振り返ってみよう
DPDKによる高速コンテナネットワーキング
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Linux女子部 systemd徹底入門
Scapyで作る・解析するパケット
DockerとPodmanの比較
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
ゼロからはじめるKVM超入門
Ethernetの受信処理
AWSのログ管理ベストプラクティス
TCAMのしくみ
Ad

Similar to 大規模サービスを支えるネットワークインフラの全貌 (20)

PDF
さくらのクラウドインフラの紹介
PDF
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
PDF
EVPN for Cloud Builders
PDF
そろそろビジネスに貢献するSDNを考えませんか?~キーワードは“オープン”~
PDF
ルーティングチュートリアル - AS間経路制御
PDF
Wakame-vnet / Open Source Project for Virtual Network & SDN
PDF
クックパッドでのVPC移行について
PDF
BGP as a method for Abstraction
PDF
2015.7.9 Juniper Cloud Builder Conference 2015
PPTX
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
PDF
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
PDF
Aws summits2014 エンタープライズ向けawscdpネットワーク編
PDF
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
PDF
kibayos ieice 090915
PPTX
Windows Server Community Meetup#2:New features of Microsoft SDN v2 in Windows...
PPTX
みんなの知らないネットワークの話
PDF
CloudStackとNetScaler連携tips
KEY
P2Pって何?
PDF
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
PDF
Amazon VPCトレーニング-VPCの説明
さくらのクラウドインフラの紹介
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
EVPN for Cloud Builders
そろそろビジネスに貢献するSDNを考えませんか?~キーワードは“オープン”~
ルーティングチュートリアル - AS間経路制御
Wakame-vnet / Open Source Project for Virtual Network & SDN
クックパッドでのVPC移行について
BGP as a method for Abstraction
2015.7.9 Juniper Cloud Builder Conference 2015
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
Aws summits2014 エンタープライズ向けawscdpネットワーク編
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
kibayos ieice 090915
Windows Server Community Meetup#2:New features of Microsoft SDN v2 in Windows...
みんなの知らないネットワークの話
CloudStackとNetScaler連携tips
P2Pって何?
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Amazon VPCトレーニング-VPCの説明
Ad

More from LINE Corporation (20)

PDF
JJUG CCC 2018 Fall 懇親会LT
PDF
Reduce dependency on Rx with Kotlin Coroutines
PDF
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
PDF
Use Kotlin scripts and Clova SDK to build your Clova extension
PDF
The Magic of LINE 購物 Testing
PPTX
GA Test Automation
PDF
UI Automation Test with JUnit5
PDF
Feature Detection for UI Testing
PDF
LINE 新星計劃介紹與新創團隊分享
PDF
​LINE 技術合作夥伴與應用分享
PDF
LINE 開發者社群經營與技術推廣
PDF
日本開發者大會短講分享
PDF
LINE Chatbot - 活動報名報到設計分享
PDF
在 LINE 私有雲中使用 Managed Kubernetes
PDF
LINE TODAY高效率的敏捷測試開發技巧
PDF
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
PDF
LINE Things - LINE IoT平台新技術分享
PDF
LINE Pay - 一卡通支付新體驗
PDF
LINE Platform API Update - 打造一個更好的Chatbot服務
PDF
Keynote - ​LINE 的技術策略佈局與跨國產品開發
JJUG CCC 2018 Fall 懇親会LT
Reduce dependency on Rx with Kotlin Coroutines
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Use Kotlin scripts and Clova SDK to build your Clova extension
The Magic of LINE 購物 Testing
GA Test Automation
UI Automation Test with JUnit5
Feature Detection for UI Testing
LINE 新星計劃介紹與新創團隊分享
​LINE 技術合作夥伴與應用分享
LINE 開發者社群經營與技術推廣
日本開發者大會短講分享
LINE Chatbot - 活動報名報到設計分享
在 LINE 私有雲中使用 Managed Kubernetes
LINE TODAY高效率的敏捷測試開發技巧
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Things - LINE IoT平台新技術分享
LINE Pay - 一卡通支付新體驗
LINE Platform API Update - 打造一個更好的Chatbot服務
Keynote - ​LINE 的技術策略佈局與跨國產品開發

大規模サービスを支えるネットワークインフラの全貌