Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
0Copyright©2016 NTT corp. All Rights Reserved.
Zebra 2.0 and Lagopus: newly-
designed routing stack on high-
performance packet forwarder
Kunihiro Ishiguro, Yoshihiro Nakajima, Masaru Oki, Hirokazu Takahashi
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
Zebra 2.0
Open Source Routing Software
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
Open Source Revisited
• Apache License
• Written From Scratch in C++
• Task Completion Model + Thread Model
• Single SPF Engine for OSPFv2/OSPFv3/IS-IS
• Forwarding Engine Abstraction for DPDK/OF-DPA
• Configuration with Commit/Rollback
• MPLS VPN Support
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
Architecture
• Single Process/Multithread Architecture
• Protocol Module has 2 threads
BGP OPSF RSVP-TE LDP
FEA
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
OpenConfigd
• Commit & Rollback support configuration system
• Configuration is defined by YANG
• CLI, NetConf, REST API is automatically generated
• `confsh` - bash based CLI command
• OpenConfig is fully supported
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
OpenConfigd Architecture
• gRPC is used for transport
• completion/show/config APIs between shell
OpenConfigd
Zebra 2.0 Lagopus
confsh
DB
completion show config
API API
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
Language Bindings
• The module is implemented as C++ Class
• Other Language Bindings with SWIG• Python
• Java
• Ruby etc…
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
Forwarding Engine Abstraction
• Various Forwarding Engine Exists Today• OS Forwarder Layer
• DPDK
• OF-DPA
• FEA provides Common Layer for Forwarding Engine
• FEA provides• Interface/Port Management
• Bridge Management
• Routing Table
• ARP Table
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
8Copyright©2016 NTT corp. All Rights Reserved.
Lagopus:
Multicore CPUs-aware fast &
programmable packet forwarder
Lagopus is
a genus of bird in the grouse subfamily
https://lagopus.github.io
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
9Copyright©2016 NTT corp. All Rights Reserved.
Lagopus overview (1/2)
High performance userspace packet forwarder Designed for multicore-CPUs architecture
• Over-40Gbps and over-20MPPS performance
• Micro-sec order low latency packet processing
Designed for large scale RIB/FIB environment • Over-1M routes, Over-1M FIB entry are supported
Leverage high-performance network I/O library• DPDK, packet processing offload/accleratator
High-programmable packet forwarder Many protocol frame matches and actions
• Ethernet, VLAN, QinQ, PBB, MPLS, IPv4, IPv6, UDP, TCP
Tunnel protocol frame match and actions• MPLS, IPv4, VxLAN, GRE
• NSH, Geneve, GTP (in future)
QoS actions• Meter, Policer, Shaper
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
10Copyright©2016 NTT corp. All Rights Reserved.
Lagopus overview (2/2)
Various dataplane control APIs JSON
Netlink-compatible RIB/FIB API
OpenFlow 1.3 API
SwitchDev API (in future)
Switch configuration APIs JSON, Switch DSL
Netconf, OVSDB (Limited)
Management protocol and toolCLI, SNMP, JSON
Cooperate with Linux kernel network stackC-plane packet escalation using tap interface
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
11Copyright©2016 NTT corp. All Rights Reserved.
Lagopus architecture
switch configuration datastore(config/stats API, SW DSL)
STD NICDPDK NIC
DPDK libs
Lagopus soft dataplane
flow lookup flow cache
Packet processing pipeline
queue/
policer
Flow tableFlow table
flow table
Flow tableFlow tableGroup
table
Flow tableFlow tablemeter
table
switch manager/ switch HAL
Op
en
Flow
1.3
ag
en
t
JSON IF
SN
MP
CLI
OV
SD
B
NET
CO
NF
L2 A
PI
L3 A
PI
SDN switch Agent• Best OpenFlow 1.3 compliant• Netlink-compatible• L2/L3 APIs
management API• OVSDB, REST, OF-CONFIG• CLI
Multicore CPU-aware dataplane• Over-20-Gbps and 20-MPPS performance• Low latency packet processing• high performance multi-layer flow lookup
Switch configuration datastore• Pub/sub mechanism• Switch config/managment DSL• Stats database, SNMP• JSON support
Raw-socket
Cooperation with Linux OS network stack• Tap support
Various platform and NIC support
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
12Copyright©2016 NTT corp. All Rights Reserved.
Intel Data Plane Development Kit
x86 architecture-optimized
data-plane library and NIC
driver Memory structure-aware queue,
buffer management
packet flow classification
polling mode-based NIC driver
Low-overhead & high-speed
runtime optimized with data-
plane processing
Abstraction layer for hetero
server environments
BSD-license :) Good for commercial use
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
13Copyright©2016 NTT corp. All Rights Reserved.
Multi core CPU aware packet processing
Exploit many core CPUs Reduce data copy & move (reference access) Explicit thread assign to CPU core Packet classifier /loadbalancer for parallel processing
Decouple I/O processing and flow processing Improve D-cache efficiency
Packet batching Reduce lock and Improve I-cache and D-cache efficiency
NIC 1RX
NIC 2RX
I/O RXCPU0
I/O RXCPU1
NIC 1TX
NIC 2TX
I/O TXCPU6
I/O TXCPU7
Flow lookuppacket processing
CPU2
Flow lookuppacket processing
CPU4
Flow lookuppacket processing
CPU3
Flow lookuppacket processing
CPU5
NIC 3RX
NIC 4RX
NIC 3TX
NIC 4TX
NIC RX buffer
Ring buffer
Ring buffer NIC TX buffer
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
14Copyright©2016 NTT corp. All Rights Reserved.
Forwarding Engine Integration
dataplane
Lagopus
BGP OPSF RSVP-TE LDP
FEA
Zebra 2.0
OpenConfigd DB
DataplaneManager
Configurationdatastore
RIB/FIB
control Interface/Port
bridge mngmt
Interface/Port
bridge mngmt
C-plane related packet
User-traffic User-traffic
C-plane related packet
C-plane packet
escalation via tap IF
FIB
ARP
Stats
DB
C-plane packet
escalation via tap IF
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)
15Copyright©2016 NTT corp. All Rights Reserved.
Conclusion
Lagopus https://lagopus.github.io/
Zebra 2.0 https://github.com/hash-set/Zebra-2.0
(coming soon)
OpenConfigd https://github.com/hash-set/OpenConfigd
(coming soon)
Proceedings of NetDev 1.1: The Technical Conference on Linux Networking (February 10th-12th 2016. Seville, Spain)