SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Developing production
OpenFlow controller with Trema
Apr. 20, 2013
Yasunobu Chiba
Part-time developer, Trema Project
Copyright (C) 2013 NEC Corporation
Agenda
• Provide tips and typical mistakes when
developing OpenFlow controller with Trema C
library
• Explain a production OpenFlow controller
development use case
Copyright (C) 2013 NEC Corporation
THINGS TO KNOW ABOUT OPENFLOW
AND TREMA BEFORE DEVELOPING
OPENFLOW CONTROLLER
Copyright (C) 2013 NEC Corporation
Trema is not an OpenFlow controller
• Trema is a programming framework and just a
building block for implementing OpenFlow
controllers
• You may use any other building blocks as well
as Trema
– For high availability, scalability, network protocol
support, and etc.
Copyright (C) 2013 NEC Corporation
OpenFlow switch is not a database
• OpenFlow switch is not a database and does not
have ACID properties
• Error messages are returned from switch
asynchronously
• Send a Barrier Request to complete a previously
sent Flow Mod (or any other) operation
• See and reuse Transaction Manager:
– https://github.com/trema/apps/tree/master/transacti
on_manager
Copyright (C) 2013 NEC Corporation
Asynchronous events happen before
features request/reply exchange
• You may receive asynchronous OpenFlow
events such as Packet-In from unknown
switches that features reply has not been
received
• In Trema, Switch Ready event is triggered
when a features reply is received
Copyright (C) 2013 NEC Corporation
send_openflow_message() does not
send message actually
• send_openflow_message() just pushes a given
message to an appropriate send queue
• The send queue is automatically flushed inside
the main loop
• Message ordering is NOT guaranteed among
switches
Copyright (C) 2013 NEC Corporation
libtrema is not fully thread-safe
• The followings may be thread-safe but not
guaranteed for all functions
– buffer, doubly linked list, hash, linked list, log,
match table, OpenFlow message, packet info,
packet parser, stat, utility, wrapper
• OpenFlow application interface is NOT thread-
safe
• Call send_openflow_message() from the main
thread that trema_run() is running
Copyright (C) 2013 NEC Corporation
Length of send queue is limited
• The maximum length of send queue (for
sending OpenFlow messages) is limited and
fixed
• send_openflow_message() may return false if
the send queue is full
Copyright (C) 2013 NEC Corporation
Do not call flush_messenger()
• flush_messenger() flushes all send queues and
receive queues immediately and
synchronously
• Calling it in an OpenFlow event handler may
recursively call the event handler!
• Call only if you known how it works very well
Copyright (C) 2013 NEC Corporation
start_trema() may call fork(2)
• start_trema() calls fork(2) if your controller is
to be daemonized
• Use caution if you call functions that may be
affected by fork(2)
Copyright (C) 2013 NEC Corporation
CONTROLLER DEVELOPMENT USE
CASE
Copyright (C) 2013 NEC Corporation
Requirements
• Functional Requirements
– Manage association among virtual networks (based
on non-OpenFlow technology) and switch ports
– Associate a switch port with MAC addresses located
on the switch port
– All operations above can be done via REST interface
• Non-functional Requirements
– 1K+ switches must be handled
– 10K+ active virtual networks must be managed
– 10K+ end hosts must be connected to virtual networks
Copyright (C) 2013 NEC Corporation
Requirements – cont’d
Copyright (C) 2013 NEC Corporation
Switch #1 Switch #2 Switch #3 Switch #X
Virtual Network #N
Virtual Network #2
Virtual Network #1
10,000+ Active
Virtual Networks
1,000+ Switches
10,000+ End Hosts
Physical Network
Virtual Networks
Design
• Load balancer + three-tiered architecture + α
Copyright (C) 2013 NEC Corporation
Dispatcher
(Load Balancer)
Worker
Worker
Worker
Backend
Database
Configuration
Interface
External Application
OpenFlow Switch
REST
OpenFlow
+ REST
OpenFlow
+ REST
Implementation
Copyright (C) 2013 NEC Corporation
REST I/FController Cluster
OpenFlow Load Balancer (LVS)
Virtual Network Manager Virtual Network Manager Virtual Network Manager
Configuration Frontend Configuration Frontend Configuration Frontend
REST Interface Load Balancer (LVS)
Backend DB (MySQL)
Watchdog
Trema Trema Trema
OpenFlow
Virtual Network
Agent
REST
VM
Legacy
Network
OpenFlow Switch
REST OpenFlow
VXLAN Tunnel End-Point
Virtual Networks
Legacy L2/L3 Network
VM
Legacy
Network
Virtual Network
Agent
OpenFlow Switch
VXLAN Tunnel End-Point
Evaluation setup
Copyright (C) 2013 NEC Corporation
Vnet Manager
+ Config.
Frontend
#1
Vnet Manager
+ Config.
Frontend
#2
Vnet Manager
+ Config.
Frontend
#N
Backend DB
Load
Balancer
eth0 eth0 eth0 eth0
eth1 eth2 eth2 eth2 eth2
Database Network192.168.17.0/24
192.168.16.1 192.168.16.2 192.168.16.N
192.168.48.16
192.168.17.64 192.168.17.1 192.168.17.2 192.168.17.N 192.168.16.254
eth1
80/tcp
6633/tcp
REST Client
eth1 eth1 eth1
InternalControlNetwork192.168.16.0/24
192.168.64.17 192.168.64.18 192.168.64.19 192.168.64.16
eth0
ManagementNetwork192.168.64.0/20
192.168.64.(17+N)
ControlandData Network192.168.48.0/20
eth0 - 192.168.65.1
VXLAN TEP
Vnet
Agent
VM Host #1
Open vSwitch
hp001
sp001
eth1 - 192.168.49.1
hp128
sp128
hp002
sp002
eth0 - 192.168.65.N
VXLAN TEP
Vnet
Agent
VM Host #N
Open vSwitch
hp001
sp001
eth1 - 192.168.49.N
hp128
sp128
hp002
sp002
192.168.63.253
Evaluation items and results
• # of switches that can be managed
– 410 - 412 switches per a single Virtual Network
Manager were connected and initialized properly
• Switch daemons were not able to run due to
insufficient memory (system memory was 2 GB)
– 1024 switches were connected and initialized with
three Virtual Network Managers
Copyright (C) 2013 NEC Corporation
Evaluation items and results
• # of virtual networks that can be managed
– 16384 virtual networks that have 8 ports (hosts)
each were successfully created with 1024 switches
and three Virtual Network Managers
• Virtual network setup time
– Setup time did not increase even if we have a
number of virtual networks
– Database access time was constant and a minor
factor
Copyright (C) 2013 NEC Corporation
To be continued…
Copyright (C) 2013 NEC Corporation

