 Folks are working through a couple technical difficulties seeing if switching laptops gets the presentation to work again So yeah, I'm Charles echo. I work at Cisco and the DevNet team and cool. It looks like we have slides. Thank you And so I do a lot with with open source and with standards in the DevNet team the idea is helping developers Use platforms and technology that Cisco provides So in my case, it's where we're contributing a lot to open source where we're contributing to standards and where those Play a large role in the products and solutions we offer Open Daylight is a good example open source project that Has support for networking Standards around data modeling around network management protocols and because of those it serves very well as a as a platform for network programmability And that's what I'm here to talk to you about today So just an agenda very brief high-level because you probably all know this what is SDN But it's kind of deframed the rest of the the talk and then what is open daylight again? Just a very brief summary and then talk a bit about network programmability and how it is that open daylight Is very well suited for network programmability Then the idea was to do a demo which I was worried, you know might not go off really well but now it definitely won't go off well, so I'm just going to show you some slides instead and Walk you through what I would have done in the demo but the slides will be available afterwards and if you're interested in There's step-by-step kind of if you wanted to do the same thing yourself because all this is open source It's all freely available and you could do the same setup yourself and the use case I'm going to show is it working with VPP and then we'll wrap up with some conclusions Okay, so what is SDN? Software-defined networking, I guess We're all aware of that when it first came out that the key principle people thought thought of one of them at least was this separation of the control plane and the data plane Which seem either like a good thing Open-flow was a protocol that got defined around that time As a protocol for software-defined networking logical separation of the control plane, but then also Well, because the control plane is separated instead of having it just spread out over a bunch of different pieces of network equipment Routers and switches you could centralize all that right as soon as you break it apart that the data plane may still be Distributed, but you could centralize the control. That was another big thing that came around And so those are all important aspects of software-defined networking But I think what's really come about out of software-defined networking that's perhaps more important is programmability when you make not just the configuration, but the Operational data that's in the network when you make that available to applications through programmable interfaces You really enable a whole lot of functionality and that's what I think is where the real power of software-defined networking lies so with that in mind if You know, what is it that we then need from an SDN controller? Of course, it needs to have networking capabilities and allow us to control our network But we really also need it to provide developer-friendly APIs that we can use to access all that information right to interact with the network program programmatically But at the same time we don't want to have to deal with all the complexity of the underlying network So we want some abstractions there and we also don't want to care about Exactly what networking protocol we're going to use because it's not like open flows going to be running everywhere There's going to be a variety of networking protocols And we don't want our application to have to behave a lot differently depending on on which of those are being used So with that in mind then let's take a look at open daylight and see what it provides in terms of being that kind of platform So kind of hard to see with the lighting here but what's in the middle here are all the kind of Core and enhanced networking functions that you would typically expect to find in an SDN controller There's also but then so so that's kind of table stakes and open daylight certainly has all that but then what I think is perhaps really key is above that are the developer-friendly APIs and I don't know if there's any way to dim the lights a little bit because it's It was it was good before but I think this is people you have a hard time seeing don't you Off-net com for we'll talk about those later that provides that access that you need for applications to access the not just the configuration but also all the real-time data that the network knows about Then the model driven abstraction layer the MD sal that kind of Provides that level of abstraction that you need it also provides a messaging fabric so that the applications can communicate with everything Underneath and not have to worry about talking to them individually. They can just interoperate through the MD sal and then very importantly Open daylight has all these different plug-ins which let you talk to all kinds of different network Equipment not just open-flow devices, but open v-switch VPP physical Network equipment from various vendors anything that you could possibly have in your network You can have various plug-ins that allow open daylight to communicate with it very very well So the software architecture of open daylight. It's written in Java It makes use of the Maven build system and I think a really key thing is that it's based on the OS GI Framework and we'll look at using carafe a little bit. That's how you can dynamically load new capabilities into Open daylight at runtime. So initially when it comes up It's just running like the Bayer infrastructure that it needs to get itself running and then you add the features in And you don't have to like take it down to do that. So as your network grows and changes you could be adding new capabilities so with that I'm going to switch gears then to network programmability and First of all, you know, why do we even care about network programmability? Way back in I guess the 90s. There was this simple network management protocol that was defined It's simple. It manages our network. It should be fantastic, right? The problem was it wasn't in fact it wasn't very useful at all for configuring network devices It maybe helped you get a little bit of visibility into State information and to handle faults, but almost no one was really using it for configuration so what everyone had to resort to was using the CLI and the CLI would be like a product specific API that are provided and You could get into the command line and you could type, you know, the things you need to know and you'd learn it over time You'd love the CLI, but if you think about programmatically using a CLI, it's very brittle There's not that kind of nice programming interface behind it. You have to do a lot of Manipulation of strings and whatnot. It's it's going to be painful to automate anything when you have only the CLI so that wasn't good enough and operators said hey this The standards that you've provided us for management are just insufficient We really need something better and that was this RFC in the IETF that came out. It was kind of realizing that and saying yeah, you're right. We do need something better and What came out of those discussions then was Well, let's take the best practices of what we're doing. We're using SNMP in some ways And we've learned what we can and can't do with it We're using the CLI and we've come up with a lot of cool kind of tools and best practices around the CLI We know what we need to do operationally. Let's take all of that and let's think about what type of Standards we really need in the networking space to tackle that and what came out of it was yang data models and netconf and resconf network management protocols Now we're going to take a look at those so yang it's a data modeling language for networking and When I was mentioning before the CLI and it being something you could learn over time and interact with as a person It's it's not good for machines. It doesn't have the Programmatic type of interfaces that you want What yang does is it gives you constraints? So you can define your your data model for the configuration and data of your network device Very precisely It provides a lot of the constructs that you would think of when you think of programming like data structures and reusable types and All these things that make Programming in like an object oriented say language very easy and intuitive you can build on tops of things That's really what yang is providing for network data and configuration This is just a an example of a very The ITF interfaces yang model just to give you an idea of what it looks like. It's kind of organizing the information Into a well-defined way in this case There's a container that has all your interfaces and then there's a list in there Where there's an element for each interface and then there's leaf nodes that have all the the data that's Associated with a specific interface So that's what it looks like in text. Fortunately, there's some other tools that let you work with yang models P yang is a great command line tool You can validate a yang model and you can see it kind of one option is to have it spit out a tree structure Like what I'm showing there on the right-hand side again all open source Yang Explorer lets you look at a yang model. It's like a GUI based tool and gives you more of a HTML like interaction experience with it and Then open daylight has some great tools built into it as part of its yang tools Feature and what that does is let's open daylight interact with with yang models And add support for for interacting with them through netconf and resconf And what open daylight does is actually generates code For all the apis that are defined by the the yang model. We're going to take a look at that now The idea would be if I had one or more yang models that are supported If I say a network element or that I need for some network Function that I'm defining I can run those through the yang tools of open daylight and it generates In real time all the the code that I need to interact with those apis Then through maven you can load those in dynamically as a bundle and add them into open daylight So now it has the code that you need to support the apis that are defined by these yang models At the same time as an application developer, you can write your code that says Well when someone calls this api, what do I want to have happen? And so you can write the the kind of real business logic or feature logic behind it and load that in dynamically as well So in this way open daylight can grow and learn and add support for new apis over time All based on yang models I mentioned netconf and resconf The way this works is yang is just the data modeling language. It defines what is the data that you're going to send Over the wire, but you actually need something to talk to the device You need a protocol for that and netconf is one protocol It runs over ssh primarily the the data your yang based data is formatted in xml It provides a lot of nice capabilities for configuration data things like transactions and the ability to roll back the ability to validate Changes that you're making before you deploy them The ability to have different data stores like an operational data store and a configuration data store It gives you a lot of nice programming capabilities that you need But it's also pretty heavyweight And so resconf is another network management protocol that lets you work with yang models and That's more of like a web application level type of protocol it takes every all this capability that you have with netconf and maps it onto REST based api using REST space for like You know get put post and in addition to supporting xml it Supports formatting your yang based data as json. So if you're used to kind of writing web applications, you're Using python to interact with REST based apis. This is going to be a much more intuitive Much more developer friendly way of interacting with yang models It is by using REST based apis and json for the data The cool thing is it doesn't matter whether you use netconf or resconf or you use both The the actual data is based on yang anyways and The data models on the device can be accessed Either through netconf or through resconf or both at the same time It's the exact same get a model that you're operating with. It's just two different ways of interacting with that data So looking at how this works out with open daylight then Um So this is kind of oriented the same way as that picture I had before with the md cell and all your network functionality here in the core REST conf as a high-level api being Shown up to applications that sit above open daylight and then netconf being used to communicate with the network devices underneath it And in this example, I have it talking to two different VPP nodes and then an open wrt node And let's just assume that these all support netconf And that there's a set of yang models that that they support for Now when open daylight communicates with vpp number one It would Communicate with it vnetconf It would do a hello exchange establish an ssh connection to it And it would learn what yang models vpp supports It would add that vpp node into its inventory of nodes And then it would take those yang models add them to its cache and generate all the code in real time that it needs To interact with those yang models and support the apis behind them It would then talk to the next vpp node and for the sake of argument, let's say it supports the exact same yang models So then it would add that node into its inventory But there's actually no new yang models to add to its model cache No new code that it needs to generate. It's already done all that so it doesn't need to do it again Now it talks to open wrt and adds it into its topology Puts it into its node inventory And let's say the open wrt supports some of the same yang models, but there's some new ones as well So then we'd go ahead and add those to our cache generate the code And now open daylight is able to interact with and control all three of these network devices And that can all happen at real at runtime Okay, great. So now this is where I was going to shift to Demo mode, but instead I think we're just going to go through some slides So the idea here is what if you wanted to go ahead and install open daylight and get up and running with it And get it working with You know, what would you do? And you can just download A tar or zip file With the open with the open daylight code The one what i'm going to be using in this example is nitrogen sr1. That's the most recent stable version of open daylight So you can download that and then installing it's as simple as this you just unzip or untar it depending on which Version you pulled down You cd into the directory that that creates and then you just execute the carafe You know Slush bin slash carafe and that just kicks off open daylight and this will take Uh, it didn't really take zero seconds It probably takes like five seconds And it starts up open daylight and then this is the interactive Uh command line for inter for operating with open daylight Now an open daylight starts up it starts up with no features Enabled on it. So that's part of why it starts up really fast And then depending on your network The network elements you want to be able to talk to The functionality that you need you add in the features that that are important to you And you you do this by you can do feature list to see all the features that are available List i to see what's installed List sr to see what features are required You can install features this way One time or many and you can uninstall features and so what I'm going to show here is For the demo that I was going to do I want to be able to use the user graphical user interface of open daylight And that's called deluxe and I also wanted the ability to interact with the netcom functionality and the rest comp functionality So these are the sets of these are all the features that I enabled. It's a very small set of the total Set of features that open daylight supports, but it's enough for me to Um to basically do something like what I'm showing Here to create this type of network Okay, so I have those features installed And the way I want to use it is to connect to vpp Now vpp you'll hear more about it later on today Um Is a a very uh high performance open source software forwarder in and of itself. It doesn't have support for netconf So there is a component called honeycomb which you see in this picture And what that does is that adds a netconf interface and a rest comp interface to vpp So you can interact with it that way Um otherwise, there's just this low level api and a cli through which you can work with uh vpp So what I did was I installed vpp and honeycomb on a vm And uh Then I wanted to have it connect to open daylight as you see here using netconf So these were the steps to do it and um in the slides that I'll be posting There's details on how to do each of these steps in the demo. I was going to walk through each of these but um I'll just kind of show you how it would have would have worked The idea being that we want to be able to um connect Using netconf directly into vpp. We can do that. We can also use the cli to talk to vpp What we're going to do or what I did was I set it up to um To use dbdk by giving it an interface a physical interface on the vm and uh then Using postman. I went through the rest comp interface of open daylight and Using a put remember we saw before the rest comp verbs that we can use so just doing a put request um, I attach Vpp to open daylight and I think I have a screenshot of that that we can look at how many of you are familiar with postman It's a it's a real easy way to interact with um rest-based apis like restconf Okay, so because I enabled uh deluxe I have access to this uh graphical user interface on the bottom right. That's what it essentially looks like And as I mentioned, here's the uh the request I would make using uh postman to It's a put request to add vpp to the topology of open daylight Oh, and then if you want to grab it later on the postman collection I'm using is available here, so you'll have access to all this yourself as well And this is what it looks like in postman. Here's my collection of things to interact with vpp and with honeycomb And this is just the example of the put request And uh to add vpp Now once I add it what ends up happening is Um, I have a topology that before was empty Actually, it contained this it contained uh open daylight itself and the set of all the yang models I'm basically seeing all the yang models that are in the cache That's what if I could scroll through this because if it was a live demo I could scroll through you could see all the yang models and you would also see The information for the vpp node And then using the open daylight ui You can actually interact with these yang models as well What this is is this is called the yang ui Each of these is a yang model and in this case i'm going into the network topology yang model And going down its sort of tree structure that it defines to get to the operational data Of the network topology that it has And I could query here to say show me A node that is if you can still see this despite the lights I'm asking for the vpp one node. That's the node that I added into my topology And that would return what you see down here at the bottom if you're able to see it despite the lighting is The information for vpp. This is the ip address of my vm with the dbdk interface that I assigned to it Okay, so that's kind of my abbreviated slide based demo And uh now to wrap up So the key things I want to leave you with is uh, first of all sdn it's well it started out as open flow It's it's much more than that A great thing that sdn brings to us is network programmability kind of came out of sdn and that's a fantastic benefit of it and Open daylight as an open source platform that supports networking standards such as yang and netconf and resconf It's set up to be a great platform for writing network aware applications and Interacting programmatically with your network infrastructure, whether it be virtual or physical whether it be software based like vpp or Some you know real appliances routers and switches okay, and um I guess that's I don't need to go into this if I have a little bit of time left. I'll save it for questions two minutes So one question I think probably Uh, just out of interest how many people would like to ask a question? Three, uh, I'm I'm gonna go with this gentleman Short and see you again. I was started learning sdn three years ago Okay, I started with viewing cursor error course first from a university of texas, I think And I found that there is no real application which are working and which can be used in production What situation today? I mean can you give just Few examples where it works in production in high-lawed networks Let's say because what I found it was a lot of experiments, but not much real applications even HP who was buzzing a lot Had no working applications I'm gonna let him answer the question because I was hoping to get a second one So, I mean maybe just I mean I'm gonna answer a couple different ways um I don't know if you mean that there when you say application if you mean that people aren't actually deploying open daylight and using it to You know to control their network. I mean that that certainly is happening Um, I think I see it a little bit more in the service provider space than in say enterprise networks Um, but but it is being deployed by large enterprises It's being used in conjunction with open open stack for like in the opn fe project for uh network function virtualization um I mean that's one way of looking at so it certainly is getting deployed and like with a lot of open source technology At first there's a lot of hype around it because it seems like it's great, but then it's not ready for prime time It's very brittle. Um You probably don't hear as much about open daylight today as you did a few years ago That's because what's been happening is not super exciting not new functionality getting added rather. It's getting hardened and You know easier to deploy Now what i'm showing here. This is within the uh the open source dev center Yep, do you want to do you want to sneak in a second question because you're running out of time? Well, i'm just going to you were talking about applications Here's a whole set of open source applications that run on top of open daylight if that's the type of application You're looking for too And these are all available through the um Through dev net the open source dev center there and the links is going to be in the slides A second question if there's time Sorry, we just we ran out of time. All right, well i'll be available. Happy to talk. Thank you very much Charles