<?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>SDN Archives - lighty.io</title>
	<atom:link href="https://lighty.io/category/sdn/feed/" rel="self" type="application/rss+xml" />
	<link>https://lighty.io/category/sdn/</link>
	<description>SDN Made Easy</description>
	<lastBuildDate>Thu, 16 Feb 2023 11:04:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://lighty.io/wp-content/uploads/2018/01/cropped-cropped-Asset-1-32x32.png</url>
	<title>SDN Archives - lighty.io</title>
	<link>https://lighty.io/category/sdn/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>About lighty.io</title>
		<link>https://lighty.io/lighty-io-sdn-made-easy/</link>
		
		<dc:creator><![CDATA[lighty.io]]></dc:creator>
		<pubDate>Tue, 27 Mar 2018 07:26:09 +0000</pubDate>
				<category><![CDATA[lighty.io]]></category>
		<category><![CDATA[SDN]]></category>
		<guid isPermaLink="false">https://lighty.io/?p=525</guid>

					<description><![CDATA[<p>Having worked as an OpenDaylight developer for some time, I participated in many customer projects based on OpenDayght’s Boron, Carbon, Nitrogen, and Oxygen releases. OpenDaylight, as a software-defined networking platform has an interesting concept of “model-driven architecture”, where features of the SDN controller are using MD-SAL to interact with each<a class="moretag" href="https://lighty.io/lighty-io-sdn-made-easy/"> Read more</a></p>
<p>The post <a href="https://lighty.io/lighty-io-sdn-made-easy/">About lighty.io</a> appeared first on <a href="https://lighty.io">lighty.io</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;">Having worked as an OpenDaylight developer for some time, I participated in many customer projects based on OpenDayght’s Boron, Carbon, Nitrogen, and Oxygen releases. <strong>OpenDaylight</strong>, as a software-defined networking platform has an interesting concept of “<strong>model-driven architecture</strong>”, where features of the SDN controller are using MD-SAL to interact with each other.</p>
<p style="text-align: left;">It is on top of this layer, that the OpenDaylight project family builds other very interesting projects, that are practical for SDN application development. To name few: <strong>NETCONF</strong> and <strong>RESTCONF</strong> plugins, <strong>YANG Tools</strong> and <strong>Java YANG</strong> binding generation, <strong>BGP</strong> and <strong>PCEP</strong> plugins (for core networks), <strong>TransportPCE</strong> (optical switch management), <strong>OpenFlow</strong>, <strong>Neutron</strong> (ODL as OpenStack network controller), <strong>GBP</strong> for intent-based networking, and many others.</p>
<h3 style="text-align: center;"><strong>Real life challenges</strong></h3>
<p style="text-align: left;">Real project life usually brings additional challenges for everyday SDN application developer. The fast-changing market environment <strong>requires rapid application development</strong> with retained features such as high reliability, scalability, and security.</p>
<p style="text-align: left;">Micro-service SDN deployments require very fast startup and shutdown times and small memory footprint. Project operating cost has to be kept low, meaning that continuous integration and the testing process must be easy and very fast.</p>
<p style="text-align: left;">The<strong> learning curve</strong> for new team members cannot be steep. Latest Java 9 release with its highly anticipated platform module system also adds pressure to upgrade JVM and application libraries.</p>
<h3 style="text-align: center;">The Karaf Issue</h3>
<p style="text-align: left;">Using OpenDaylight community release for everyday SDN application development does not exactly fit the bill. Even if OpenDaylight itself is an interesting product, Apache Karaf framework and <strong>complexity</strong> of <strong>OpenDaylight’s Karaf features</strong> is quite problematic, introducing <strong>higher costs</strong> for <strong>testing</strong>, <strong>integration</strong>, and <strong>maintenance</strong>.</p>
<p style="text-align: left;">The latest <em>OpenDaylight Nitrogen</em> release<strong> is not addressing complexity issues</strong> quite well. Therefore, my team and I have been working hard to substantially improve SDN development experience, lower the development costs and help application teams to focus on SDN core business.</p>
<h3 style="text-align: center;"><strong>Our Experience</strong></h3>
<p style="text-align: left;">Our experiences with other Java frameworks like spring.io, vertx.io, and projects like jetty, jersey, grpc.io or akka.io were telling us that there has to be a better way to develop on this platform. That is how <a href="http://lighty.io" target="_blank" rel="noopener noreferrer">lighty.io</a> was born. The <strong>“from developers, for developers”</strong> part of lighty.io, provides a set of Java SE components without the use of Karaf framework, with the following advantages:</p>
<p style="text-align: left;">• Client libraries for communication with ODL backend for Java, Python, and Golang<br />
• Enhanced NETCONF device simulator<br />
• Easy-to-use utilities for YANG model data serialization and deserialization<br />
• Example applications for integration with vertx.io, spring.io &amp; more</p>
<p style="text-align: left;">By creating a lighter environment, without building specifically on any framework, lighty.io offers OpenDaylight components adapted for plain Java runtime. This is what it takes to start MD-SAL controller with RESTCONF northbound plugin:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">   public class Main {
    public static void main(String[] args) throws Exception {
        //1. initialize lighty.io core services, which involves
        //   OpenDaylight controller (MD-SAL, Controller, YangTools, Akka)
        ControllerConfiguration controllerConfiguration =
                ControllerConfigUtils.getDefaultSingleNodeConfiguration(models);
        LightyController lightyController = new LightyControllerBuilder()
                .from(controllerConfiguration)
                .build();
        lightyController.start().get();
        //2. start RestConf server
        RestConfConfiguration restConfConfiguration = RestConfConfigUtils.getDefaultRestConfConfiguration();
        CommunityRestConf communityRestConf = new CommunityRestConfBuilder()
                .from(RestConfConfigUtils.getRestConfConfiguration(
                        restConfConfiguration, lightyController.getServices()))
                .build();
        communityRestConf.start().get();
        //3. start NetConf South-bound plugin
        NetconfConfiguration netconfSBPConfig = NetconfConfigUtils.createDefaultNetconfConfiguration();
        netconfSBPConfig = NetconfConfigUtils.injectServicesToTopologyConfig(
                netconfSBPConfig, lightyController.getServices());
        LightyModule netconfSouthboundPlugin = new NetconfTopologyPluginBuilder()
                .from(netconfSBPConfig, lightyController.getServices())
                .build();
        netconfSouthboundPlugin.start().get();
    }
}</pre>
<p style="text-align: left;">Starting SDN controller application is just a few lines of Java code. <strong>Writing complex integration tests in Java is also easy</strong> because all tested components are running in a single JVM. This means they can be easily orchestrated and tested.</p>
<p style="text-align: left;">Simple application test below starts full controller application and performs an HTTP GET request via RESTCONF on topology data.</p>
<pre data-enlighter-language="python">public class ApplicationTest {
    private HttpClient httpClient;
    @BeforeTest
    public void init() throws Exception {
        Main.start();
        httpClient = new HttpClient();
        httpClient.start();
    }
    /**
     * Simple integration test which starts application and checks if RESTCONF north-bound interface is responding.
     * As this test starts full instance of ODL controller and RESTCONF http server on port 8888, this port must
     * be free prior to the test. This test and tested application runs in single JVM instance.
     * !!! Make sure port 8888 is open on localhost !!!
     */
    @Test
    public void sanityTest() throws Exception {
        ContentResponse get = httpClient.GET("http://localhost:8888/restconf/data/network-topology:network-topology");
        Assert.assertEquals(get.getStatus(), 200);
        LOG.info("sanityTest done.");
    }
    @AfterTest
    public void destroy() throws Exception {
        Main.shutdown();
        httpClient.stop();
    }
}
</pre>
<p style="text-align: left;">Beyond that, <strong>we developed several components</strong> that are really missing in the OpenDaylight ecosystem to speed-up our testing and development:</p>
<p style="text-align: left;">• Client libraries for communication with ODL backend for Java, Python &amp; Golang<br />
• Enhanced NETCONF device simulator<br />
• Easy-to-use utilities for YANG model data serialization and deserialization<br />
• Example applications for integration with vertx.io, spring</p>
<p style="text-align: left;">By developing lighty.io, <strong>our team contributes to upstream OpenDaylight projects</strong> as well as <strong>creates new components</strong> like the RESTCONF module, fully compliant with RFC8040. The nice thing about lighty.io is, that your application code becomes more versatile.</p>
<p style="text-align: left;">If written properly, <strong>the same code can be deployed in an OpenDaylight Karaf runtime</strong>, started as a Java SE lighty.io application or deployed into the framework of lighty.io and how can you leverage lighty.io, even if you are not a developer.</p>
<p style="text-align: left;">Juraj Veverka</p>
<p>The post <a href="https://lighty.io/lighty-io-sdn-made-easy/">About lighty.io</a> appeared first on <a href="https://lighty.io">lighty.io</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