Weitere ähnliche Inhalte

Was ist angesagt?

Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
Real time data processing with kafla spark integration
Real time data processing with kafla spark integrationReal time data processing with kafla spark integration
Real time data processing with kafla spark integrationTCS
 
LF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK
 
Troubleshooting Tracebacks
Troubleshooting TracebacksTroubleshooting Tracebacks
Troubleshooting TracebacksJames Denton
 
TLDK - FD.io Sept 2016
TLDK - FD.io Sept 2016 TLDK - FD.io Sept 2016
TLDK - FD.io Sept 2016 Benoit Hudzia
 
Pipeline Mechanism
Pipeline MechanismPipeline Mechanism
Pipeline MechanismAshik Iqbal
 
Interface between kernel and user space
Interface between kernel and user spaceInterface between kernel and user space
Interface between kernel and user spaceSusant Sahani
 
Integrating Active Networking and Commercial-Grade Routing Platforms
Integrating Active Networking and Commercial-Grade Routing PlatformsIntegrating Active Networking and Commercial-Grade Routing Platforms
Integrating Active Networking and Commercial-Grade Routing PlatformsTal Lavian Ph.D.
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Andriy Berestovskyy
 
Precision Time Protocol
Precision Time ProtocolPrecision Time Protocol
Precision Time ProtocolSteven Kreuzer
 
pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.Zohaib Arshid
 
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Adam Dunkels
 
Danger of Proxy ARP in IX environment
Danger of Proxy ARP in IX environmentDanger of Proxy ARP in IX environment
Danger of Proxy ARP in IX environmentMaksym Tulyuk
 
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Adam Dunkels
 
Concept of Pipelining
Concept of PipeliningConcept of Pipelining
Concept of PipeliningSHAKOOR AB
 

Was ist angesagt? (20)

