<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aptira</title>
	<atom:link href="https://aptira.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://aptira.com/</link>
	<description>Cloud Solutions for Government and Enterprise</description>
	<lastBuildDate>Thu, 06 Nov 2025 03:37:38 +0000</lastBuildDate>
	<language>en-AU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://aptira.com/wp-content/uploads/2016/10/aptira_fav-50x50.png</url>
	<title>Aptira</title>
	<link>https://aptira.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Tungsten Fabric Review: Cloud-Native SDN for Kubernetes</title>
		<link>https://aptira.com/tungsten-fabric-sdn-controller-review/</link>
					<comments>https://aptira.com/tungsten-fabric-sdn-controller-review/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Sat, 25 Oct 2025 12:59:37 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<category><![CDATA[Tungsten Fabric]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13901</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/tungsten-fabric-sdn-controller-review/">Tungsten Fabric Review: Cloud-Native SDN for Kubernetes</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb92407b488"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row top-level"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img fetchpriority="high" decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/11/SDN_controllers_tungsten.jpg" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. Tungsten Fabric" srcset="https://aptira.com/wp-content/uploads/2019/11/SDN_controllers_tungsten.jpg 1000w, https://aptira.com/wp-content/uploads/2019/11/SDN_controllers_tungsten-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/11/SDN_controllers_tungsten-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/11/SDN_controllers_tungsten-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words"><a href="https://lfnetworking.org/category/tungstenfabric/">Tungsten Fabric (TF)</a> represents a fundamentally different approach to SDN—rather than controlling physical switches via OpenFlow, it provides cloud-native overlay networking for virtualized and containerized workloads. Originally developed by Juniper Networks and now part of the <a href="https://www.linuxfoundation.org/projects/networking/">Linux Foundation Networking umbrella</a>, Tungsten Fabric has become the go-to SDN solution for organizations building private clouds, Kubernetes platforms, and multi-cloud architectures where software-defined overlays matter more than physical infrastructure control.</p>
<p class="whitespace-normal break-words">This is part of our <a class="underline" href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate leading open-source SDN controllers—though Tungsten Fabric serves a distinct use case compared to OpenFlow-based controllers like ONOS, ODL, and Faucet.</p>
<h2><strong><span style="color: #03c1ae;">Tungsten Fabric at a Glance</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Cloud infrastructure, Kubernetes, OpenStack, NFV</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Microservices-based, cloud-native</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Languages</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">C++, Python, Go, Node.js</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">XMPP (vRouter control), BGP (inter-domain)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Data Plane</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Custom vRouter (kernel module or DPDK)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Zookeeper-based coordination, horizontally scalable</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Linux Foundation Networking</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Overlay networking for clouds, not physical infrastructure</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">High (distributed microservices architecture)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>License</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Apache License 2.0</td>
</tr>
</tbody>
</table>
<p class="whitespace-normal break-words"><strong>What Tungsten Fabric Does Best:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Overlay networking for VMs and containers</li>
<li class="whitespace-normal break-words">Multi-tenant isolation and security</li>
<li class="whitespace-normal break-words">OpenStack and Kubernetes native integration</li>
<li class="whitespace-normal break-words">Service Function Chaining for NFV</li>
<li class="whitespace-normal break-words">Multi-cloud consistent networking</li>
<li class="whitespace-normal break-words">Microservices-based scalability and resilience</li>
</ul>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>Tungsten Fabrics architecture is composed of two major software components: TF vRouter and TF Controller.</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="550" width="924" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/11/TF-Architecture.png" alt="Aptira Tungsten Fabric Architecture" srcset="https://aptira.com/wp-content/uploads/2019/11/TF-Architecture.png 924w, https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-300x179.png 300w, https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-768x457.png 768w" sizes="(max-width: 924px) 100vw, 924px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div><div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> TF vRouter is used for packet forwarding and applying network and security policies to the devices in the network.</p>
<ul>
<li>VRouters need to be run in each host or compute node in the network. It replaces the Linux bridge and traditional routing stack IP tables, or OpenVSwitch networking on the compute hosts.</li>
<li>The TF Controller communicates with the vRouters via Extensible Messaging and Presence Protocol (XMPP) to apply the desired networking and security policies.</li>
</ul>
<p>TF Controllers consists of following software services:</p>
<ul>
<li>Control and Configuration services for communicating with vRouters and maintaining the network topology and network policies.</li>
<li>Analytics services for telemetry and troubleshooting.</li>
<li>Web UI services for interacting with users.</li>
<li>And finally, services to provide integration with private and public could, CNI plugins, virtual machine and bare metal.</li>
</ul>
<p>Tungsten Fabric version 5.0 and later architecture use microservices based on Docker containers as shown in figure below to deploy the services mentioned above. This makes the controller resilient against failure and highly available which result in the customer user experience. </div><div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="539" width="939" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-2.png" alt="Aptira Tungsten Fabric Architecture" srcset="https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-2.png 939w, https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-2-300x172.png 300w, https://aptira.com/wp-content/uploads/2019/11/TF-Architecture-2-768x441.png 768w" sizes="(max-width: 939px) 100vw, 939px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>TF microservice-based architecture allows developing particular services based on the performance requirement and increasing load. Also, microservices by nature are modular which makes the maintenance and extensibility of the platform easy whilst isolating the failure of services from each other.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>TF proceeds towards cluster scalability in a modular fashion. This means each TF role can be scaled horizontally by adding more nodes for that related role. Also, the number of pods for each node is scalable. Zookeeper has been used to choose the active node so the number of pods deployed in the Controller and Analytics nodes must be an odd number according to the nature of the Zookeeper algorithm.</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>TF supports BGP protocol and each TF controller can be connected to other controllers via the BGP protocol. This means TF can be used to connect different SDN islands.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: TF uses the XMPP protocol for communicating with vRouters (data plane) to deliver the overlay SDN solution. BPG also can be used to communicate with legacy devices.</li>
<li>Northbound: TF supports Web GUI and RESTful APIs. Plug-ins integrate with other platforms such as orchestrators, clouds and OSS/BSS.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>Analytics nodes extract usable telemetry information form infrastructure. The data can then be normalised to the common format and the output is sent via the Kafka service into a Cassandra database. This data can be used in a multitude of ways operationally, from problem solving to capacity planning. Redis uses the data for generating graphs and running queries. The Redis pod is deployed between the analytics pod and the Web UI pod.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>The modular architecture of Tungsten Fabric makes it resilient against failure, with typically several controllers/pods running on several servers for high availability. Also, the failure of a service is isolated, so it does not affect the whole system. The API and Web GUI services are accessed through a load balancer. The load balancer can allow pods to be in different subnets.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>TF supports C++, Python, Go, Node.js.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>TF was first associated with Juniper but is now supported under the Linux Foundation Networking umbrella and boasts a large developer and user community.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>Given this evaluation; TF is a suitable choice for cloud builders and cloud-native platform engineers. This is because it works flexibly with private and public Clouds, CNI plugins, virtual machines and bare metal. Depending on the orchestrator integrated, it exposes heat APIs, Kubernetes APIs, etc. to instantiate network and security policies. The scalability of TF makes it highly available and resilient against failure which increases the customer user experience. Finally, the modularity features of it allows users to easily customise, read, test and maintain each module separately.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb92407ce95"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb924082624" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;"  href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/tungsten-fabric-sdn-controller-review/">Tungsten Fabric Review: Cloud-Native SDN for Kubernetes</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/tungsten-fabric-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Faucet SDN Controller Review: YAML-Based Lightweight SDN</title>
		<link>https://aptira.com/faucet-sdn-controller-review/</link>
					<comments>https://aptira.com/faucet-sdn-controller-review/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Sat, 25 Oct 2025 12:32:25 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13604</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/faucet-sdn-controller-review/">Faucet SDN Controller Review: YAML-Based Lightweight SDN</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb9240844c9"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_faucet.jpg" alt="Comparison of Software Defined Networking (SDN) Controllers. Faucet" srcset="https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_faucet.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_faucet-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_faucet-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_faucet-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words"><a href="https://faucet.nz/">Faucet</a> represents the convergence of modern DevOps practices with SDN—a lightweight, YAML-configured controller that treats network infrastructure like server clusters. With a score of 69.3% in our comprehensive evaluation, Faucet&#8217;s configuration-as-code approach and container-friendly architecture make it ideal for organizations embracing CI/CD pipelines, GitOps workflows, and infrastructure automation at scale.</p>
<p class="whitespace-normal break-words">This is part of our <a class="underline" href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate 6 leading open-source controllers across 13 technical criteria.</p>
<h2><strong><span style="color: #03c1ae;">Faucet at a Glance</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Overall Score</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">69.3% (Ranked #5)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">CI/CD pipelines, DevOps workflows, lightweight deployments</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Lightweight, distributed with YAML configuration</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Language</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Python (built on Ryu framework)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">OpenFlow 1.3</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">External tools required (replicated YAML configs)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Active and well-supported</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Configuration-as-code with YAML files and GitOps-friendly</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Low (container-friendly, minimal dependencies)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>License</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Apache License 2.0</td>
</tr>
</tbody>
</table>
<p class="whitespace-normal break-words"><strong>What Faucet Does Best:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">YAML-based configuration (version control friendly)</li>
<li class="whitespace-normal break-words">Lightweight and containerized deployment</li>
<li class="whitespace-normal break-words">CI/CD and GitOps integration</li>
<li class="whitespace-normal break-words">Built-in telemetry (Prometheus/InfluxDB)</li>
<li class="whitespace-normal break-words">Production-ready despite simplicity</li>
</ul>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>As shown in the figure below, architecturally, each Faucet instance has two connections to the underlying switches. One for control and configuration updates, the other (Gauge) is a read-only connection specifically for gathering, collating and transmitting state information for processing elsewhere using Influxdb or Prometheus.</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="397" width="802" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/aptira_faucet_diagram.png" alt="Comparison of Software Defined Networking (SDN) Controllers. Faucet Diagram" srcset="https://aptira.com/wp-content/uploads/2019/07/aptira_faucet_diagram.png 802w, https://aptira.com/wp-content/uploads/2019/07/aptira_faucet_diagram-300x149.png 300w, https://aptira.com/wp-content/uploads/2019/07/aptira_faucet_diagram-768x380.png 768w, https://aptira.com/wp-content/uploads/2019/07/aptira_faucet_diagram-800x397.png 800w" sizes="(max-width: 802px) 100vw, 802px" />
          </div>
        </div>
        
      </div>
    </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>Python based controllers provide a well-defined API for developers to change the way components are managed and configured.</p>
<p>Adding functionality to Faucet is achieved through modifying the systems that make use of its Northbound interfaces. This provides the added flexibility of using different tools and languages depending on the problem being solved. Additionally, increasing the complexity of northbound interactions does not negatively impact the SDN directly.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>Faucet is designed to be deployed at scale such that each instance is close to the subset of switches under its control. Each instance of Faucet is self-contained and can be deployed directly to server hardware or through containers, moving the administration back into well understood areas of automation.</p>
<p>Due to the lightweight nature of the code and the smaller control space for each instance, no clustering is required – each instance is completely idempotent and concerns itself with only what it is configured to control.</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>Faucet contains no intrinsic clustering capability and requires external tools such as Zookeeper to distribute state if this is desired. Extra instances of the controller can be started independently as long as the backing configuration remains identical.</li>
<li>PCE functionality for these controllers could be pushed down to the instance in the form of modules, or implemented in a similar manner to OpenKilda, backed by a processing cluster of choice.</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>It does not yet support a cooperative cluster of controllers.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: It supports OpenFlow v1.3 as a southbound protocol and has a support for feature such as VLANs, IPv4, IPv6, static and BGP routing, port mirroring, policy-based forwarding and ACLs matching.</li>
<li>Northbound: YAML configuration files track the intended system state instead of instantaneous API calls, requiring external tools for dynamically applying configuration. However, it does open the SDN to administration by well-understood CI/CD pipelines and testing apparatus.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>Faucet can export telemetry into Influxdb, Prometheus or flat text log files. While Prometheus saves data locally, it can also be federated, allowing centralised event aggregation and processing, while maintaining a local cache to handle upstream processing outages and maintenance.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>Faucet has no inbuilt clustering mechanism, instead relying on external tools to maintain availability. High availability is achieved by running multiple, identically configured instances, or a single instance controlled by an external framework that detects and restarts failed nodes.</p>
<p>For Faucet in particular, which is designed to sit in a distributed, shared SDN and be controlled by static configuration files, restarting a controller is a quick, stable exercise that has no reliance on upstream infrastructure once the configuration is written.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>Faucet is written in Python.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>Faucet has an active community developing the framework and it is well supported.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>Faucet is configured via a YAML file, which makes it a suitable option for CI/CD and testing environments. Faucet uses Prometheus for telemetry processing while other components such as PCE needs to be developed.</div>
<div></div>
<div>This is the last controller we will evaluate as part of this series. The next post will include a scored rating and detailed evaluation for each SDN controller.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb9240853d8"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb92408551a" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;"  href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/faucet-sdn-controller-review/">Faucet SDN Controller Review: YAML-Based Lightweight SDN</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/faucet-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenDayLight (ODL) Controller Review: Cloud &#038; Telco SDN 2025</title>
		<link>https://aptira.com/opendaylight-sdn-controller-review/</link>
					<comments>https://aptira.com/opendaylight-sdn-controller-review/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Fri, 24 Oct 2025 23:32:31 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13575</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/opendaylight-sdn-controller-review/">OpenDayLight (ODL) Controller Review: Cloud &#038; Telco SDN 2025</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb924086c75"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_opendaylight.jpg" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. OpenDayLight ODL" srcset="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_opendaylight.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_opendaylight-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_opendaylight-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_opendaylight-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words"><a href="https://www.opendaylight.org/">OpenDayLight (ODL)</a> stands as the most pervasive open-source SDN controller platform, with a score of 84.5% in our comprehensive evaluation and the largest community support in the market. Designed from the outset as a foundation for commercial solutions, ODL excels in cloud integration scenarios, particularly with OpenStack, Kubernetes, OPNFV, and ONAP—making it the de facto choice for telco cloud and NFV environments.</p>
