 So, our next presentation is a tag team affair with Charles Echoll and Giles Stern, getting started with Open Daylight. So, there's going to be a practical demo aspect as well as a presentation. We're going to do this as a one-hour presentation or are you going to do it as a one-hour presentation? We'll be flexible. We'll break it. Yeah. And the next one is doing GVP with Open Daylight, so I kind of cover the basics, the easy stuff with Open Daylight, and then Giles will take you in more in-depth use case with using BGP. So, yeah, my name's Charles Echoll, title here is Open Source Developer Evangelist, so I work at Cisco, but the cool thing about my job is I get to work with a lot of the stuff that Cisco does with Open Source, where we're contributing to Open Source, where we're using it in our products, and Open Daylight is just an example of that. So, this is a pretty introductory talk into Open Daylight, and feel free to jump in with questions at any time, let me know, and I'll certainly try to leave room for questions at the end. Quick rundown of the agenda, so just a level set, I'll go very quickly and briefly into what SDN is, then what is Open Daylight, then we'll look at how easy it is to install and get started with Open Daylight, then run through a few use cases, and I'll take the easiest use case of the ones I show you to demonstrate to you, partly because it's also something you can pretty trivially then do on your own, set up on your own laptop, which hopefully you'll want to do and find interesting after this talk. So, first of all, what is SDN? So, I think when SDN first came out, the whole idea was that's the separation of the control plane and the data plane, and so, you know, fair enough, based on using OpenFlow, that was like the protocol that was used, it still is used, but especially initially, that's what everyone was thinking of, and then this logically centralized control plane, just instead of having all the control spread across all kinds of network elements, you kind of bring it into one place where you coalesce all it, and then we think of the white label switches too, it's like we can get rid of a lot of that expensive hardware and just run everything using these white label switches. And it's not that that's not a valid case, it is, and it certainly is still happening, but I think SDN has come to me a lot more, and there's a lot more value to SDN than just that. So, you can certainly, and I think should think of SDN more broadly, and one of the most valuable things there is I think, if you look at SDN, it's really unleashing the, or providing you access to the vast amount of information that's in the network. It's always been there, but it's never really been something that's been exposed to you as an application developer. With SDN, that's something that is very valuable, and I think that's really where the power of SDN lies. It's in the network programmability opportunities that SDN exposes for you. So, this is just illustrating that broader definition that I just mentioned of SDN. You see, I mean, of course, there still is the separation of the control plane and the data plane of the forwarding plane, but what I'm really trying to illustrate here is that there's a lot of information that's down deep into the network, which now you, when you're writing an application, can have access to. So, the idea is that you can be seeing what's going on with the network, you can take that into account, your application can do something intelligent based on that, kind of program that into the network through the controller, and you just have this nice cycle where you can start to write some really clever, useful network-aware applications. So, if you think of that broader definition of an SDN controller, what is it that we really expect or need from an SDN controller? I mean, of course, it needs to work and make our network function, but more importantly, I think we really want it to be a platform on which you can write these network-aware applications that I was just talking about. You want it to be something that provides you with a good development environment for writing those applications, and it's going to be very important to you in order to give you that development environment that there's APIs that are available to you and that are well-defined. You're going to need to be able to have some abstractions, because you're not going to want to worry about what the underlying network topology is. You want it to be able to abstract that away from you, and you also don't want to be worrying about protocol independence. We mentioned that you could use OpenFlow, but there's a lot of other protocols you could be using, and you don't really, at the application level, you don't want to care or know or worry about those details. Notice that in that, maybe I did use the word OpenFlow, but it's not limited to OpenFlow. This really goes far beyond that. Now let's jump and take a look at Open Daylight. A bit of an eye chart here, but the idea that I wanted to get across to you is in that middle part, don't worry about all the different names that are really in there, but you basically have your basic networking functions in the red that's kind of in the middle. You have some enhanced networking functions. There's a lot of functionality that's built into Open Daylight, and those are the core things that it kind of needs to be a network controller, and it does all those jobs very well. But I think more importantly is when we start to think about from an application perspective how it's going to work. And if you go, well, let me go down first. OpenFlow is the thing that's mentioned on the far left-hand side, but it has plug-ins for all kinds of other network protocols that you might want to support in your network. So you're not just limited to OpenFlow. There's much more that it can deal with. And then as a application developer, it also exposes, if you look at the top, the APIs, you get restful APIs, including restconf and you also get netconf. So you get these APIs that you can build your applications on top of, and then Open Daylight is going to take care of abstracting away the rest, the different topologies, the different protocols that are underneath. So maybe just to back up and give you a little, a brief history of Open Daylight. So it was founded back in 2013, launched as a project within the Linux Foundation, and basically started when a group of founding companies came together and contributed a bunch of software and, more importantly, maybe development resources to kick it off and get it going. And it grew very quickly. I say 600 plus contributors. I know there were over 600. It obviously is a number that continues to grow, as does the lines of code. And most of it is written in Java. So when you think of Open Daylight, you can think of it as being a Java project. The first release came out in February of 2014. It was called Hydrogen. And since then, they've been having releases roughly every eight months where you saw that iChart I had at the beginning. There's all kinds of projects and functionality and pieces in there. A lot of plug-ins at the bottom. So a lot of people are contributing to Open Daylight in different areas. But it has a very modular design, which allows that. But the idea is, hey, every once in a while we want to pull all this together into a stable release. And so that's something that it's built into the planning that every eight months essentially come out with a new release. And I've pretty much been able to stick with that. The current stable release is called Blom. And the next release, which will be coming out in May, is called Carbon. And in case you haven't guessed, the release named Java named after elements in the periodic table. So you also get to, when you play with Open Daylight, to learn a bit about that as well. Very briefly, just go over from a software architecture point of view. I already mentioned it's Java. That was just chosen as the language that was going to be used for it. It uses the Maven build system, which if you work at all with Java, you'd be very familiar with. And then also uses Kraft. And Kraft is important because when you install Open Daylight, remember there's that ton, tons of functionality in there. Almost no one really wants to use every bit of functionality that it has. In fact, you usually use a small subset in your network. And if you turned everything on, I wouldn't want to guarantee for you that it's actually going to work. So when you install Open Daylight, it comes up with a very bare number of features installed, just the core that it needs to start up. And then you can enable individual features, the ones that you specifically need for your use cases in your network. And we'll go into that in a bit more detail later on. So with that bit of background, now let's go look at the installation. And don't worry if you can't read the details here, I'm just giving you the link where you can go and download the code. You're always going to find at this place the stable releases, like the latest stable version for each of the most recent releases. So you can go there and just grab that, download it. And then it's as simple as unzipping it, and just typing this command, this bin and with that it's going to load up and no complicated configuration, nothing like that that you need to do because as I mentioned at the beginning, it's going to start with very few features. And then once it's up and running, you will be able to turn on individual features that you want. So playing around with the features in caraf, just a few handy commands here. You can do feature Coleman list that will show you all the features that are available on the platform. Feature list dash I will tell you which ones are already installed. And then you can go and you can install one feature if you want, you can install multiple features. And you can also uninstall features, which is handy, but the caveat here, the tricky thing that I want to warn you of is when you do uninstall a feature from the CLI perspective, it'll look like it was uninstalled, but it's actually going to continue to exist and live on within the controller unless you stop the controller and then restart it again using this bin caraf and a clean to say a clean install. So just a word of warning there because that could trip you up. So what does this look like? This screenshot that I have here, this is just after I installed Open Daylight initially and I did a list of the features that are there and this little X means the features installed in the installed list and you can see there's very, very little there. This is just the core platform. And then there's something in Open Daylight that I'll show you shortly called Deluxe. Deluxe is just the kind of graphical, the user interface, the front end that gets put on. You have the CLI, but Deluxe is a very useful interface that you can use as well. So in the example here I'm just showing you, well if I wanted to figure out how to turn on the Deluxe feature and install it, how would I go about doing that? And so I use that feature list command and just grab for Deluxe and it'll show me all the things that contain Deluxe. And in this example, what I did was I installed the Deluxe core which gives me the minimum set. I could have also done Deluxe all. I would have just installed a few more things and then I show you that after running that command, now if I do a feature list, again I can see that I got all the core parts of Deluxe installed. Once I have that, then I can just go to navigate to open up Deluxe. And in this example I put local host because I'm running it locally on my laptop. So that would just be whatever the IP address of your controller is. And on port 8181 you log in and this is an example of what it looks like and we'll go into that in a little more detail later too. So now some example use cases and the first one which this is one I'll go into in a bit more detail with a demo is to show you how you can load up Open Daylight and then use something called MiniNet. How many people have heard of MiniNet? Okay, great. So you probably won't have too much difficulty with this then. The idea is to use a VM that has MiniNet inside of it and just use that to create a sample network which you can then have Open Daylight play with. And then just to get it in your head but I'm not going to go into details on either of these but you'll actually hear talks later on today that talk a bit more and a bit, you know, about both. Another example use case which is very interesting, you probably heard about VPP and this just shows pictorially how you could use Open Daylight and with VPP is the underlying network underneath it. Maybe next year we'll show that one and then here's the BGP LS because again the reason I wanted to show these different ones is the MiniNet one is using OpenFlow and whereas here now you can see that another use case where we're not using OpenFlow we're using BGP and PSAP instead. Okay, so now we're going to go through how to set this up for yourself and what the demo is going to do. So I mentioned using MiniNet within a VM so I just downloaded that and followed these instructions. Thanks to Brian Linkletter he provided fantastic constructions for how to do this so I put that link there because I didn't want to try to describe it again myself he did a wonderful job. And so then in one terminal I'll start at Open Daylight which I installed just as I showed you by downloading it and we covered that in a previous slide and then in the other one I'm going to spin up MiniNet and I'm going to log into it and tell it to create a network that creates that has three switches and a host attached to each switch and I'm just going to tell it to talk to my controller my Open Daylight controller and this happens to be the IP address which the file stem network's given me so you just replace that with whatever your IP address is and this other IP address the 192.168 IP address that's what got assigned by MiniNet to my the VM. Oh and then I'll go into the browser and we'll take a look and play around with that a bit. So that's just a screenshot of what MiniNet's going to do when it starts up I won't spend any more time on these we'll go ahead and give the demo a try and if it doesn't work then I'll fall back to to using this so okay so let's see so here is my Open Daylight controller and if I just do that bincraft command that we mentioned before you can see it starting up and while that's starting up why don't I go ahead and take a look at my here's where I have a the bottom here my MiniNet VM that I installed and I'll get that get that going as well okay so Open Daylight started I have my prompt here I can do like one of the commands that we talked about feature list-i and I can see all the features I have installed quite a few because I already ran that command that I showed you before that was going to install the minimum feature set that I needed for virtual box it's in the slide so you can find that yourself but you'll see you know because of that I have deluxe installed I have the other two switch that I need I have rest cons all of those are going to be used for the rest of this demo so those are installed and I should now be able to go and log in okay so I'm logged into Open Daylight and I'm looking at my network and I have no network so that's because I haven't done anything with MiniNet yet so it started I need to log into it the credentials are MiniNet MiniNet pretty easy to remember and it's also in the slides and now I'm just going to run those commands to start up a little sample network and I just put it in a script called start MiniNet network it's just one command though I just didn't want to have a bunch of typos when I'm here so okay so that started up now if I go back to my Open Daylight and check it out and reload so now I can see my three switches those just came up within MiniNet but I don't see my host yet but if I generate some traffic do a ping all they're all connected so they work and if I do a reload now I can see them as well so just a simple example of how this network now gets discovered and attached into my Open Daylight network now I can look at my different nodes and I can see make this a little bit bigger maybe I can see all the connections that I have and just some statistics not a whole lot's gone on because I just created this network but I think what might be more interesting is I wanted to show you because the point I wanted to get across was you know application development and how this is good for network aware applications and this is pretty cool this shows you all of the models because maybe I didn't mention this before but Open Daylight has a it's really a model driven architecture where you put the functionality that you're putting into it you define in the Yang model and then it reads that Yang model in and it's able to generate APIs and based off of that so these are all the APIs that are available to me within the platform and there's there's quite a few now maybe all of them won't actually have anything on the back end yet it depends what I've loaded into the network but just to give you an example one that I know has something in it is if I go to the the Open Daylight inventory and this is just where I can go and look and see what's in my network so if I look at the operational data there's basically you'll see this convention most of the time there's an operational data store and a configuration data store the configuration is what was there when I loaded up when I started up my controller and I can go and I can do a command if I click on this see it's showing me at the bottom what the command is the rest command so I can do a get of all the nodes that are in my configuration and you see I get an error here because there was no configuration but remember that's what we saw when we started it up there was no configuration no configured nodes they they got discovered at runtime so if instead I look at my operational and go on the nodes and do this same command fingers crossed this should actually work and it looks like it did and if I go down you can see what got returned and deluxe just gives me a nice way to scan through this this is exactly what we saw in the picture before right I have three different nodes openflow one two and three and I can see information about each of them the packets and that they have and whatnot now the reason I'm showing you this is because all of this is what's available to you now programmatically through just basic last calls and this is a very simple example but hopefully it impresses on you that now as an application developer I have very easy access to this information which before I may not have been able to to get okay let me get out of this and I'm just gonna jump back to my slides okay and now I just want to leave you with if some additional resources as I mentioned I work with open source at Cisco so everything that I'm working on within Cisco can be found in this open source dev center this is where the projects that we work on like open daylight open stack you can find information about them and what Cisco's doing and where we're using it in our products and there's a whole site there where you can get more information this I wanted to show because these are a bunch of applications that we've written they're all open source they're all free they're really just there to kind of help plant that seed that hey this is a great platform for writing applications open daylight is and it's it's quite straightforward to do it not only are these useful but they serve really is is great kind of training tools I would say so you can download those all available this other thing which is quite handy is for MiniNet it was quite straightforward for me to get a VM and just spin it up on my own laptop but you can imagine that maybe you want to do something more complicated where you have like some some real network equipment behind it and so we have these sandboxes which you can also use for free log into them and you know experiment with some more complicated network examples and Giles will show you a kind of an example of that later on and then this is just a place you can go for help in case you're having problems with or have questions or want to share something and that's basically it so hopefully I left a few minutes for questions and if anyone has any questions yeah I don't do you know I don't think that much yeah the question was how much of Open Daylights implemented in Cisco ACI and I think they're as far as I know they're they're quite separate yeah totally different ACI is quite targeted around one particular platform and so ODL I guess the way I was characterised is what Charles was saying I guess about when you kind of compare it to ACI you compare it to Contra Contra guys you compare it to cars the problem is kind of hard to compare so you compare it to Swiss Army Night to an individual tool ODL does just about anything you want and everything you expect because the downside of that is you know my Swiss Army Night is not the best tool that I own but there's flaws out there there's always there's always that tension between having a very general platform and having a more specific tool and I guess the demo is I'm going to show later really to me where the value is at Open Daylight it's always once you start to move once out of that plug-in so you tend to be one plug-in to learn something about the network and then one plug-in to do something to that plug-in so I invite the demo as I'm going to show her in that kind of space yeah so Daylight's ready for Telco and AP traffic yeah yeah it's it's it is Open Daylight ready for Telco and AP traffic and I would say yes I mean there's some big providers using it I mean AT&T is is using it it's part of their their ECOMP platform Tencent has been very kind of open and sharing how they're using and if you you've never looked into Tencent and their network it's it's just amazing the scale that they're working with you can see why they'd want to have something like Open Daylight but they've they've really brought back a lot of learnings too and it may be driven some of the the performance or stability stuff back into Open Daylight Charles, can I just add on to that so the XEN at the ISG ran a plug test over the last two weeks and we've talked a little bit of big platform running it and they like running it in their SFC run to that and it passed all the tests and they were very well so it has been totally totally paid for in every environment oh oh okay yep yep any other questions okay well thank you very much