Ieee 1588 ptp
Ieee 1588 ptpIeee 1588 ptp
Ieee 1588 ptp
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
IEEE1588-v2
IEEE1588-v2IEEE1588-v2
IEEE1588-v2
 
Real time data processing with kafla spark integration
Real time data processing with kafla spark integrationReal time data processing with kafla spark integration
Real time data processing with kafla spark integration
 
LF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch Panel
 
Troubleshooting Tracebacks
Troubleshooting TracebacksTroubleshooting Tracebacks
Troubleshooting Tracebacks
 
TLDK - FD.io Sept 2016
TLDK - FD.io Sept 2016 TLDK - FD.io Sept 2016
TLDK - FD.io Sept 2016
 
Pipeline Mechanism
Pipeline MechanismPipeline Mechanism
Pipeline Mechanism
 
Userspace networking
Userspace networkingUserspace networking
Userspace networking
 
Interface between kernel and user space
Interface between kernel and user spaceInterface between kernel and user space
Interface between kernel and user space
 
Integrating Active Networking and Commercial-Grade Routing Platforms
Integrating Active Networking and Commercial-Grade Routing PlatformsIntegrating Active Networking and Commercial-Grade Routing Platforms
Integrating Active Networking and Commercial-Grade Routing Platforms
 
FD.io - The Universal Dataplane
FD.io - The Universal DataplaneFD.io - The Universal Dataplane
FD.io - The Universal Dataplane
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
Precision Time Protocol
Precision Time ProtocolPrecision Time Protocol
Precision Time Protocol
 
rtnetlink
rtnetlinkrtnetlink
rtnetlink
 
pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.
 
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
 
Danger of Proxy ARP in IX environment
Danger of Proxy ARP in IX environmentDanger of Proxy ARP in IX environment
Danger of Proxy ARP in IX environment
 
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
Advanced Internet of Things firmware engineering with Thingsquare and Contiki...
 
Concept of Pipelining
Concept of PipeliningConcept of Pipelining
Concept of Pipelining
 

Ähnlich wie Developing production OpenFlow controller with Trema

Mr201304 open flow_security_eng
Mr201304 open flow_security_engMr201304 open flow_security_eng
Mr201304 open flow_security_engFFRI, Inc.
 
SDN Controller - Programming Challenges
SDN Controller - Programming ChallengesSDN Controller - Programming Challenges
SDN Controller - Programming Challengessnrism
 
OpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupOpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupEran Gampel
 
Tempest scenariotests 20140512
Tempest scenariotests 20140512Tempest scenariotests 20140512
Tempest scenariotests 20140512Masayuki Igawa
 
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...Introduction to Software Defined Networking (SDN) presentation by Warren Finc...
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...APNIC
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and CaliforniumJulien Vermillard
 
btNOG 9 presentation Introduction to Software Defined Networking
btNOG 9 presentation Introduction to Software Defined NetworkingbtNOG 9 presentation Introduction to Software Defined Networking
btNOG 9 presentation Introduction to Software Defined NetworkingAPNIC
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by OracleAkash Pramanik
 
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...NETWAYS
 
Osdc2014 openstack networking yves_fauser
Osdc2014 openstack networking yves_fauserOsdc2014 openstack networking yves_fauser
Osdc2014 openstack networking yves_fauseryfauser
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeDocker, Inc.
 
CampusSDN2017 - Jawdat: SDN Technology Evolvement
CampusSDN2017 - Jawdat: SDN Technology EvolvementCampusSDN2017 - Jawdat: SDN Technology Evolvement
CampusSDN2017 - Jawdat: SDN Technology EvolvementJawdatTI
 
Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Servicesmattjive
 
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...GetInData
 
Introduction to Apache Apex
Introduction to Apache ApexIntroduction to Apache Apex
Introduction to Apache ApexApache Apex
 
FlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerFlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerHolger Winkelmann
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practiceDocker, Inc.
 
Implementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowImplementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowAPNIC
 

Ähnlich wie Developing production OpenFlow controller with Trema (20)

Mr201304 open flow_security_eng
Mr201304 open flow_security_engMr201304 open flow_security_eng
Mr201304 open flow_security_eng
 
SDN Controller - Programming Challenges
SDN Controller - Programming ChallengesSDN Controller - Programming Challenges
SDN Controller - Programming Challenges
 
OpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetupOpenStack Neutron Dragonflow l3 SDNmeetup
OpenStack Neutron Dragonflow l3 SDNmeetup
 
Tempest scenariotests 20140512
Tempest scenariotests 20140512Tempest scenariotests 20140512
Tempest scenariotests 20140512
 
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...Introduction to Software Defined Networking (SDN) presentation by Warren Finc...
Introduction to Software Defined Networking (SDN) presentation by Warren Finc...
 
Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
btNOG 9 presentation Introduction to Software Defined Networking
btNOG 9 presentation Introduction to Software Defined NetworkingbtNOG 9 presentation Introduction to Software Defined Networking
btNOG 9 presentation Introduction to Software Defined Networking
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by Oracle
 
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...
OSDC 2014: Yves Fauser - OpenStack Networking (Neutron) - Overview of network...
 
Osdc2014 openstack networking yves_fauser
Osdc2014 openstack networking yves_fauserOsdc2014 openstack networking yves_fauser
Osdc2014 openstack networking yves_fauser
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to Practice
 
CampusSDN2017 - Jawdat: SDN Technology Evolvement
CampusSDN2017 - Jawdat: SDN Technology EvolvementCampusSDN2017 - Jawdat: SDN Technology Evolvement
CampusSDN2017 - Jawdat: SDN Technology Evolvement
 
Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Services
 
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...
Creating Real-Time Data Streaming powered by SQL on Kubernetes - Albert Lewan...
 
ECI OpenFlow 2.0 the Future of SDN
ECI OpenFlow 2.0 the Future of SDN ECI OpenFlow 2.0 the Future of SDN
ECI OpenFlow 2.0 the Future of SDN
 
Introduction to Apache Apex
Introduction to Apache ApexIntroduction to Apache Apex
Introduction to Apache Apex
 
FlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerFlowER Erlang Openflow Controller
FlowER Erlang Openflow Controller
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practice
 
Implementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowImplementing MPLS Services using Openflow
Implementing MPLS Services using Openflow
 