<p class="whitespace-normal break-words">This is part of our <a class="underline" href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate 6 leading open-source controllers across 13 technical criteria.</p>
<h2><strong><span style="color: #03c1ae;">OpenDayLight at a Glance</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Overall Score</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">84.5% (Ranked #2)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Cloud integration, SD-LAN, telco NFV, data centers</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Modular, three-layer with OSGi</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Language</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Java</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">OpenFlow, P4, NETCONF, SNMP, BGP, RESTCONF, PCEP</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Native (AKKA datastore)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Linux Foundation Networking (largest community)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Broadest ecosystem integration (OpenStack, K8s, ONAP)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">High (feature-rich = more complexity)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>License</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Eclipse Public License 2.0</td>
</tr>
</tbody>
</table>
<p class="whitespace-normal break-words"><strong>What OpenDayLight Does Best:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Largest open-source SDN community and ecosystem</li>
<li class="whitespace-normal break-words">Native integration with cloud platforms and orchestrators</li>
<li class="whitespace-normal break-words">Most extensive plugin and project ecosystem</li>
<li class="whitespace-normal break-words">Model-driven architecture with YANG support</li>
<li class="whitespace-normal break-words">Production-proven in telco NFV deployments</li>
</ul>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>ODL consists of 3 layers:</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="405" width="720" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/OxygenDiagrams_031218.png" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. OpenDayLight ODL Diagram" srcset="https://aptira.com/wp-content/uploads/2019/07/OxygenDiagrams_031218.png 720w, https://aptira.com/wp-content/uploads/2019/07/OxygenDiagrams_031218-300x169.png 300w" sizes="(max-width: 720px) 100vw, 720px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound plugins to communicate with the network devices</li>
<li>Core Services that can be used by means of Service Abstraction Layer (SAL) which is based on OSGi to help components going in and out of the controller while the controller is running</li>
<li>Northbound interfaces (e.g. REST/NETCONF) that allow operators to apply high-level policies to network devices or integration of ODL with other platforms</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>Built-in mechanisms provided by ODL simplify the connection of code modules. The controller takes advantage of OSGi containers for loading bundles at runtime, allowing a very flexible approach to adding functionality.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>ODL uses a model-based approach, which implies a global, in-memory view of the network is required to perform logic calculations. ODL’s latest release further advances the platform’s scalability and robustness, with new capabilities supporting multi-site deployments for geographic reach, application performance and fault tolerance.</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>ODL contains internal functionality for maintaining a cluster, AKKA as a distributed datastore shares the current SDN state and allows for controllers to failover in the event of a cluster partition</li>
<li>As a cluster grows however, communication and coordination activities rapidly increase, limiting performance gains per additional cluster member</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>ODL includes native BGP routing capabilities to coordinate traffic flows between the SDN islands</li>
<li>Introduction of OpenDaylight into OpenStack provided multi-site networking while boosts networking performance</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: It supports an extensive list of Southbound interfaces including OpenFlow, P4, NETCONF, SNMP, BGP, RESTCONF and PCEP.</li>
<li>Northbound: ODL offers the largest set of northbound interfaces with gRPC and RESTful APIs. The northbound interfaces supported by ODL include OSGi for applications in the same address space as the controller and the standard RESTful interface. DLUX is used to represent Northbound interfaces visually to ease integration and development work.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>At a project level, ODL has limited telemetry related functionality. With the latest development release, there are moves toward providing northbound telemetry feeds, but they are in early design and not likely to be ready for production in the short term.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>ODL fault tolerance mechanism is similar to ONOS, with an odd number of SDN controllers required to provide fault tolerance in the system. In the event of master node failure, a new leader would be selected to take the control of the network. The mechanism of choosing a leader is slightly different in these controllers &#8211; while ONOS focuses on eventually consistent, ODL focuses on high availability.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>From a language perspective, ODL is written in Java.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>ODL is the second of the SDN controllers under the <a href="https://www.linuxfoundation.org/projects/networking/" target="_blank" rel="noopener noreferrer">Linux Foundation Networking</a> umbrella. This project has the largest community support of all open source SDN controllers in the market, with several big-name companies actively involved with development.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>OpenDayLight is the most pervasive open-source SDN controller with extensive northbound and southbound APIs. In addition to resiliency and scalability, the modular architecture of ODL makes it a suitable choice for different use-cases. This is why OpenDayLight has been integrated into other open-source SDN/NFV orchestration and management solutions such as OpenStack, Kubernetes, OPNFV and ONAP which are very popular platforms in telco environments.</div>
<div></div>
<div>Next, we will be evaluating OpenKilda.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924087c2e"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb924087d5f" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;" target="_blank" href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/opendaylight-sdn-controller-review/">OpenDayLight (ODL) Controller Review: Cloud &#038; Telco SDN 2025</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/opendaylight-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ONOS SDN Controller Review: Architecture &#038; Use Cases 2025</title>
		<link>https://aptira.com/onos-sdn-controller-review/</link>
					<comments>https://aptira.com/onos-sdn-controller-review/#comments</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Fri, 24 Oct 2025 01:52:23 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13554</guid>

					<description><![CDATA[<p>Complete ONOS controller review: distributed architecture, extensive API support, and production deployment for Service Providers. Compare ONOS vs OpenDayLight.</p>
<p>The post <a href="https://aptira.com/onos-sdn-controller-review/">ONOS SDN Controller Review: Architecture &#038; Use Cases 2025</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb924089288"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_onos.jpg" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. Open Network Operation System (ONOS)" srcset="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_onos.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_onos-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_onos-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_onos-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words">The Open Network Operating System (ONOS) consistently ranks as the top-rated open-source SDN controller for Communication Service Provider networks. With a score of 92% in our comprehensive evaluation, ONOS excels in API extensibility, production-ready scalability, and the unique ability to support transitions from legacy &#8220;brown field&#8221; networks to SDN &#8220;green field&#8221; deployments.</p>
<p class="whitespace-normal break-words">This is part of our <a href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate 6 leading open-source controllers across 13 technical criteria.</p>
<h2><strong><span style="color: #03c1ae;">ONOS at a Glance</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Overall Score</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">92.0% (Ranked #1)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Communication Service Providers, SD-WAN, Enterprise networks</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Distributed, three-tier</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Language</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Java</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">OpenFlow, P4, NETCONF, BGP, PCEP, SNMP, TL1, RESTCONF</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Native (Atomix datastore)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Linux Foundation Networking</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Only SDN controller supporting brown field to green field transition</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Moderate</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>License</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Apache 2.0</td>
</tr>
</tbody>
</table>
<h3><span style="color: #03c1ae;">What ONOS Does Best:</span></h3>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Extensive southbound and northbound API support</li>
<li class="whitespace-normal break-words">Intent-based networking framework</li>
<li class="whitespace-normal break-words">Production-grade horizontal scalability</li>
<li class="whitespace-normal break-words">Geographic redundancy for SD-WANs</li>
<li class="whitespace-normal break-words">Native BGP routing for multi-site coordination</li>
</ul>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>ONOS is designed as a three-tier architecture as follows:</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="1177" width="1104" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/onos-architecture.png" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. Open Network Operation System (ONOS) Diagram" srcset="https://aptira.com/wp-content/uploads/2019/07/onos-architecture.png 1104w, https://aptira.com/wp-content/uploads/2019/07/onos-architecture-281x300.png 281w, https://aptira.com/wp-content/uploads/2019/07/onos-architecture-768x819.png 768w, https://aptira.com/wp-content/uploads/2019/07/onos-architecture-960x1024.png 960w" sizes="(max-width: 1104px) 100vw, 1104px" />
          </div>
        </div>
        
      </div>
    </div><div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Tier 1 comprises of modules related to protocols which communicate with the network devices (Southbound in the figure)</li>
<li>Tier 2 composes of the core of ONOS and provides network state without relying on any particular protocol</li>
<li>Tier 3 comprises of applications, ONOS apps, which use network state information presented by Tier 2</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>ONOS has built-in mechanisms for connecting/disconnecting components while the controller is running. This allows a very flexible approach to adding functionality to the controller.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>ONOS is designed specifically to horizontally scale for performance and geo-redundancy across small regions.</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>The cluster configuration is simple, with new controllers being able to join and leave dynamically, giving flexibility over time.</li>
<li>The Atomix distributed datastore, which prioritises data consistency, should reduce the outages caused by cluster partitioning as all hosts are guaranteed to have the correct data.</li>
<li>As a cluster grows however, communication and coordination activities rapidly increase, limiting performance gains per additional cluster member.</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>ONOS includes native BGP routing capabilities to coordinate traffic flows between the SDN islands.</li>
<li>There are several documented instances of ONOS (e.g. ICONA, SDN-IP) being used successfully in a geo-redundant architecture for controlling large scale SD-WANs.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: It supports an extensive list of Southbound interfaces including OpenFlow, P4, NETCONF, TL1, SNMP, BGP, RESTCONF and PCEP.</li>
<li>Northbound: ONOS offers the largest set of northbound interfaces with gRPC and RESTful APIs.</li>
<li>GUI: The ONOS GUI is a single-page web-application, providing a visual interface to the Open Network Operating System controller (or cluster of controllers).</li>
<li>Intent-based framework: ONOS has the implementation of the inbuilt Intent based framework. By abstracting a network service into a set of criteria a flow should meet, the generation of the underlying OpenFlow (or P4) configuration is handled internally, with the client system specifying only what the functional outcome should be.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>Telemetry feeds are available through pluggable modules that come with the software, with Influx DB and Grafana plug-ins included in the latest release.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>ONOS has a very simple administration mechanism for clusters with native commands for adding and removing members.</p>
<p>The Open Network Operating System provides fault tolerance in the system with an odd number of SDN controllers. In the event of Master node failure, a new leader would be selected to take the control of the network.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>ONOS is written in Java.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>The Open Network Operating System is supported under the <a href="https://www.linuxfoundation.org/projects/networking/" target="_blank" rel="noopener noreferrer">Linux Foundation Networking</a> umbrella and boasts a large developer and user community.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>Given this evaluation, the Open Network Operating System is a suitable choice for Communication Service Providers (CSP). This is because ONOS supports an extensive list of northbound and southbound APIs so vendors do not have to write their own protocol to configure their devices. It also supports the YANG model which enables vendors to write their applications against this model. The scalability of ONOS make it highly available and resilient against failure which increases the customer user experience. Finally, the software modularity features of ONOS allows users to easily customise, read, test and maintain.</div>
<div></div>
<div>Next, we will be evaluating OpenDayLight.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Series Guide:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb92408a114"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb92408a27f" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;"  href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/onos-sdn-controller-review/">ONOS SDN Controller Review: Architecture &#038; Use Cases 2025</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/onos-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ryu SDN Controller Review: Python-Based Flexible Framework</title>
		<link>https://aptira.com/ryu-sdn-controller-review/</link>
					<comments>https://aptira.com/ryu-sdn-controller-review/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Fri, 24 Oct 2025 01:19:03 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13593</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/ryu-sdn-controller-review/">Ryu SDN Controller Review: Python-Based Flexible Framework</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb92408bd80"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_ryu.jpg" alt="Comparison of Software Defined Networking (SDN) Controllers. Ryu" srcset="https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_ryu.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_ryu-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_ryu-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/sdn_comparison_ryu-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words"><a href="https://ryu-sdn.org/">Ryu</a> (pronounced &#8220;ree-yooh,&#8221; meaning &#8220;flow&#8221; in Japanese) represents a fundamentally different approach to SDN controllers—rather than a complete platform, it&#8217;s a component-based framework that provides building blocks for creating custom SDN solutions. With a score of 73.2% in our comprehensive evaluation, Ryu&#8217;s Python-based architecture and well-defined APIs make it the preferred choice for academic research, rapid prototyping, and developers who need complete flexibility to build exactly the SDN controller they envision.</p>
<p class="whitespace-normal break-words">This is part of our <a class="underline" href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate 6 leading open-source controllers across 13 technical criteria.</p>
<h2><strong><span style="color: #03c1ae;">Ryu at a Glance</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Overall Score</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">73.2% (Ranked #3)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Academic research, custom development, OpenStack integration</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Component-based framework (toolbox approach)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Language</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Python</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">OpenFlow, NETCONF, OF-Config, partial P4 support</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">External tools required (Zookeeper)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Active development community, popular in academia</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Complete development flexibility with minimal constraints</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Low to High (depends on customization)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>License</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Apache License 2.0</td>
</tr>
</tbody>
</table>
<p class="whitespace-normal break-words"><strong>What Ryu Does Best:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Component-based framework for building custom controllers</li>
<li class="whitespace-normal break-words">Well-defined Python APIs for rapid development</li>
<li class="whitespace-normal break-words">Popular in academic research and education</li>
<li class="whitespace-normal break-words">OpenStack Neutron integration (historical significance)</li>
<li class="whitespace-normal break-words">Low barrier to entry for Python developers</li>
</ul>
<hr class="border-border-300 my-2" />
<h2><span style="color: #03c1ae;"><strong>Understanding Ryu: Framework vs. Platform</strong> </span></h2>
<p class="whitespace-normal break-words"><strong>The Fundamental Difference:</strong></p>
<p class="whitespace-normal break-words">Ryu is a very different proposition to the other options being put forward. Although boasting a core set of programs that are run as a &#8216;platform&#8217;, Ryu is better thought of as a toolbox, with which SDN controller functionality can be built.</p>
<p class="whitespace-normal break-words">Ryu is a component-based software defined networking framework. It provides software components with well defined API that make it easy for developers to create new network management and control applications. Ryu means &#8220;flow&#8221; in Japanese and is pronounced &#8220;ree-yooh&#8221;.</p>
<p class="whitespace-normal break-words"><strong>Platform vs. Framework:</strong></p>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Aspect</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Traditional Platform (ONOS/ODL)</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Framework (Ryu)</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Out-of-Box</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Full-featured controller ready to use</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Basic components, build what you need</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Applications</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Pre-built apps included</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Write your own applications</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Native HA clustering</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">DIY with external tools</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>GUI</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Production-ready web interface</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Basic or build your own</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Intent Framework</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Built-in</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Implement if needed</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Philosophy</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">&#8220;Everything included&#8221;</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">&#8220;Minimal core, maximum flexibility&#8221;</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Learning Curve</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Learn the platform</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Learn the concepts</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Use Case</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Production deployment</td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Research, custom solutions, prototyping</td>
</tr>
</tbody>
</table>
<p class="whitespace-normal break-words"><strong>What Ryu Provides:</strong></p>
<p class="whitespace-normal break-words"><strong>Core Components:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">OpenFlow protocol library (1.0 &#8211; 1.5)</li>
<li class="whitespace-normal break-words">Event-driven application framework</li>
<li class="whitespace-normal break-words">Network topology discovery</li>
<li class="whitespace-normal break-words">Basic switching applications (as examples)</li>
<li class="whitespace-normal break-words">NETCONF/OF-Config libraries</li>
<li class="whitespace-normal break-words">REST API framework</li>
<li class="whitespace-normal break-words">Packet parsing libraries</li>
</ul>
<p class="whitespace-normal break-words"><strong>What You Build:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Custom routing algorithms</li>
<li class="whitespace-normal break-words">Specific network applications</li>
<li class="whitespace-normal break-words">High availability mechanisms</li>
<li class="whitespace-normal break-words">Telemetry and monitoring</li>
<li class="whitespace-normal break-words">Integration with other systems</li>
<li class="whitespace-normal break-words">Business logic for your network</li>
</ul>
<p class="whitespace-normal break-words"><strong>The Toolbox Metaphor:</strong></p>
<p class="whitespace-normal break-words">Think of Ryu like a woodworking toolbox:</p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Saw (OpenFlow library):</strong> Tool to interact with switches</li>
<li class="whitespace-normal break-words"><strong>Hammer (Event framework):</strong> Tool to respond to network events</li>
<li class="whitespace-normal break-words"><strong>Measuring tape (Topology discovery):</strong> Tool to understand network structure</li>
<li class="whitespace-normal break-words"><strong>Sandpaper (Packet libraries):</strong> Tool to process packets</li>
</ul>
<p class="whitespace-normal break-words">But Ryu doesn&#8217;t tell you <em>what</em> to build. You decide whether you&#8217;re building a simple birdhouse (learning switch) or a complex cabinet (production router).</p>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>A Ryu SDN controller composes of these components:</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="265" width="528" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/ryu_framework-e1564368431547.jpg" alt="Comparison of Software Defined Networking (SDN) Controllers. Ryu Diagram"  />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound interfaces allow communication of SDN switches and controllers</li>
<li>Its core supports limited applications (e.g. Topology discovery, Learning switch) and libraries</li>
<li>External applications can deploy network policies to data planes via well-defined northbound APIs such as REST</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>Ryu is structured differently from other solutions in that it provides simple supporting infrastructure that users of the platform must write code to utilise as desired. While this requires development expertise, it also allows complete flexibility of the SDN solution.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>Ryu does not have an inherent clustering ability and requires external tools to share the network state and allow failover between cluster members.</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>External tools such as Zookeeper distribute a desired state. Extra instances of the controller can be started independently as long as the backing configuration remains identical.</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>While Ryu supports high availability via a Zookeeper component, it does not yet support a co-operative cluster of controllers.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: It supports multiple southbound protocols for managing devices, such as OpenFlow, NETCONF, OF-Config, and partial support of P4</li>
<li>Northbound: Offer RESTful APIs only, which are limited compared to ONOS and ODL</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>Ryu doesn&#8217;t provide any telemetry functionality. This needs to be provided via external tools.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>Ryu has no inbuilt clustering mechanism, instead relying on external tools to maintain availability. High availability is achieved by running multiple, identically configured instances, or a single instance controlled by an external framework that detects and restarts failed nodes.</p>
<p>Fault tolerance can be provided by Zookeeper for monitoring the controllers in order to detect controller&#8217;s failure and sharding state between cluster members.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>Ryu is written in Python.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>An active community developing the framework, it is a well supported and targeted controller.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>Ryu is like a toolbox with software components, which provides the SDN controller functionality. It has a support of various southbound interfaces for managing network devices. It is very popular in academia and has been used in OpenStack as a Network controller.</div>
<div></div>
<div>Next, we will be evaluating Faucet.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb92408ce64"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb92408cf9c" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;"  href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/ryu-sdn-controller-review/">Ryu SDN Controller Review: Python-Based Flexible Framework</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/ryu-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenKilda Controller Review: Telstra&#8217;s Global SDN Platform</title>
		<link>https://aptira.com/openkilda-sdn-controller-review/</link>
					<comments>https://aptira.com/openkilda-sdn-controller-review/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Fri, 24 Oct 2025 01:18:38 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13583</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/openkilda-sdn-controller-review/">OpenKilda Controller Review: Telstra&#8217;s Global SDN Platform</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb92408ece7"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_openkilda.jpg" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. OpenKilda" srcset="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_openkilda.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_openkilda-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_openkilda-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_openkilda-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p class="whitespace-normal break-words"><a href="https://www.open-kilda.org/">OpenKilda</a> is a production-proven SDN controller developed by <a href="https://www.telstra.com.au/">Telstra</a> to solve the unique challenges of managing a globally distributed network spanning multiple continents. With a score of 71.5% in our comprehensive evaluation, OpenKilda&#8217;s distributed architecture and built-in telemetry capabilities make it uniquely suited for networks where latency, geographic distribution, and operational visibility are critical concerns.</p>
<p class="whitespace-normal break-words">This is part of our <a class="underline" href="https://aptira.com/sdn-controller-comparison/">comprehensive SDN Controller Comparison Guide</a>, where we evaluate 6 leading open-source controllers across 13 technical criteria.</p>
<h2><strong><span style="color: #03c1ae;">OpenKilda at a Glance&nbsp;</span></strong></h2>
<table class="bg-bg-100 min-w-full border-separate border-spacing-0 text-sm leading-&#091;1.88888&#093; whitespace-normal">
<thead class="border-b-border-100/50 border-b-&#091;0.5px&#093; text-left">
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Attribute</th>
<th class="text-text-000 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Details</th>
</tr>
</thead>
<tbody>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Overall Score</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">71.5% (Ranked #4)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Best For</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Global distributed networks, production telemetry at scale</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Architecture</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Distributed, decentralized with Apache Storm</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Programming Language</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Java</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Primary Protocols</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">OpenFlow</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Clustering</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Modular (Floodlight + Storm cluster)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Community</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Small but active (Telstra-developed)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Key Differentiator</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">End-to-end flow telemetry with global-scale distribution</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Deployment Complexity</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">High (multiple distributed components)</td>
</tr>
<tr class="&#091;tbody&gt;&amp;&#093;:odd:bg-bg-500/10">
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;"><strong>Production Status</strong></td>
<td class="border-t-border-100/50 &#091;&amp;:not(:first-child)&#093;:-x-&#091;hsla(var(--border-100) / 0.5)&#093; border-t-&#091;0.5px&#093; px-2 &#091;&amp;:not(:first-child)&#093;:border-l-&#091;0.5px&#093;">Battle-tested in Telstra&#8217;s Pacnet infrastructure</td>
</tr>
</tbody>
</table>
<h3 class="whitespace-normal break-words"><strong>What OpenKilda Does Best:</strong></h3>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Distributed control plane for global networks</li>
<li class="whitespace-normal break-words">Built-in end-to-end telemetry and monitoring</li>
<li class="whitespace-normal break-words">Independent horizontal scaling of components</li>
<li class="whitespace-normal break-words">Production-proven at scale</li>
<li class="whitespace-normal break-words">Solves latency challenges in geographically distributed networks</li>
</ul>
<h2><strong><span style="color: #03c1ae;">The OpenKilda Story: Built for Global Scale</span></strong></h2>
<p class="whitespace-normal break-words"><strong>Why OpenKilda Exists:</strong></p>
<p class="whitespace-normal break-words">OpenKilda is a Telstra developed OpenFlow based SDN controller currently being used in production to control the large Pacnet infrastructure. It has been shown to be successful in a distributed production environment.</p>
<p class="whitespace-normal break-words">Designed to solve the problem of implementing a distributed SDN control plane with a network that spans the Globe, OpenKilda solves the problem of latency while providing a scalable SDN control &amp; data-plane and end-to-end flow telemetry.</p>
<p class="whitespace-normal break-words"><strong>The Global Network Challenge:</strong></p>
<p class="whitespace-normal break-words">Traditional centralized SDN controllers face critical limitations when managing networks that span continents:</p>
<p class="whitespace-normal break-words"><strong>Latency Issues:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Centralized controller in one region creates latency for distant switches</li>
<li class="whitespace-normal break-words">Flow setup times increase with geographic distance</li>
<li class="whitespace-normal break-words">Network convergence slows in distributed topologies</li>
<li class="whitespace-normal break-words">Real-time decision-making becomes impractical</li>
</ul>
<p class="whitespace-normal break-words"><strong>Scale Bottlenecks:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Single controller cluster can&#8217;t scale indefinitely</li>
<li class="whitespace-normal break-words">Processing intensive operations (PCE, telemetry) impact control plane</li>
<li class="whitespace-normal break-words">Coordination overhead increases exponentially with cluster size</li>
</ul>
<p class="whitespace-normal break-words"><strong>Operational Visibility:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Extracting meaningful telemetry from global infrastructure</li>
<li class="whitespace-normal break-words">Correlating events across time zones and regions</li>
<li class="whitespace-normal break-words">Capacity planning for intercontinental links</li>
<li class="whitespace-normal break-words">Troubleshooting multi-region issues</li>
</ul>
<p class="whitespace-normal break-words"><strong>Telstra&#8217;s Solution:</strong></p>
<p class="whitespace-normal break-words">OpenKilda was purpose-built to address these challenges for the Pacnet infrastructure—a global submarine cable network connecting Asia, Australia, and the Americas.</p>
<p class="whitespace-normal break-words"><strong>Design Principles:</strong></p>
<ol class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-decimal space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Distribute Control:</strong> Place controllers near switches to minimize latency</li>
<li class="whitespace-normal break-words"><strong>Decouple Processing:</strong> Separate control plane from compute-intensive operations</li>
<li class="whitespace-normal break-words"><strong>Telemetry First:</strong> Build comprehensive monitoring into the architecture</li>
<li class="whitespace-normal break-words"><strong>Horizontal Scale:</strong> Enable independent scaling of each component</li>
<li class="whitespace-normal break-words"><strong>Production Ready:</strong> Design for 24/7 operation from day one</li>
</ol>
<h2><strong><span style="color: #03c1ae;">Architecture Deep Dive</span></strong></h2>
<p>The Architecture of OpenKilda is shown in the figure below:</p>
</div>



<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="577" width="1608" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/aptira_openkilda_diagram.png" alt="Aptira Comparison of Software Defined Networking (SDN) Controllers. OpenKilda Diagram" srcset="https://aptira.com/wp-content/uploads/2019/07/aptira_openkilda_diagram.png 1608w, https://aptira.com/wp-content/uploads/2019/07/aptira_openkilda_diagram-300x108.png 300w, https://aptira.com/wp-content/uploads/2019/07/aptira_openkilda_diagram-768x276.png 768w, https://aptira.com/wp-content/uploads/2019/07/aptira_openkilda_diagram-1024x367.png 1024w" sizes="(max-width: 1608px) 100vw, 1608px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Structurally, OpenKilda uses the Floodlight software to interact with switches using OpenFlow, but pushes decision making functionality into other parts of the stack.</li>
<li>Kafka is used as a message bus for the telemetry from the Floodlight and feeds information into an Apache Storm based cluster of agents for processing.</li>
<li>Storm passes the time-series data to OpenTSDB for storing and analysing.</li>
<li>Neo4j is a graph analysis and visualisation platform.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Modularity and Extensibility </span></h3>
<p>OpenKilda is built on several well-supported open-source components to implement a decentralised, distributed control plane, backed by a unique, well-designed cluster of agents to drive network updates as required. The modular nature of the architecture lends itself to being reasonably easily added new features.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>OpenKilda is able to scale process intensive profiling and decision-making functionality horizontally and independently of the control plane.</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> Cluster Scalability</p>
<ul>
<li>OpenKilda approaches cluster scalability in a modular way. While Floodlight is used as a Southbound interface to the switch infrastructure, responsibility for PCE and telemetry processing is pushed northward into a completely separate Apache Storm based cluster. Each Floodlight instance is idempotent, with no requirement to share state. The Apache Storm cluster is by design horizontally scalable and allows throughput to be increased by adding nodes.</li>
</ul>
<p>Architectural Scalability</p>
<ul>
<li>BGP is currently not implemented and may need to be developed.</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Interfaces</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Southbound: It supports OpenFlow</li>
<li>Northbound: Offer RESTful APIs only, which are limited compared to ONOS and ODL</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>Extracting usable telemetry from the infrastructure was a core design principle of OpenKilda, so one output from the Storm agents is streams of time-series data, collected by a Hadoop backed, OpenTSDB data store. This data can be used in a multitude of ways operationally, from problem management to capacity planning.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>OpenKilda has no inbuilt clustering mechanism, instead relying on external tools to maintain availability. High availability is achieved by running multiple, identically configured instances, or a single instance controlled by an external framework that detects and restarts failed nodes.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>OpenKilda is written in Java.</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>While the functionality of OpenKilda in its intended space is promising, community support is still being cultivated, leaving much of the development and maintenance burden on its current users, with feature velocity slow. OpenKilda needs your support &#8211; <a href="https://aptira.com/contact/" target="_blank" rel="noopener noreferrer">chat with us</a> to get involved.</p>
<h3><span style="color: #03c1ae;">Conclusion</span></h3>
<div>OpenKilda has been introduced by Telstra and is already used in production within Telstra. It has a distributed architecture and leverages other well-supported Open source projects for Telemetry processing and implementing PCE functionality. From a technical point of view, it may not be suitable for geo-redundant environment or segment routing due to the lack of BGP and MPLS tagging.</div>
<div></div>
<div>Next, we will be evaluating Ryu.</div>
<div></div>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb92408fdd3"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb92408ff33" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;" target="_blank" href="https://aptira.com/solutions/services/sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/openkilda-sdn-controller-review/">OpenKilda Controller Review: Telstra&#8217;s Global SDN Platform</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/openkilda-sdn-controller-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SDN Controller Comparison 2025: ONOS vs ODL vs Ryu Guide</title>
		<link>https://aptira.com/sdn-controller-comparison/</link>
					<comments>https://aptira.com/sdn-controller-comparison/#respond</comments>
		
		<dc:creator><![CDATA[Farzaneh Pakzad]]></dc:creator>
		<pubDate>Fri, 24 Oct 2025 01:00:01 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Faucet]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[ONOS]]></category>
		<category><![CDATA[Open Network Operating System]]></category>
		<category><![CDATA[Open Networking]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[OpenKilda]]></category>
		<category><![CDATA[Ryu]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN Controller]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<category><![CDATA[Tungsten Fabric]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13546</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/sdn-controller-comparison/">SDN Controller Comparison 2025: ONOS vs ODL vs Ryu Guide</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb924092171"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_introduction.jpg" alt="Aptira Software Defined Networking SDN Controllers" srcset="https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_introduction.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_introduction-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_introduction-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/SDN_controllers_introduction-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 20px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p>The Software Defined Networking (SDN) technology landscape has evolved quickly over the last two years. Due to the developing nature of the SDN controller space, there is a plethora of software available for use.</p>
<p>The core concept of Software Defined Networking is separating the intelligence and control (e.g. routing) from forwarding elements (i.e. switches) and concentrating the control of the network management and operation in a logically centralised component &#8211; an SDN Controller. We’ve discussed this topic in more detail <a href="https://aptira.com/software-is-eating-the-network-part-3-software-defined-networking-sdn/" target="_blank" rel="noopener noreferrer">here</a>.</p>
<p>This comprehensive guide compares the maturity of the most popular Open Source SDN controllers in industry and academia including: the <a href="https://onosproject.org/" target="_blank" rel="noopener noreferrer">Open Network Operating System (ONOS)</a>, <a href="https://www.opendaylight.org/" target="_blank" rel="noopener noreferrer">OpenDayLight (ODL)</a>, <a href="https://www.open-kilda.org/" target="_blank" rel="noopener noreferrer">OpenKilda</a>, Ryu,&nbsp;<a href="https://faucet.nz/" target="_blank" rel="noopener noreferrer">Faucet</a> and <a href="https://aptira.com/comparison-of-software-defined-networking-sdn-controllers-part-8-tungsten-fabric/" target="_blank" rel="noopener noreferrer">Tungsten Fabric</a>. Our team of Solutionauts have used Software Defined Networking controllers for many different use cases, including Traffic Engineering, Segment Routing, Integration and Automated Traffic Engineering.</p>
<h2><strong><span style="color: #03c1ae;">Controller Comparison Summary</span></strong></h2>
<p class="whitespace-normal break-words">Based on our evaluation across 13 weighted criteria, we&#8217;ve scored each SDN controller to help you identify the best fit for your network infrastructure and requirements. Each design has different use cases as usage depends not only on the capability matrix, but also on the cultural fit of the organisation and the project.</p>
<table width="669">
<tbody>
<tr>
<td style="text-align: left;" width="243"><strong>Criterion</strong></td>
<td style="text-align: center;" width="68"><strong>Weight</strong></td>
<td style="text-align: center;" width="72"><strong>ONOS&nbsp;</strong></td>
<td style="text-align: center;" width="72"><strong>ODL</strong></td>
<td style="text-align: center;" width="72"><strong>OK</strong></td>
<td style="text-align: center;" width="72"><strong>Ryu</strong></td>
<td style="text-align: center;" width="72"><strong>Faucet</strong></td>
</tr>
<tr>
<td style="text-align: left;" width="243">OpenFlow Support</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Northbound API support</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.0</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Southbound API support</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.0</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Programming Language</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Core Components features / services</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Native Clustering Capabilities</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Typical Architecture</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.7</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.4</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.7</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.4</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.7</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Horizontal Scalability</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Vertical Scalability</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.5</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Extensibility</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.8</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.8</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.8</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Community Size &amp; Partnerships</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Resilience and Fault Tolerance</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
</tr>
<tr>
<td style="text-align: left;" width="243">Operations Support</td>
<td style="text-align: left;" width="68">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.5</td>
<td style="text-align: left;" width="72">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5</td>
</tr>
<tr>
<td width="243"></td>
<td width="68"></td>
<td width="72"></td>
<td width="72"></td>
<td width="72"></td>
<td width="72"></td>
<td width="72"></td>
</tr>
<tr>
<td style="text-align: left;" width="243">Weighted Score</td>
<td style="text-align: center;" width="68">100</td>
<td style="text-align: center;" width="72">92</td>
<td style="text-align: center;" width="72">84.5</td>
<td style="text-align: center;" width="72">71.5</td>
<td style="text-align: center;" width="72">73.2</td>
<td style="text-align: center;" width="72">69.3</td>
</tr>
</tbody>
</table>
<h3><span style="color: #03c1ae;">Product Rating</span></h3>
<table width="217">
<tbody>
<tr>
<td style="text-align: left;" width="73"><strong>Rank</strong></td>
<td style="text-align: left;" width="72"><strong>Product</strong></td>
<td style="text-align: left;" width="73"><strong>Score</strong></td>
</tr>
<tr>
<td style="text-align: left;" width="73">1</td>
<td style="text-align: left;" width="72"><strong>ONOS&nbsp;</strong></td>
<td style="text-align: left;" width="73">92.0%</td>
</tr>
<tr>
<td style="text-align: left;" width="73">2</td>
<td style="text-align: left;" width="72"><strong>ODL</strong></td>
<td style="text-align: left;" width="73">84.5%</td>
</tr>
<tr>
<td style="text-align: left;" width="73">3</td>
<td style="text-align: left;" width="72"><strong>Ryu</strong></td>
<td style="text-align: left;" width="73">73.2%</td>
</tr>
<tr>
<td style="text-align: left;" width="73">4</td>
<td style="text-align: left;" width="72"><strong>OK</strong></td>
<td style="text-align: left;" width="73">71.5%</td>
</tr>
<tr>
<td style="text-align: left;" width="73">5</td>
<td style="text-align: left;" width="72"><strong>Faucet</strong></td>
<td style="text-align: left;" width="73">69.3%</td>
</tr>
</tbody>
</table>
<h2><strong><span style="color: #03c1ae;">Understanding Our Evaluation Criteria</span></strong></h2>
<p class="whitespace-normal break-words">We evaluated each SDN controller against the following assessment criteria to provide a comprehensive comparison that addresses real-world deployment considerations.</p>
<h3><span style="color: #03c1ae;">Architecture</span></h3>
<p>As with most platforms, there are trade-offs to be considered when comparing a centralised, tightly coupled control plane to a decentralised, scalable and loosely coupled alternative SDN controller.</p>
<p>Centralised architectures such as ONOS and ODL tend to be easier to maintain and confer lower latency between the tightly coupled southbound API, PCE and Northbound APIs. However, as the scale increases, centralised controllers can become a bottleneck. In an SD-WAN context this can increase control plane latency but can be mitigated in a distributed architecture.</p>
<p>Distributed architectures such as OpenKilda and Faucet are generally more complex to maintain and deploy but can allow the platform to scale more effectively. By decoupling the processing of PCE, Telemetry and Southbound interface traffic, each function can be scaled independently to avoid performance bottlenecks. Additionally, specialised tools to handle big datasets, time series databases or path computation at scale become viable without adversely impacting southbound protocol performance.</p>
<p>Ryu is different to the other options, although having a core set of programs that are run as a ‘platform’, it is better thought of as a toolbox, with which SDN controller functionality can be built.</p>
<h3><span style="color: #03c1ae;">Modularity and Extensibility</span></h3>
<p>The modularity of each controller is governed by the design focus and programming languages. Platforms such as ONOS and ODL have built-in mechanisms for connecting code modules, at the expense of centralising processing to each controller. These two Java-based controllers take advantage of OSGi containers for loading bundles at runtime, allowing a very flexible approach to adding functionality.</p>
<p>Python based controllers such as Ryu provide a well-defined API for developers to change the way components are managed and configured.</p>
<p>Adding functionality to Faucet and OpenKilda is achieved through modifying the systems that make use of their northbound interfaces, such as the Apache Storm cluster or equivalent. This provides the added flexibility of using different tools and languages depending on the problem being solved. Additionally, increasing the complexity of northbound interactions does not negatively impact on the SDN directly.</p>
<h3><span style="color: #03c1ae;">Scalability</span></h3>
<p>Of the options being considered, only ONOS and ODL contain internal functionality for maintaining a cluster. Each of these platforms is backed by a distributed datastore that shares the current SDN state and allows for controllers to failover in the event of a cluster partition. As new releases of each of the controllers emerge, this functionality looks to be evolving.</p>
<p>OpenKilda approaches cluster scalability in a modular way. While Floodlight is used as a southbound interface to the switch infrastructure, responsibility for PCE and telemetry processing is pushed northward into a completely separate Apache Storm based cluster. Each Floodlight instance is idempotent, with no requirement to share state. The Apache Storm cluster is by design horizontally scalable and allows throughput to be increased by adding nodes.</p>
<p>Both Ryu and Faucet contain no intrinsic clustering capability and require external tools such as Zookeeper to distribute a desired state. With both of these platforms, extra instances of the controller can be started independently as long as the backing configuration remains identical. PCE functionality for these controllers could be pushed down to the instance in the form of modules, or implemented in a similar manner to OpenKilda, backed by a processing cluster of choice.</p>
<p>As the scale of the SDN grows, it becomes untenable for a single localised cluster to handle the load from every switch on the network. Leaving aside geographic distribution of the controllers, breaking the network into smaller logical islands decreases the need for a single southward looking cluster to be massively scalable. With this design, coordination between the islands becomes critical and while a centralised view of the network is still required, the absence of PCE and telemetry processing should not affect data plane stability once flows are configured.</p>
<p>Ryu, Faucet, ODL and ONOS all look to scale in this way by including native BGP routing capabilities to coordinate traffic flows between the SDN islands. Universal PCE and telemetry processing will need to be developed for each of these cases with OpenKilda providing a working reference architecture for achieving this. Due to the state of the documentation for OpenKilda, the BGP will need to be developed.</p>
<h3><span style="color: #03c1ae;">Interfaces</span></h3>
<p>Considering future compatibility requirements for southbound control, ONOS, ODL and Ryu include protocols beyond just OpenFlow. P4, Netconf and OF-Config could enable additional switch hardware options moving forward should it be required.</p>
<p>The northbound API turns out to be one of the key differentiators between the platforms on offer. ONOS and ODL offer the largest set of northbound interfaces with gRPC and RESTful APIs (among others) available, making them the easiest to integrate. Ryu and OpenKilda offer limited RESTful compared to ONOS and ODL. Faucet takes a completely different approach to applying changes, relying on configuration files to track intended system state instead of instantaneous API calls. This approach will require external tools for dynamically applying configuration but does open the SDN to administration by well-understood CI/CD pipelines and testing apparatus.</p>
<h3><span style="color: #03c1ae;">Telemetry</span></h3>
<p>One of the primary problems with maintaining an SDN is extracting and using any available telemetry to infer system state and help remediate issues. On this front, ODL lacks functionality, with telemetry still being an experimental module in the latest upstream version. ONOS has modules available to allow telemetry to be used through Grafana or InfluxDB.</p>
<p>Faucet can export telemetry into Influxdb, Prometheus or flat text log files. While Prometheus saves data locally, it can also be federated, allowing centralised event aggregation and processing, while maintaining a local cache to handle upstream processing outages and maintenance.</p>
<p>OpenKilda uses Storm which provides a computation system that can be used for real-time analytics. Storm passes the time-series data to OpenTSDB for storing and analysing. Neo4j, a graph analysis and visualisation platform and provided the PCE functionality initially.</p>
<p>Ryu doesn&#8217;t provide any telemetry functionality. This needs to be provide via external tools.</p>
<h3><span style="color: #03c1ae;">Resilience and Fault Tolerance</span></h3>
<p>The ONOS and ODL platforms implement native clustering as part of their respective offerings. ONOS and ODL provide fault tolerance in the system with an odd number of SDN controllers. In the event of master node failure, a new leader would be selected to take the control of the network. The mechanism of choosing a leader is slightly different in these two controllers, while ONOS focuses on eventually consistent ODL focuses on high availability.</p>
<p>The remaining controllers (OpenKilda, Ryu and Faucet) have no inbuilt clustering mechanism, instead relying on external tools to maintain availability. This simplifies the architecture of the controllers and releases them from the overhead of maintaining distributed databases for state information. High availability is achieved by running multiple, identically configured instances, or a single instance controlled by an external framework that detects and restarts failed nodes.</p>
<p>For Ryu, fault tolerance can be provided by Zookeeper for monitoring the controllers in order to detect controller&#8217;s failure and sharding state between cluster members. For Faucet in particular, which is designed to sit in a distributed, shared SDN and be controlled by static configuration files, restarting a controller is a quick, stable exercise that has no reliance on upstream infrastructure once the configuration is written.</p>
<h3><span style="color: #03c1ae;">Programming Language</span></h3>
<p>ONOS, ODL and OpenKilda are written in Java, for which development resources are abundant in the market, with good supporting documentation and libraries available. While using Java should not be seen as a negative, Java processes can tend to be heavyweight and require resource and configuration management to keep them lean and responsive.</p>
<p>Ryu and Faucet are written in Python, a well-supported language and has an active community developing the framework. The documentation is concise and technical, aimed at developers to maximise the utility of the system. Python is not a fast language and has inherent limitations due to both the dynamic type representations being used and limited multi-threaded capabilities (when compared with Java, Golang or C++).</p>
<h3><span style="color: #03c1ae;">Community</span></h3>
<p>Both ODL and ONOS benefit from large developer and user communities under the <a href="https://www.linuxfoundation.org/projects/networking/" target="_blank" rel="noopener noreferrer">Linux Foundation Networking</a> banner. Many large international players are involved in the development and governance of these projects, which could add to the longevity and security over time. A possible downside is, as with any large project, there are many voices trying to be heard and stability can be impacted by feature velocity. This has occurred with similar projects such as <a href="https://www.openstack.org/" target="_blank" rel="noopener noreferrer">OpenStack</a> in the immediate past.</p>
<p>OpenKilda is a small but active community which can limit the supportability, velocity and features of the platform. OpenKilda needs your support –&nbsp;<a href="https://aptira.com/contact/" target="_blank" rel="noopener noreferrer">chat with us</a>&nbsp;to get involved.</p>
<p>Between these two extremes are RYU and Faucet. Both are well supported, targeted controllers. Due to the emerging nature of the field, both options look to have a bright future, with a simpler, streamlined approach to change submission and testing.</p>
<h2><strong><span style="color: #03c1ae;">Detailed SDN Controller Reviews</span></strong></h2>
<p class="whitespace-normal break-words">Each SDN controller has unique strengths and ideal use cases. Below are our detailed technical evaluations of each platform, including architecture deep-dives, scalability analysis, and real-world implementation considerations.</p>
<h3 class="text-base font-bold text-text-100 mt-1">Open Network Operating System (ONOS)</h3>
<p class="whitespace-normal break-words"><strong>Quick Summary:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Score:</strong> 92.0%</li>
<li class="whitespace-normal break-words"><strong>Best For:</strong> Communication Service Providers, SD-WAN deployments</li>
<li class="whitespace-normal break-words"><strong>Architecture:</strong> Distributed, three-tier</li>
<li class="whitespace-normal break-words"><strong>Key Strength:</strong> Extensive API support and production-ready scalability</li>
<li class="whitespace-normal break-words"><strong>Programming Language:</strong> Java</li>
<li class="whitespace-normal break-words"><strong>Community:</strong> Linux Foundation Networking</li>
</ul>
<p class="whitespace-normal break-words">ONOS is designed to be distributed, stable and scalable with a focus on Service Provider networks. The Open Network Operating System is the only SDN controller platform that supports the transition from legacy &#8220;brown field&#8221; networks to SDN &#8220;green field&#8221; networks. This enables exciting new capabilities, and disruptive deployment and operational cost points for network operators.</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/onos-sdn-controller-review/">Read the complete ONOS deep-dive →</a></p>
<p class="whitespace-normal break-words"><strong>Key highlights:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Supports extensive list of northbound and southbound APIs</li>
<li class="whitespace-normal break-words">YANG model support enables vendor-agnostic application development</li>
<li class="whitespace-normal break-words">High availability and resilience with native clustering</li>
<li class="whitespace-normal break-words">Modularity allows easy customization and maintenance</li>
<li class="whitespace-normal break-words">Intent-based framework simplifies flow management</li>
</ul>
<hr class="border-border-300 my-2">
<h3 class="text-base font-bold text-text-100 mt-1">OpenDayLight (ODL)</h3>
<p class="whitespace-normal break-words"><strong>Quick Summary:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Score:</strong> 84.5%</li>
<li class="whitespace-normal break-words"><strong>Best For:</strong> Cloud integration, SD-LAN, telco environments with OpenStack/ONAP</li>
<li class="whitespace-normal break-words"><strong>Architecture:</strong> Modular, three-layer with OSGi</li>
<li class="whitespace-normal break-words"><strong>Key Strength:</strong> Largest community support, extensive integration options</li>
<li class="whitespace-normal break-words"><strong>Programming Language:</strong> Java</li>
<li class="whitespace-normal break-words"><strong>Community:</strong> Linux Foundation Networking (largest community)</li>
</ul>
<p class="whitespace-normal break-words">OpenDaylight is a modular open platform for customising and automating networks of any size and scale. The OpenDaylight Project arose out of the SDN movement, with a clear focus on network programmability. It was designed from the outset as a foundation for commercial solutions that address a variety of use cases in existing network environments.</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/opendaylight-sdn-controller-review/">Read the complete OpenDayLight deep-dive →</a></p>
<p class="whitespace-normal break-words"><strong>Key highlights:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Most pervasive open-source SDN controller in market</li>
<li class="whitespace-normal break-words">Extensive northbound and southbound API support</li>
<li class="whitespace-normal break-words">Integrated into OpenStack, Kubernetes, OPNFV, and ONAP</li>
<li class="whitespace-normal break-words">Model-based approach with OSGi for runtime modularity</li>
<li class="whitespace-normal break-words">Strong multi-site deployment capabilities</li>
</ul>
<hr class="border-border-300 my-2">
<h3 class="text-base font-bold text-text-100 mt-1">OpenKilda</h3>
<p class="whitespace-normal break-words"><strong>Quick Summary:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Score:</strong> 71.5%</li>
<li class="whitespace-normal break-words"><strong>Best For:</strong> Global distributed networks, production telemetry at scale</li>
<li class="whitespace-normal break-words"><strong>Architecture:</strong> Distributed, decentralized with Apache Storm</li>
<li class="whitespace-normal break-words"><strong>Key Strength:</strong> End-to-end flow telemetry, proven at global scale</li>
<li class="whitespace-normal break-words"><strong>Programming Language:</strong> Java</li>
<li class="whitespace-normal break-words"><strong>Community:</strong> Small but active (Telstra-developed)</li>
</ul>
<p class="whitespace-normal break-words">OpenKilda is a Telstra developed OpenFlow based SDN controller currently being used in production to control the large Pacnet infrastructure. It has been shown to be successful in a distributed production environment. Designed to solve the problem of implementing a distributed SDN control plane with a network that spans the Globe, OpenKilda solves the problem of latency while providing a scalable SDN control &amp; data-plane and end-to-end flow telemetry.</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/openkilda-sdn-controller-review/">Read the complete OpenKilda deep-dive →</a></p>
<p class="whitespace-normal break-words"><strong>Key highlights:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Production-proven in Telstra&#8217;s global network</li>
<li class="whitespace-normal break-words">Distributed architecture with independent horizontal scaling</li>
<li class="whitespace-normal break-words">Built-in telemetry processing with OpenTSDB and Neo4j</li>
<li class="whitespace-normal break-words">Modular cluster scalability with Apache Storm</li>
<li class="whitespace-normal break-words">Note: BGP/MPLS support may need development for some use cases</li>
</ul>
<hr class="border-border-300 my-2">
<h3 class="text-base font-bold text-text-100 mt-1">Ryu</h3>
<p class="whitespace-normal break-words"><strong>Quick Summary:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Score:</strong> 73.2%</li>
<li class="whitespace-normal break-words"><strong>Best For:</strong> Academic research, custom SDN development, OpenStack integration</li>
<li class="whitespace-normal break-words"><strong>Architecture:</strong> Component-based framework (toolbox approach)</li>
<li class="whitespace-normal break-words"><strong>Key Strength:</strong> Complete flexibility for custom solutions</li>
<li class="whitespace-normal break-words"><strong>Programming Language:</strong> Python</li>
<li class="whitespace-normal break-words"><strong>Community:</strong> Active development community</li>
</ul>
<p class="whitespace-normal break-words">Ryu is a very different proposition to the other options being put forward. Although boasting a core set of programs that are run as a &#8216;platform&#8217;, Ryu is better thought of as a toolbox, with which SDN controller functionality can be built. Ryu is a component-based software defined networking framework that provides software components with well defined API that make it easy for developers to create new network management and control applications.</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/ryu-sdn-controller-review/">Read the complete Ryu deep-dive →</a></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Toolbox approach offers complete development flexibility</li>
<li class="whitespace-normal break-words">Multiple southbound protocols (OpenFlow, NETCONF, OF-Config, P4)</li>
<li class="whitespace-normal break-words">Popular in academic research environments</li>
<li class="whitespace-normal break-words">Used in OpenStack as network controller</li>
<li class="whitespace-normal break-words">Requires development expertise but allows custom solutions</li>
</ul>
<hr class="border-border-300 my-2">
<h3 class="text-base font-bold text-text-100 mt-1">Faucet</h3>
<p class="whitespace-normal break-words"><strong>Quick Summary:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Score:</strong> 69.3%</li>
<li class="whitespace-normal break-words"><strong>Best For:</strong> CI/CD pipelines, lightweight deployments, container environments</li>
<li class="whitespace-normal break-words"><strong>Architecture:</strong> Lightweight, distributed with YAML configuration</li>
<li class="whitespace-normal break-words"><strong>Key Strength:</strong> Configuration-as-code approach, simple deployment</li>
<li class="whitespace-normal break-words"><strong>Programming Language:</strong> Python</li>
<li class="whitespace-normal break-words"><strong>Community:</strong> Active and well-supported</li>
</ul>
<p class="whitespace-normal break-words">Built on top of Ryu, Faucet is a lightweight SDN Controller adding a critical northbound function for operations teams. Faucet is a compact open source OpenFlow controller, which enables network operators to run their networks the same way they do server clusters. Faucet moves network control functions (like routing protocols, neighbor discovery, and switching algorithms) to vendor independent server-based software, where those functions are easy to manage, test, and extend with modern systems management best practices and tools.</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/">Read the complete Faucet deep-dive →</a></p>
<p class="whitespace-normal break-words"><strong>Key highlights:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">YAML configuration enables CI/CD integration</li>
<li class="whitespace-normal break-words">Lightweight and easily containerized</li>
<li class="whitespace-normal break-words">Built-in telemetry with Prometheus/InfluxDB</li>
<li class="whitespace-normal break-words">Ideal for distributed, shared SDN environments</li>
<li class="whitespace-normal break-words">Quick, stable restart with no upstream dependencies</li>
</ul>
<hr class="border-border-300 my-2">
<h2 class="text-lg font-bold text-text-100 mt-1 -mb-1.5">Choosing the Right SDN Controller for Your Network</h2>
<p class="whitespace-normal break-words">Selecting the appropriate SDN controller depends on your specific use case, existing infrastructure, team expertise, and organizational requirements. Here are our recommendations based on common scenarios.</p>
<h3 class="text-base font-bold text-text-100 mt-1">By Use Case</h3>
<p class="whitespace-normal break-words"><strong>Communication Service Providers (CSP)</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Recommended:</strong> ONOS (1st choice), OpenDayLight (2nd choice)</li>
<li class="whitespace-normal break-words"><strong>Why:</strong> Extensive API support, production-ready scalability, support for legacy network transition, large vendor ecosystem</li>
</ul>
<p class="whitespace-normal break-words"><strong>Cloud &amp; Virtualization Environments</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Recommended:</strong> OpenDayLight, Tungsten Fabric</li>
<li class="whitespace-normal break-words"><strong>Why:</strong> Native integration with OpenStack, Kubernetes, ONAP; proven in telco cloud deployments</li>
</ul>
<p class="whitespace-normal break-words"><strong>Global/Distributed Networks</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Recommended:</strong> OpenKilda, Faucet</li>
<li class="whitespace-normal break-words"><strong>Why:</strong> Distributed architecture handles global latency, independent scaling of components</li>
</ul>
<p class="whitespace-normal break-words"><strong>Development &amp; Research</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Recommended:</strong> Ryu, Faucet</li>
<li class="whitespace-normal break-words"><strong>Why:</strong> Flexibility for custom development, active academic communities, lower barrier to entry</li>
</ul>
<p class="whitespace-normal break-words"><strong>CI/CD &amp; DevOps Environments</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words"><strong>Recommended:</strong> Faucet</li>
<li class="whitespace-normal break-words"><strong>Why:</strong> YAML-based configuration, lightweight deployment, version control friendly</li>
</ul>
<h3 class="text-base font-bold text-text-100 mt-1">By Technical Requirements</h3>
<p class="whitespace-normal break-words"><strong>Need Native Clustering?</strong> → ONOS or OpenDayLight</p>
<p class="whitespace-normal break-words"><strong>Need Extensive Telemetry?</strong> → OpenKilda or Faucet</p>
<p class="whitespace-normal break-words"><strong>Need Maximum API Flexibility?</strong> → ONOS or OpenDayLight</p>
<p class="whitespace-normal break-words"><strong>Need Lightweight Deployment?</strong> → Faucet or Ryu</p>
<p class="whitespace-normal break-words"><strong>Need Production Support?</strong> → ONOS or OpenDayLight (largest communities)</p>
<h2><strong><span style="color: #03c1ae;">BONUS: Tungsten Fabric for Cloud-Native Networks</span></strong></h2>
<p class="whitespace-normal break-words">For organizations moving toward cloud-native infrastructure, Tungsten Fabric offers SDN capabilities specifically designed for cloud-grade networks.</p>
<p class="whitespace-normal break-words">With the current IT market, organisations are moving towards migrating their old infrastructure to the Cloud and cloudifying every part of their infrastructure. Tungsten Fabric can be a suitable choice for cloud builders and cloud-native platform engineers. It has been first associated with Juniper but now is under the Linux Foundation umbrella.</p>
<p class="whitespace-normal break-words"><strong>Key Features:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">Microservices-based architecture with Docker containers</li>
<li class="whitespace-normal break-words">Integration with private/public clouds, Kubernetes, VMs, and bare metal</li>
<li class="whitespace-normal break-words">Horizontal scalability of individual service roles</li>
<li class="whitespace-normal break-words">Built-in telemetry with Kafka and Cassandra</li>
<li class="whitespace-normal break-words">Supports C++, Python, Go, Node.js</li>
</ul>
<p class="whitespace-normal break-words"><strong>Best For:</strong> Cloud builders, cloud-native platform engineers, multi-cloud deployments</p>
<p class="whitespace-normal break-words"><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/"><strong>Deep Dive Into Tungsten Fabric&nbsp;</strong></a></p>
<hr class="border-border-300 my-2">
<h2><strong><span style="color: #03c1ae;">Next Steps: Implementation Support</span></strong></h2>
<p class="whitespace-normal break-words">Ready to implement an SDN controller solution? Our team of Solutionauts has extensive experience deploying and managing SDN controllers for Traffic Engineering, Segment Routing, Integration and Automated Traffic Engineering across Communication Service Providers, government agencies, and enterprise networks.</p>
<p class="whitespace-normal break-words"><strong>Contact us to discuss:</strong></p>
<ul class="&#091;&amp;:not(:last-child)_ul&#093;:pb-1 &#091;&amp;:not(:last-child)_ol&#093;:pb-1 list-disc space-y-2.5 pl-7">
<li class="whitespace-normal break-words">SDN controller selection and evaluation</li>
<li class="whitespace-normal break-words">Architecture design and implementation</li>
<li class="whitespace-normal break-words">Migration from legacy networks</li>
<li class="whitespace-normal break-words">Integration with existing infrastructure</li>
<li class="whitespace-normal break-words">Training and ongoing support</li>
</ul>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Architecture</li>
<li>Modularity and Extensibility</li>
<li>Scalability
<ul>
<li>Cluster Scalability</li>
<li>Architectural Scalability</li>
</ul>
</li>
<li>Interfaces
<ul>
<li>Northbound API support</li>
<li>Southbound API support</li>
</ul>
</li>
<li>Telemetry</li>
<li>Resilience and Fault Tolerance</li>
<li>Programming Language</li>
<li>Community</li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element " >
	<p>It is important to understand the motivations behind the available platforms. Each design has different use cases as usage depends not only on the capability matrix, but also on the cultural fit of the organisation and the project.</p>
<p>Our team of Solutionauts have used Software Defined Networking controllers for many different use cases, including: <a href="https://aptira.com/creating-virtual-wan-links-using-openkilda-and-noviflow/" target="_blank" rel="noopener noreferrer">Traffic Engineering</a>, <a href="https://aptira.com/segment-routing-in-software-defined-networking-wide-area-networks-sdn-wan/" target="_blank" rel="noopener noreferrer">Segment Routing</a>, <a href="https://aptira.com/orchestrating-and-managing-a-wide-area-network-software-defined-network-wan-sdn-using-a-cloudify-service-orchestrator/" target="_blank" rel="noopener noreferrer">Integration</a> and <a href="https://aptira.com/automated-network-traffic-engineering-and-tunneling/" target="_blank" rel="noopener noreferrer">Automated Traffic Engineering</a>.</p>
<p>Over the next few days, we will be comparing, rating and evaluating each of the most popular Open Source SDN controllers in use today. This comparison will be useful for organisations to help them select the right SDN controller for their platform which match their network design and requirements.</p>
<h3><span style="color: #03c1ae;">SDN Controller Comparisons:</span></h3>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><a href="https://aptira.com/sdn-controller-comparison/" rel="noopener noreferrer">Part 1: SDN Controller Comparison</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/onos-sdn-controller-review/" rel="noopener noreferrer">Part 2: The Open Network Operating System (ONOS)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/opendaylight-sdn-controller-review/" rel="noopener noreferrer">Part 3: OpenDayLight (ODL)</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/openkilda-sdn-controller-review/" rel="noopener noreferrer">Part 4: OpenKilda</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/ryu-sdn-controller-review/" rel="noopener noreferrer">Part 5: Ryu</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/faucet-sdn-controller-review/" rel="noopener noreferrer">Part 6: Faucet</a></li>
<li><i class="icon-default-style icon-salient-thin-line accent-color"></i><a href="https://aptira.com/tungsten-fabric-sdn-controller-review/" rel="noopener noreferrer">Part 7: BONUS – Tungsten Fabric</a></li>
</ul>
 </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924093379"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" style="transform:  translateY(-50%);">
			<div class="wpb_wrapper">
				<div id="fws_69cb924093503" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row  vc_custom_1761282799619"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;"  href="https://aptira.com/solutions/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/sdn-controller-comparison/">SDN Controller Comparison 2025: ONOS vs ODL vs Ryu Guide</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/sdn-controller-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kubernetes Explained</title>
		<link>https://aptira.com/kubernetes-explained/</link>
					<comments>https://aptira.com/kubernetes-explained/#comments</comments>
		
		<dc:creator><![CDATA[Aptira]]></dc:creator>
		<pubDate>Wed, 25 Aug 2021 06:06:41 +0000</pubDate>
				<category><![CDATA[Technical Documentation]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=14142</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/kubernetes-explained/">Kubernetes Explained</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb92409583a"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				
<div class="wpb_text_column wpb_content_element  vc_custom_1629871485649" >
	<h5>Container Orchestration for Modern Applications</h5>
<p><span data-contrast="auto">Platforms such as <a href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> have provided users with greater flexibility when running applications on both virtual infrastructure and physical hardware. They are extremely lightweight and efficient, meaning your services can easily be packed up, moved between environments and switched between testing and production. However, once your environment starts to grow and involves multiple containers on multiple hosts, things can start to get a little tricky.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">This is where Kubernetes comes in. Kubernetes is specifically designed for deploying and managing containerised applications at scale across all major public clouds and private infrastructure. This enables users to operate their own Kubernetes clusters on demand, or easily outsource their Kubernetes operations to orchestration experts – such as SUSE &amp; Aptira.</span></p>
<p><strong>Teaming up with our good friends at <a href="https://more.suse.com/FY21Q3_PM_APJ-ALL_SR_PTN-CH_CLDNT_LP_Dummies_Guide_Aptira_DummiesGuideRegistrationPage.html" data-attribute-index="0" data-entity-hovercard-id="urn:li:fs_miniCompany:1455" data-entity-type="MINI_COMPANY">SUSE</a>, we&#8217;re offering a free, comprehensive guide for Kubernetes Management. </strong></p>
<p><a href="https://more.suse.com/FY21Q3_PM_APJ-ALL_SR_PTN-CH_CLDNT_LP_Dummies_Guide_Aptira_DummiesGuideRegistrationPage.html">Download this complimentary guide here.</a> <a href="https://more.suse.com/FY21Q3_PM_APJ-ALL_SR_PTN-CH_CLDNT_LP_Dummies_Guide_Aptira_DummiesGuideRegistrationPage.html"><i class="icon-tiny fa fa-download accent-color"></i></a></p>
</div>




<div class="wpb_text_column wpb_content_element  vc_custom_1629687876550" >
	<h5><span class="TextRun SCXW110340643 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW110340643 BCX0">Extensive, Efficient and Open Orchestration</span></span></h5>
<p><span data-contrast="auto"><a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer">Kubernetes</a> is an open-source system. This means that vendor lock-in has been eliminated by providing core capabilities without the typical vendor restrictions which are often imposed on other systems.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span class="TextRun SCXW73506312 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW73506312 BCX0">Kubernetes takes a modular approach to architecture design, allowing for applications to be broken down into many smaller, specialized parts. This approach enables faster development, facilitates the isolation of dependencies and provides greater elasticity for scaling. </span><span class="SpellingError SCXW73506312 BCX0">Aptira</span><span class="NormalTextRun SCXW73506312 BCX0"> designs these smaller, modularized containers to create a well-tuned containerized environment which is tailor made to suit specific requirements. The Kubernetes controllers make this infrastructure easy to manage throughout the full life cycle of your application.</span></span></p>
<p><span class="EOP SCXW73506312 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"><span data-contrast="auto">The Aptira team are Certified Kubernetes Administrators (CKA), boasting real-world experience creating, configuring and managing several Kubernetes clusters in production environments. We perfect orchestration, taking developer outputs and putting them into production in a maintainable way.</span></span></p>
</div>




<div class="wpb_text_column wpb_content_element  vc_custom_1629871558438" >
	<h5>Scale your applications</h5>
<p><span data-contrast="auto">With container orchestration, it’s easy to ramp your application up or down to meet the fluctuations in demand. Software can be deployed in a scale-out manner across multiple pods, and deployments can be scaled in or out at any time. Kubernetes facilitates horizontal autoscaling, automatically scaling up/down the number of pods based on the usage of resources. Users can also pause/resume deployments to save time and resources.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Kubernetes can also automatically orchestrate your storage platform of choice – local or network storage – and provide the provisioned persistent storage to your applications running inside containers.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
</div>




<div class="wpb_text_column wpb_content_element  vc_custom_1629871596863" >
	<h5><span class="TextRun SCXW134334977 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW134334977 BCX0">Fixing and Updating Software</span></span><span class="EOP SCXW134334977 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h5>
<p><span data-contrast="auto">In the case of an application failure, applications can be fixed automatically using Kubernetes&#8217; auto-healing feature to re-create the pod. When a node or server fails, they will simply be re-deployed on another available node/server. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">When deploying a new software version, multiple versions can run in parallel. The new version can be used to test the new deployment in production, then the previous version can be scaled down simultaneously.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">This allows rolling updates to take place with zero downtime, incrementally updating pods and automatically reverting to a previous version when needed.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
</div>




<div class="wpb_text_column wpb_content_element  vc_custom_1629687997452" >
	<h5>Simple Cluster Management</h5>
<div class="wpb_text_column wpb_content_element ">
<div class="wpb_wrapper">
<p><span class="TextRun SCXW14730391 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW14730391 BCX0">Kubernetes can be run anywhere, giving users the freedom to take advantage of on-premises, hybrid or public for running your applications. Not only this, containers are more transparent than virtual machines, making monitoring and management of your application even easier. It also simplifies many complex management tasks, including:</span></span><span class="EOP SCXW14730391 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
</div>
</div>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><span data-contrast="auto">Scheduling</span></li>
<li><span data-contrast="auto">Load Balancing &amp; Distribution</span></li>
<li><span data-contrast="auto">Version Control</span></li>
</ul>
 </div>
<div class="wpb_text_column wpb_content_element  vc_custom_1629688044898" >
	<p><span class="TextRun SCXW65435129 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW65435129 BCX0">Kubernetes also facilitates simpler server maintenance. It provides the application design primitives necessary for end-users (your developers) to define the configuration of their workloads without operator support. Infrastructure operators can focus on deploying mostly homogeneous Kubernetes clusters without needing specialized knowledge of application workloads, saving you time and money.</span></span><span class="EOP SCXW65435129 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
</div>




<div class="wpb_text_column wpb_content_element " >
	<h5><span class="TextRun SCXW54480216 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW54480216 BCX0">Non-Restricted Frameworks and Languages</span></span><span class="EOP SCXW54480216 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559731&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h5>
<p><span class="TextRun SCXW257390856 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW257390856 BCX0">Unlike many traditional platform-as-a-service offerings, Kubernetes provides much greater flexibility for the types of applications supported. Kubernetes does not restrict application frameworks, supported languages or distinguish services from applications. If an application can run in a container, it should run on Kubernetes, making Kubernetes the container orchestration platform of choice for modern applications.</span></span><span class="EOP SCXW257390856 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>We also support other Container Orchestration platforms in addition to Kubernetes – including Docker, Cloudify, Kolla-Ansible, Murano and more. Check out our <a href="https://aptira.com/supported-technologies/" target="_blank" rel="noopener noreferrer">supported technologies</a> or chat with our Solutionauts to find out the best orchestration platform for your requirements.</p>
</div>




			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924095e9f"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb924095ff0" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			
<div class="wpb_text_column wpb_content_element " >
	<h3>Kubernetes for Dummies</h3>
<h5>A Valuable Resource</h5>
<p>Enterprise applications are becoming more complex, and dev and ops teams need a tool to manage that complexity. Kubernetes is that tool – enabling enterprises to deploy, scale and manage containerized applications everywhere.</p>
<p><a href="https://more.suse.com/FY21Q3_PM_APJ-ALL_SR_PTN-CH_CLDNT_LP_Dummies_Guide_Aptira_DummiesGuideRegistrationPage.html">This handy guide</a> walks you through that process, from evaluating where your company stands now, to what to look for when selecting a Kubernetes management platform, to real work examples of how Kubernetes can drive innovation from core to cloud to edge.</p>
<p>Kubernetes Management for Dummies will get you well on your way to building a successful enterprise-grade Kubernetes environment. After reading this you will be able to:</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li>Define your strategy</li>
<li>Learn from industry leaders</li>
<li>Select the right management platform</li>
</ul>
 </div>
		</div> 
	</div>
	</div> 
</div></div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924096231"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 50px; padding-bottom: 50px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div>
			<div class="video-color-overlay row-bg-layer" data-color=""></div>
							<div class="mobile-video-image" style="background-image: url(https://aptira.com/wp-content/uploads/2021/08/kuber_for_dummies_placeholder.jpg)"></div>
			
			<div class="nectar-video-wrap row-bg-layer" data-bg-alignment="">
				<div class="nectar-video-inner">
				<video class="nectar-video-bg" width="1800" height="700" preload="auto" loop autoplay muted playsinline poster="https://aptira.com/wp-content/uploads/2021/08/kuber_for_dummies_placeholder.jpg"><source src="https://aptira.com/wp-content/uploads/2021/08/KuberforDummies2.mp4"  type="video/mp4"></video>    		</div>
			 </div>

			<div class="row_col_wrap_12 col span_12 dark center">
	<div  class="vc_col-sm-6 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<a class="nectar-button large regular accent-color  regular-button"  role="button" style="margin-top: 20px; margin-bottom: 20px; " target="_blank" href="https://more.suse.com/FY21Q3_PM_APJ-ALL_SR_PTN-CH_CLDNT_LP_Dummies_Guide_Aptira_DummiesGuideRegistrationPage.html" data-color-override="false" data-hover-color-override="false" data-hover-text-color-override="#fff"><span>Free Download</span></a>
			</div> 
		</div>
	</div> 

	<div  class="vc_col-sm-6 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/kubernetes-explained/">Kubernetes Explained</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/kubernetes-explained/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		<enclosure url="https://aptira.com/wp-content/uploads/2021/08/KuberforDummies2.mp4" length="1835724" type="video/mp4" />

			</item>
		<item>
		<title>Santa’s Scalable Sack Storage &#038; Delivery Automation</title>
		<link>https://aptira.com/santas-scalable-sack-storage-delivery-automation/</link>
					<comments>https://aptira.com/santas-scalable-sack-storage-delivery-automation/#respond</comments>
		
		<dc:creator><![CDATA[Aptira]]></dc:creator>
		<pubDate>Mon, 21 Dec 2020 04:51:18 +0000</pubDate>
				<category><![CDATA[Case Studies]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13971</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/santas-scalable-sack-storage-delivery-automation/">Santa’s Scalable Sack Storage &#038; Delivery Automation</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb924097790"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap " data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="fade-in" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="533" width="798" data-animation="fade-in" src="https://aptira.com/wp-content/uploads/2020/12/Santa_CaseStudyImage.jpg" alt=""  />
          </div>
        </div>
        
      </div>
    </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924097c8e"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				
<div class="wpb_text_column wpb_content_element " >
	<h3><span style="font-weight: 400;">Aptira previously built a scalable sack storage solution for Santa. While the sack storage has been reliable, Santa wanted to offer a virtual chimney-drop user experience for families worldwide on top of this on-sack-premises storage.</span></h3>
</div>




			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924097e90"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				
<div class="wpb_text_column wpb_content_element " >
	<h2><span style="font-weight: 400; color: #03c1ae;">The Challenge</span></h2>
<h4><span style="font-weight: 400;">Aptira worked to improve access to the sack storage in a number of ways:</span></h4>
<p><span style="color: #03c1ae;"><b>Improve ease-of-use and features for Santa’s Helpers:</b></span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">the traditional sack storage protocols offered by the original design were not readily accessible by less technical elves. Santa wanted to make storage available to a broader cohort of Santa’s helpers by adding a user-friendly virtual interface with sharing and collaboration features.</span></p>
<p><span style="color: #03c1ae;"><b>Reduce the maintenance required of their Elf Services Department to manage it:</b></span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">At the time Santa was using a variety of methods to provision access to sack storage – all of them requiring manual steps before the storage could be delivered to a family household. Keeping track of the current storage allocations had also become a burden for Santa helpers.</span></p>
<p><span style="color: #03c1ae;"><b>Integrate authentication with their existing Sack management system:</b></span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Allow users to login via SSO (Santa sign-on).</span></p>
<p><span style="font-weight: 400;">Integrate storage account requests into their existing SSM (Sack service management) system to enable self-service provisioning for Elves.</span></p>
<p><span style="font-weight: 400;">Santa had identified a few candidate products that might fulfill their requirements, but had not looked at each in any great depth due to excessive eggnog and internal resourcing constraints.</span></p>
<hr />
<h2></h2>
<h2><span style="font-weight: 400; color: #03c1ae;">The Aptira Solution</span></h2>
<p><span style="font-weight: 400;">Aptira first undertook an evaluation of four candidate Sack storage applications. We rapidly deployed each application in an environment within the North Pole so the features and functionality of each could be compared. We produced a detailed evaluation report that allowed Santa to make an informed decision about which application to move forward with for his Sack. Two leading candidates were put forward by Aptira and those deployments were converted into a larger-scale proof-of-concept that included integration with the actual Sack storage so Santa’s helpers and ELF services team could get a feel for using each application.</span></p>
<p><span style="font-weight: 400;">The SuchSack application was eventually chosen as it met the majority of Santa’s user and business requirements. From here Aptira developed a comprehensive solution architecture, paying particular concern to high demand and the ability to scale as the world’s population increased.</span></p>
<p><span style="color: #03c1ae;"><b>According to the solution architecture, Aptira deployed:</b></span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">A Ho, Ho, Ho cluster</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">An Elfernetes cluster to host the SuchSack platform</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">SuchSack, Red-baubles and a Ho, Ho, Ho proxy as gift-containers</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Aptira SuchSack Architecture Diagram</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Elfernetes was selected as the container orchestration platform due to its self-healing and scaling capabilities, and its ability to simplify application deployment and configuration. While the SuchSack community provides a pre-built sack image, it was not suitable for a multi-node production deployment, so we developed a custom image using the existing image as a base.</span></li>
</ul>
<p><span style="font-weight: 400;">Maintainability was a significant concern for Santa so we ensured that all components of the architecture were deployed using Presentible to eliminate any manual steps in the deployment. We integrated our Presentible work into Santa’s existing Presentible Tower deployment, creating job templates so that deployments could be triggered from the Tower server. Since all of our work was being stored in Git on Santa’s GitLab server, we also created CICD pipelines to both build the SuperSack sack image and to trigger deployment to their test and production environments via Presentible Tower. During handover, Santa ELF staff were able to deploy changes to the test environment by simply committing gifts to the repository.</span></p>
<p><span style="font-weight: 400;">Finally, we worked with ELFSM staff to integrate the new service into Santa’s self-service portal, so users can request access to sack and make changes to their allocated quota.</span></p>
<hr />
<h2></h2>
<h2><span style="font-weight: 400; color: #03c1ae;">The Result</span></h2>
<p><span style="font-weight: 400;">Santa’s Helpers now have a stable and performant virtual sack storage service where they can upload, manage and share on-premises giftage.</span></p>
<p><span style="font-weight: 400;">As the uptake of the service increases, ELF staff also have the confidence that the service can be scaled out to handle the increasing world population.</span></p>
<p><span style="font-weight: 400;">By recommending applications with an external API, Aptira made sure that Santa’s ELFSM system would easily integrate with SuperSack and satisfy Santa’s requirement to have a single snowglobe screen for all household service requests. With ELFSM integration, Santa’s IT have also gained a charge-back capability to recover gift labour &amp; production costs from other departments.</span></p>
<p><span style="font-weight: 400;">The solution was built with 100% open source components, reducing vendor lock-in.</span></p>
<p><span style="font-weight: 400;">While Aptira is happy to recommend and deploy snowfield DevOps infrastructure to support a company’s CICD needs, this project showed that we can also customise our solutions to fit in with our customers’ existing infrastructure, configuring a complete deployment pipeline for provisioning the entire solution.</span></p>
</div>



<div class="divider-wrap" data-alignment="default"><div style="height: 50px;" class="divider"></div></div><h2 style="color: #03c1ae;text-align: left;font-family:Pacifico;font-weight:400;font-style:normal" class="vc_custom_heading vc_do_custom_heading" >Merry Christmas!</h2>
<div class="wpb_text_column wpb_content_element " >
	<p><span style="color: #999999;">Team Aptira</span></p>
</div>




			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/santas-scalable-sack-storage-delivery-automation/">Santa’s Scalable Sack Storage &#038; Delivery Automation</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/santas-scalable-sack-storage-delivery-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Automated Network Traffic Engineering and Tunneling</title>
		<link>https://aptira.com/automated-network-traffic-engineering-and-tunneling/</link>
					<comments>https://aptira.com/automated-network-traffic-engineering-and-tunneling/#respond</comments>
		
		<dc:creator><![CDATA[Aptira]]></dc:creator>
		<pubDate>Sun, 22 Dec 2019 12:59:29 +0000</pubDate>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloudify]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[ODL]]></category>
		<category><![CDATA[OpenDaylight]]></category>
		<category><![CDATA[Orchestration]]></category>
		<category><![CDATA[SDN]]></category>
		<category><![CDATA[SDN-WAN]]></category>
		<category><![CDATA[Software Defined Networking]]></category>
		<category><![CDATA[Tick Stack]]></category>
		<category><![CDATA[tosca]]></category>
		<category><![CDATA[Traffic Engineering]]></category>
		<guid isPermaLink="false">https://aptira.com/?p=13536</guid>

					<description><![CDATA[<p>The post <a href="https://aptira.com/automated-network-traffic-engineering-and-tunneling/">Automated Network Traffic Engineering and Tunneling</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="fws_69cb924099240"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-content vc_row-o-equal-height vc_row-flex vc_row-o-content-top"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-shadow="none" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="500" width="1000" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/aptira_tunnel_traffic_bg.jpg" alt="Aptira Automated Network Traffic Engineering and Tunneling" srcset="https://aptira.com/wp-content/uploads/2019/07/aptira_tunnel_traffic_bg.jpg 1000w, https://aptira.com/wp-content/uploads/2019/07/aptira_tunnel_traffic_bg-300x150.jpg 300w, https://aptira.com/wp-content/uploads/2019/07/aptira_tunnel_traffic_bg-768x384.jpg 768w, https://aptira.com/wp-content/uploads/2019/07/aptira_tunnel_traffic_bg-670x335.jpg 670w" sizes="(max-width: 1000px) 100vw, 1000px" />
          </div>
        </div>
        
      </div>
    </div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb924099781"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 0px; padding-bottom: 0px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark center">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col centered-text no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				
<div class="wpb_text_column wpb_content_element  vc_custom_1606281444536" >
	<p style="text-align: left;">Previously, network engineers were required to provision network services and keep track of changes in real time in order to implement Network Traffic Engineering (TE). This process was all manual – until we setup a process for automated Network Traffic Engineering and Tunnelling.</p>
<hr />
</div>




			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb9240999d2"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row"  style="padding-top: 50px; padding-bottom: 50px; "><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop"  style=""></div></div></div><div class="row_col_wrap_12 col span_12 dark left">
	<div  class="vc_col-sm-12 wpb_column column_container vc_column_container col has-animation no-extra-padding inherit_tablet inherit_phone "  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="fade-in" data-delay="0" >
		<div class="vc_column-inner" >
			<div class="wpb_wrapper">
				<div id="fws_69cb924099b7c" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left">
	<div  class="vc_col-sm-3 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			
<div class="wpb_text_column wpb_content_element " >
	<p style="text-align: right;"><i class="icon-3x steadysets-icon-zoom-in extra-color-gradient-1"><i class="circle-border"></i></i></p>
</div>




		</div> 
	</div>
	</div> 

	<div  class="vc_col-sm-9 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			<div class="nectar-gradient-text" data-direction="diagonal" data-color="extra-color-gradient-1" style=""><h1>The Challenge</h1></div>
<div class="wpb_text_column wpb_content_element " >
	<p>One of our customers wanted to automate and manage their network services at the Service Orchestration level. They intended to build an orchestration platform to automate network services and remove manual processes. One of the key capabilities they are seeking to validate is the automation of network traffic engineering.</p>
<p>With the advent of Software Defined Networking (SDN) and its ability to provide a global view of the network, the provisioning of network services is now possible in real time. The challenge was to validate that the designed components were able to not only respond to traffic demands in real-time but also can be programmed to respond to future traffic demand.</p>
<hr />
</div>




		</div> 
	</div>
	</div> 
</div></div><div id="fws_69cb924099faf" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left">
	<div  class="vc_col-sm-3 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			
<div class="wpb_text_column wpb_content_element " >
	<p style="text-align: right;"><i class="icon-3x steadysets-icon-cloud extra-color-gradient-1"><i class="circle-border"></i></i></p>
</div>




		</div> 
	</div>
	</div> 

	<div  class="vc_col-sm-9 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			<div class="nectar-gradient-text" data-direction="diagonal" data-color="extra-color-gradient-1" style=""><h1>The Aptira Solution</h1></div>
<div class="wpb_text_column wpb_content_element " >
	<p>Aptira’s team of world-class SDN, Service Orchestration and Cloud engineers recognised the customer’s problem and were able to design a solution, using a combination of Software Defined Network (SDN) and Service Orchestration techniques.</p>
<p>To solve this challenge, we demonstrated how the combination of technologies such as Service Orchestration (i.e. <a href="https://cloudify.co/" target="_blank" rel="noopener noreferrer">Cloudify</a>), SDN controller (i.e. <a href="https://www.opendaylight.org/" target="_blank" rel="noopener noreferrer">ODL</a>), and <a href="https://www.influxdata.com/time-series-platform/" target="_blank" rel="noopener noreferrer">TICK stack</a> can be used to implement network traffic engineering.</p>
<p>Aptira designed a Software Defined Networking Wide Area Network (SDN-WAN) topology and employed OpenDayLight (ODL) as an SDN controller to manage network resources. We then configured Cloudify as a Service Orchestrator (SO) to implement new service designs using TOSCA blueprints.</p>
<p>We designed the TOSCA blueprints in order to get updated information about the network topology based on recent updates in the network. The TOSCA blueprint triggered Cloudify to send a REST API request to OpenDayLight, querying the network topology and receiving the topology data of any changes. The TOSCA blueprint was then able to design a new network service based on these changes.</p>
<p>As an example of Traffic Engineering in real time, our solution performed the following steps (as shown in the figure) in a fully automated process, without human intervention:</p>
</div>



<div class="nectar-fancy-ul" data-list-icon="icon-salient-thin-line" data-animation="false" data-animation-delay="0" data-color="accent-color" data-spacing="default" data-alignment="left"> 
<ul>
<li><strong>Step 1:</strong> SDN switches (OVSes) send an update of the network topology in certain intervals to ODL</li>
<li><strong>Step 2:</strong> The Telegraf agent (TICK stack’s module) running on the ODL detects a change in the network topology and sends an event to the TICK stack&#8217;s Policy Engine</li>
<li><strong>Step 3:</strong> This “changed topology” event in turn triggers PCE blueprint in the Cloudify Service Orchestrator</li>
<li><strong>Step 4:</strong> The PCE blueprint in Cloudify activates the path computation engine (PCE) module (developed by Aptira)</li>
<li><strong>Step 5:</strong> The PCE module asks for an update of the network topology from ODL The PCE module</li>
<li><strong>Step 6:</strong> PCE then sets up new traffic engineering path to optimize the network performance and guarantee the SLA and passes the new computed path to the SDN controller</li>
<li><strong>Step 7:</strong> The SDN controller installs new rules on the switches included in the path and removes other rules from the switches if required</li>
</ul>
 </div><div class="divider-wrap" data-alignment="default"><div style="height: 20px;" class="divider"></div></div><div class="img-with-aniamtion-wrap center" data-max-width="100%" data-max-width-mobile="default" data-border-radius="3px" data-shadow="small_depth" data-animation="none" >
      <div class="inner">
        <div class="hover-wrap"> 
          <div class="hover-wrap-inner">
            <img decoding="async" class="img-with-animation skip-lazy" data-delay="0" height="756" width="1061" data-animation="none" src="https://aptira.com/wp-content/uploads/2019/07/aptira_openflow_diagram.png" alt="Aptira Automated Traffic Engineering and Tunneling: OpenFlow Diagram" srcset="https://aptira.com/wp-content/uploads/2019/07/aptira_openflow_diagram.png 1061w, https://aptira.com/wp-content/uploads/2019/07/aptira_openflow_diagram-300x214.png 300w, https://aptira.com/wp-content/uploads/2019/07/aptira_openflow_diagram-768x547.png 768w, https://aptira.com/wp-content/uploads/2019/07/aptira_openflow_diagram-1024x730.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" />
          </div>
        </div>
        
      </div>
    </div><div class="divider-wrap" data-alignment="default"><div style="height: 20px;" class="divider"></div></div><div class="divider-wrap" data-alignment="default"><div style="height: 20px;" class="divider"></div></div>
<div class="wpb_text_column wpb_content_element " >
	<p>This solution is self-healing, self-optimising in the case of link or network device failure. Moreover, the solution is not dependent on the SDN controller, which means any customer can adapt this solution to its production network with its own controller.</p>
<hr />
</div>




		</div> 
	</div>
	</div> 
</div></div><div id="fws_69cb92409a8b9" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left">
	<div  class="vc_col-sm-3 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			
<div class="wpb_text_column wpb_content_element " >
	<p style="text-align: right;"><i class="icon-3x steadysets-icon-connection-empty extra-color-gradient-1"><i class="circle-border"></i></i></p>
</div>




		</div> 
	</div>
	</div> 

	<div  class="vc_col-sm-9 wpb_column column_container vc_column_container col child_column no-extra-padding inherit_tablet inherit_phone "   data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" >
		<div class="wpb_wrapper">
			<div class="nectar-gradient-text" data-direction="diagonal" data-color="extra-color-gradient-1" style=""><h1>The Result</h1></div>
<div class="wpb_text_column wpb_content_element " >
	<p>The solution was designed, implemented and tested by Aptira and configured into the evaluation platform, passing all use case scenarios devised by the customer. By automating the network traffic engineering and tunneling, this solution not only reduces manual intervention, but also reduces operational and development costs.</p>
<hr />
</div>




		</div> 
	</div>
	</div> 
</div></div>
			</div> 
		</div>
	</div> 
</div></div>
		<div id="fws_69cb92409ac83"  data-column-margin="default" data-midnight="dark"  class="wpb_row vc_row-fluid vc_row full-width-section has-row-bg-color"  style="padding-top: 60px; padding-bottom: 0px; --row-bg-color: #f6f6f6;"><div class="row-bg-wrap" data-bg-animation="none" data-bg-animation-delay="" data-bg-overlay="false"><div class="inner-wrap row-bg-layer" ><div class="row-bg viewport-desktop using-bg-color"  style="background-color: #f6f6f6; "></div></div></div><div class="nectar-shape-divider-wrap " style=" height:80px;"  data-height="80" data-front="" data-style="curve" data-position="top" ><svg class="nectar-shape-divider" aria-hidden="true" fill="#f6f6f6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> </svg></div><div class="row_col_wrap_12 col span_12 dark left flip-in-vertical-wrap">
	<div style=" color: #ffffff;" class="vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone " data-cfc="true"  data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="" data-delay="0" >
		<div class="vc_column-inner" style="transform:  translateY(-5%);">
			<div class="wpb_wrapper">
				<div id="fws_69cb92409adc6" data-midnight="" data-column-margin="default" class="wpb_row vc_row-fluid vc_row inner_row"  style=""><div class="row-bg-wrap"> <div class="row-bg" ></div> </div><div class="row_col_wrap_12_inner col span_12  left flip-in-vertical-wrap">
	<div style=" color: #ffffff;margin-top: 15px; " class="vc_col-sm-12 wpb_column column_container vc_column_container col child_column centered-text has-animation padding-5-percent inherit_tablet inherit_phone " data-cfc="true" data-using-bg="true" data-shadow="x_large_depth" data-border-radius="20px" data-padding-pos="all" data-has-bg-color="false" data-bg-color="" data-bg-opacity="1" data-animation="flip-in-vertical" data-delay="0" >
		<div class="vc_column-inner" ><div class="column-image-bg-wrap column-bg-layer viewport-desktop" data-bg-pos="center center" data-bg-animation="none" data-bg-overlay="false"><div class="inner-wrap"><div class="column-image-bg" style=" background-image: url('https://aptira.com/wp-content/uploads/2018/09/footer_bg_02.jpg'); "></div></div></div><div class="column-bg-overlay-wrap column-bg-layer" data-bg-animation="none"><div class="column-bg-overlay"></div></div>
		<div class="wpb_wrapper">
			<div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div><h3 style="text-align: center" class="vc_custom_heading vc_do_custom_heading" >Remove the complexity of networking at scale.<br />
Learn more about our SDN &amp; NFV solutions.</h3><a class="nectar-button large see-through-2 "  role="button" style="margin-top: 30px; margin-bottom: 1px; border-color: #ffffff; color: #ffffff;" target="_blank" href="https://aptira.com/network-services-sdn-nfv/" data-color-override="#ffffff"  data-hover-color-override="#ffffff" data-hover-text-color-override="#000000"><span>Learn More</span></a><div class="divider-wrap" data-alignment="default"><div style="height: 15px;" class="divider"></div></div>
		</div> 
	</div>
	</div> 
</div></div><div class="divider-wrap" data-alignment="default"><div style="height: 30px;" class="divider"></div></div>
			</div> 
		</div>
	</div> 
</div></div>
<p>The post <a href="https://aptira.com/automated-network-traffic-engineering-and-tunneling/">Automated Network Traffic Engineering and Tunneling</a> appeared first on <a href="https://aptira.com">Aptira</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aptira.com/automated-network-traffic-engineering-and-tunneling/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