Kürzlich hochgeladen

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Kürzlich hochgeladen (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Developing production OpenFlow controller with Trema

  • 1. Developing production OpenFlow controller with Trema Apr. 20, 2013 Yasunobu Chiba Part-time developer, Trema Project Copyright (C) 2013 NEC Corporation
  • 2. Agenda • Provide tips and typical mistakes when developing OpenFlow controller with Trema C library • Explain a production OpenFlow controller development use case Copyright (C) 2013 NEC Corporation
  • 3. THINGS TO KNOW ABOUT OPENFLOW AND TREMA BEFORE DEVELOPING OPENFLOW CONTROLLER Copyright (C) 2013 NEC Corporation
  • 4. Trema is not an OpenFlow controller • Trema is a programming framework and just a building block for implementing OpenFlow controllers • You may use any other building blocks as well as Trema – For high availability, scalability, network protocol support, and etc. Copyright (C) 2013 NEC Corporation
  • 5. OpenFlow switch is not a database • OpenFlow switch is not a database and does not have ACID properties • Error messages are returned from switch asynchronously • Send a Barrier Request to complete a previously sent Flow Mod (or any other) operation • See and reuse Transaction Manager: – https://github.com/trema/apps/tree/master/transacti on_manager Copyright (C) 2013 NEC Corporation
  • 6. Asynchronous events happen before features request/reply exchange • You may receive asynchronous OpenFlow events such as Packet-In from unknown switches that features reply has not been received • In Trema, Switch Ready event is triggered when a features reply is received Copyright (C) 2013 NEC Corporation
  • 7. send_openflow_message() does not send message actually • send_openflow_message() just pushes a given message to an appropriate send queue • The send queue is automatically flushed inside the main loop • Message ordering is NOT guaranteed among switches Copyright (C) 2013 NEC Corporation
  • 8. libtrema is not fully thread-safe • The followings may be thread-safe but not guaranteed for all functions – buffer, doubly linked list, hash, linked list, log, match table, OpenFlow message, packet info, packet parser, stat, utility, wrapper • OpenFlow application interface is NOT thread- safe • Call send_openflow_message() from the main thread that trema_run() is running Copyright (C) 2013 NEC Corporation
  • 9. Length of send queue is limited • The maximum length of send queue (for sending OpenFlow messages) is limited and fixed • send_openflow_message() may return false if the send queue is full Copyright (C) 2013 NEC Corporation
  • 10. Do not call flush_messenger() • flush_messenger() flushes all send queues and receive queues immediately and synchronously • Calling it in an OpenFlow event handler may recursively call the event handler! • Call only if you known how it works very well Copyright (C) 2013 NEC Corporation
  • 11. start_trema() may call fork(2) • start_trema() calls fork(2) if your controller is to be daemonized • Use caution if you call functions that may be affected by fork(2) Copyright (C) 2013 NEC Corporation
  • 12. CONTROLLER DEVELOPMENT USE CASE Copyright (C) 2013 NEC Corporation
  • 13. Requirements • Functional Requirements – Manage association among virtual networks (based on non-OpenFlow technology) and switch ports – Associate a switch port with MAC addresses located on the switch port – All operations above can be done via REST interface • Non-functional Requirements – 1K+ switches must be handled – 10K+ active virtual networks must be managed – 10K+ end hosts must be connected to virtual networks Copyright (C) 2013 NEC Corporation
  • 14. Requirements – cont’d Copyright (C) 2013 NEC Corporation Switch #1 Switch #2 Switch #3 Switch #X Virtual Network #N Virtual Network #2 Virtual Network #1 10,000+ Active Virtual Networks 1,000+ Switches 10,000+ End Hosts Physical Network Virtual Networks
  • 15. Design • Load balancer + three-tiered architecture + α Copyright (C) 2013 NEC Corporation Dispatcher (Load Balancer) Worker Worker Worker Backend Database Configuration Interface External Application OpenFlow Switch REST OpenFlow + REST OpenFlow + REST
  • 16. Implementation Copyright (C) 2013 NEC Corporation REST I/FController Cluster OpenFlow Load Balancer (LVS) Virtual Network Manager Virtual Network Manager Virtual Network Manager Configuration Frontend Configuration Frontend Configuration Frontend REST Interface Load Balancer (LVS) Backend DB (MySQL) Watchdog Trema Trema Trema OpenFlow Virtual Network Agent REST VM Legacy Network OpenFlow Switch REST OpenFlow VXLAN Tunnel End-Point Virtual Networks Legacy L2/L3 Network VM Legacy Network Virtual Network Agent OpenFlow Switch VXLAN Tunnel End-Point
  • 17. Evaluation setup Copyright (C) 2013 NEC Corporation Vnet Manager + Config. Frontend #1 Vnet Manager + Config. Frontend #2 Vnet Manager + Config. Frontend #N Backend DB Load Balancer eth0 eth0 eth0 eth0 eth1 eth2 eth2 eth2 eth2 Database Network192.168.17.0/24 192.168.16.1 192.168.16.2 192.168.16.N 192.168.48.16 192.168.17.64 192.168.17.1 192.168.17.2 192.168.17.N 192.168.16.254 eth1 80/tcp 6633/tcp REST Client eth1 eth1 eth1 InternalControlNetwork192.168.16.0/24 192.168.64.17 192.168.64.18 192.168.64.19 192.168.64.16 eth0 ManagementNetwork192.168.64.0/20 192.168.64.(17+N) ControlandData Network192.168.48.0/20 eth0 - 192.168.65.1 VXLAN TEP Vnet Agent VM Host #1 Open vSwitch hp001 sp001 eth1 - 192.168.49.1 hp128 sp128 hp002 sp002 eth0 - 192.168.65.N VXLAN TEP Vnet Agent VM Host #N Open vSwitch hp001 sp001 eth1 - 192.168.49.N hp128 sp128 hp002 sp002 192.168.63.253
  • 18. Evaluation items and results • # of switches that can be managed – 410 - 412 switches per a single Virtual Network Manager were connected and initialized properly • Switch daemons were not able to run due to insufficient memory (system memory was 2 GB) – 1024 switches were connected and initialized with three Virtual Network Managers Copyright (C) 2013 NEC Corporation
  • 19. Evaluation items and results • # of virtual networks that can be managed – 16384 virtual networks that have 8 ports (hosts) each were successfully created with 1024 switches and three Virtual Network Managers • Virtual network setup time – Setup time did not increase even if we have a number of virtual networks – Database access time was constant and a minor factor Copyright (C) 2013 NEC Corporation
  • 20. To be continued… Copyright (C) 2013 NEC Corporation