Cisco Customer Success - Video

Deep Dive into Service Design

Playback confirmation!

Do you want to resume playing from last left location?

Chapter 1 Thumbnail
00:00
Introduction and NSO service basics with a simple ACL use case
Chapter 2 Thumbnail
03:33
Core components of an NSO service: YANG, logic, templates, and package metadata
Chapter 3 Thumbnail
07:17
Northbound integration with OSS/BSS, RESTCONF payload, and real ACL CRUD use case
Chapter 4 Thumbnail
13:00
Service design options and demo: YANG model, logic layer, and template-based service
Chapter 5 Thumbnail
22:43
Fast Map explained: minimal diffs with create/modify/delete demonstrations
Chapter 6 Thumbnail
31:00
Handling shared resources: ref-count and backpointers across services
Chapter 7 Thumbnail
36:26
Stacked services (CFS/RFS): concepts, live demo, reuse, and workflow orchestration
Chapter 8 Thumbnail
01:06:51
LSA considerations, parent–child services, complexity and sync metadata
Chapter 9 Thumbnail
01:12:15
Reactive Fast Map: asynchronous redeploy patterns and examples
Chapter 10 Thumbnail
01:17:12
Sync checks, brownfield reconciliation, YANG modeling tips, and wrap-up

Transcript

Oh, today we're gonna discuss about NSO services and then dive into the details of NSO services. How do you create them?00:00Because I mean.00:20There are so many different components of NSO services that you can, you know, you need to know where and how to use it. So let's let's double click on this already. So 1st, let's start with what really is a NSO service. And I know most of you attending this session would have already created NSO services by this time.00:22Time and might be already using it, right? So you create NSO services when you want to create your own business intent, your own workflows, customize things. So anything which could be, it could be a repetitive task, it could be aL2 VPN service, it could be any business or intelligent logic that you might want to create.00:41Right? So let's take one very simple example.01:01To begin with, let's say we have a user and the user, wants to like this is a network admin and the network admin wants to just thinking that I need to set up an examination center and in the examination center I need to block certain IPs or URLs, right?01:06And then how do we do that? So this is just a very basic example of, you know, what a service could look like or what service you could create. So then what happens is in the background, we kind of think about, ok, how can we create this? And then we create a NS.01:25So ACL service in the background. So NSO is triggered while the user is trying to do or block IPs and so on. Because then we can have like, you know, you can, with NSO e.g. when you create a service, you can apply the configuration.01:45Two different devices of multiple vendors like it could be Hawaii, Hawaii or the chat we are receiving a message that you are not sharing the content. Okay perfect guys, so we go one more time just because now we've already spoken about NSO service, the use case that I was.02:03I'm gonna show you was this one where we say that we have a network admin and the network admin is kind of thinking how do I configure.02:23Let's say an examination center set up, so in the network you want to block certain URLs, e.g., right? Now, while we are doing this, what's happening in the background? In the background when the user triggers that, ok, I wanna block certain IPs and stuff like that.02:31In the background, you can actually configure an NSO service. Now, this could be a very simple NSO service, like it could be a service where you want to say, ok, I just want to apply a very simple ACL policy or it could be a more complex service where you say that, ok, I want to use a machine learning.02:50My LLM algorithm, right? Where I want to figure out on the fly.03:11Which URLs to be used, do some smart insertion. It could be anything. So with NSO, as you know, you have the flexibility to design your own scripts, to design your own algorithm, design your own business intent or logic, right? So now let's say here.03:16In the background NSO service is getting triggered and it has a big business logic, but the main intent is that it is going to push configurations to your different routers, different devices. Now those devices could be your Nokia device Hawaii Ericson or any other different kind of device, right? Because.03:33NSO is able to handle a wide range of portfolio, wide range of device types and so on.03:53And eventually what happens is the outcome is that the network admin right here is actually able to configure the, the, you know, like the whole network infrastructure room or whatever with the ACL policies that was configured, and everything else is happening in the background.03:59And this service right when it triggers, this is called the NSO.04:19Service itself, so the ACL service. Now, the interesting thing is when you create this service, there can be, because you, you know, it's your business intent, so it could be a complicated logic, it could be a complicated workflow, there could be multiple components involved in that. So.04:251st, to unpack what is the most basic structure of the service and what it looks like, we have these four components. 1st is your Yang model in the NSO service, right? Where you have, how do you, how does your service high level definition looks like?04:44Then you have the logic. Let's say I want to add a smartnet to it. I want my ACL to have a smart insert or something like that. All of that business logic or Python code or Java code will go inside your logic section.05:04Then you have the template, like how does, how does NSO know that this is the configuration for a particular device and it needs to be mapped at that? E.g., we have a young model which is the same, that is the user, like e.g. for that service you're saying for ACL I.05:19I need to block this IP on different devices like Nokia Juniper and so on. So this will be linked directly to the template section where the template section is gonna have, ok, from my nokia, this is what the template or config looks like and it's gonna be linked directly to that. And then we have the package.05:39This metadata where you do the versioning of your packages or add dependencies and so on. Let's say if you plan to use, you know, other packages and so on. So what this is the basic.05:59Structure of your NSO. And we are also going to see it in demo, how the structure looks like and so on. And then coming back to our example, right? Now, of course, as I said that you can you have the option to customize it and create the workflow as you like.06:10Which means that you can be like, ok, I want to trigger this service and based on this service, I can integrate an action and that action triggers another service. So you can have multiple integrations in that way. So e.g., if the same use case we see here, like the user decided that we have our own OSSB.06:30System and yeah sorry the the slides are gone again.06:51This is very strange, why is that happening? Ok. Why are we running into that issue? Discard the annotations.06:55Okay let me share the PPD time.07:17Do you guys see the slides now? Yes, so now again. But I'm not sure why this is happening. Okay, just ping me and then I re share again if that happens.07:29Okay, so alright, so we were here and was were these slides visible before or not? Not, not everything. Like I think just the 1st image.07:45Okay. Alright, so then what happens is that you are able to like, e.g., in this case, the user is using a OSS PSS system which looks like this. So you can integrate it with different kinds of systems, right? Because then you can have northbound and take.08:00And Southbar integration is your devices itself. So then you have NSO and then you have restconf happening on the way like you can create a restcon service and connect it to them and send different sorts of data that you want to send based on your logic. So e.g., if you see here, this is.08:21The logic, this is the.08:40Body of our post that we are sending, right? So now if you see it looks like this, you have, input action, e.g. permit TCP source, then you have the IP address and the destination IP address. And all of this information, will go in.08:44Into your Yang. And then finally, this information is sent to your OSSBS system or northbound system, and you can get an acknowledgement. So you can create different kinds of workflows. Now, as I was saying, this is a real use case from.09:02One of our like we've implemented that on multiple customers and multiple service providers. And I just wanted to give you a snapshot of what that workflow could look like because we saw a simple service but then you can create multiple components of that service, right? So the simple challenge, e.g., here that we had was.09:19The customer was aiming to automate the possibility to do a basic crud operation, which is your add, create, delete the ACL services from the network and create some sort of ACL management tooling, which could be visible on the UI that they use and, you know, could be visible on what's happening, what's happening to the link when.09:39And they do that and things like that. And then the solution that was proposed was, ok, we are going to do this integration using NSO.09:59And we can have some customization and so on. And then if you see that sometimes our workflows depending because NSO is a part of the system and it's sometimes connected to many different tools, can actually have a very complex workflow. But within NSO as well, you can decide that, ok, I want the workflow.10:09Workflow to be created in such a way and it can have multiple different components, right? So this is what the workflow looked like, where we had some security checks in between. We had lot of, if and else sort of situations where, you know, if this happens, then trigger this sort of ACL if that happens, then trigger, you know, a different ACL.10:29The Policy and so on. So you are able to create this sort of.10:49System, right? And today we are gonna double tap on, ok, if you want to create these sort of things, what are the different options that you can use? Because as you know in NSO service, it's like a box full of, different, let's say features that you can use and pick up, and you need to know which.10:55Feature to use where, and that's why we're just gonna unbox all of these features to know which one we can use where.11:15And here like if you see, you can all this is like just a workflow which talks about, ok, which, service was triggered where and so on, right? And here in this example, it's the NSO is connected to another system. The expected outcome of this service that we wanted to create was it.11:21It's gonna have enhanced service offering with new value and services and optimized OpEx, reduce the configuration errors because of course if you do these things manually or try to figure it out with script and so on, it just takes a lot of time and effort, right? And then of course it this when we completed this project, there was a.11:41Increased amount of network efficiency that we observed.12:02Okay, so, are you guys able to see the screen now? No, NO, the slides just disappeared. Oh, guys, I don't know what to do now.12:06David, what is your proposal? I don't know why this is happening again and again. Yeah, now are visible. It's fine, but it's ok. You guys were able to see the screen, right?12:30Yeah, that one is was visible. Okay, so to create this kind of service, we have two options, right? Now you have a simple template based services that you guys might already be aware of where you can have a very simple structure where you have the young model that maps.12:40Directly to your XML or you have this kind of model that we're discussing now where you have your young model and your logical layer, and then it connects to your XML on the template itself.13:00So again, we, we spoke about what are the different components. We have the logic template, packages metadata, and of course we have another component which is testing, which is also super important as part of, you know, creating a more reliable.13:13A package and testing it and so on. All right, then we have our yang, and this is what the Yang looks like. We'll also see it in our demo, how it looks like and I can show you the details of it.13:29So you have the young where, e.g., if I was creating a very, very simple loopback service, right? Then what it would look like. My Yang is gonna be a very high level definition. So I have a very high level definition of I need device input from my user. So I have the device here.13:47Then I have loopback interface. Okay, this device needs to have a loopback, then you have IP address, CIDR mask, and so on. And all of that can be added to your YANG. And this is the structure of the, and now what is very interesting to notice is that in your YANG, you can also.14:06Do some sort of.14:26Let's say high level filtering or high level logic. So e.g. here if you see, I'm saying that only certain range of IP address or type of IP address can be added. And there is already some high level logic that we've added here, right? Which kind of creates.14:29Creates your 1st layer. So we need, we will see today on, ok, with Yang, when can we use what, what other logics we can use? What is the benefit of doing that? You can already say, ok, I need this as a mandatory field, so you can already add 1st layer of logic in your Yang.14:48Then you have your Python layer or the logical layer, and this layer, of course, a lot of logic can go in. You can add, you know, you can now, e.g., you can use your llms, you can create different sort of workflows and so on. And then this ultimately you link this to your template because this is.15:07Where your device config definition is stored and this is exactly what goes into your device, right? So e.g. here your loopback interface in this case is linked to your logical layer, sorry, the device is linked to your Yang and the loopback interface, e.g., is linked to your logical layer.15:27And the IP address and netmask as well is linked to your logical layer.15:46I'm good, can you guys see my screen? All right, I'm guessing yes. So let's say when we apply this service, what happens in the background? When we apply this service, there, the service is divided into two layers, right? One is.15:51The service itself, like this is the service that is applied, right? And this service config data is coming from your yang. This is related to your yang. And then you have, when you apply that service, the configuration that goes to your device. And this information, when it.16:10Actually configures the device is, is your basically template, so this is how it's kind of divided from a more, when you see from a developer's lens, from the, you know, the, the developer's perspective. So this is how it's gonna look like. So for your user, your user is only gonna see.16:29The.16:49What you see on the right hand side here, which is basically you apply a service, the supply the service gets configured on a device, but from a developer perspective, you know what is happening as part of the service. This is a service configuration coming from your Yang and then you have your device configuration coming as part of the template.16:50Okay, before we dive into service design, I'm gonna show you one of the services and how that looks like. Do you guys see my terminal?17:10David, can you tell me if you guys can see my terminal? Yes yes. Yes, we can, it's visible. Alright, so let's say we go into, our CLI, right? And I have one service which is open right here. You have the RFS service and if you see in your RFS service.17:29Again, we have that sort of division, so I've applied the RFS service and this is what the application looks like. I've given the RFS service, and then I've said, ok, I want to apply that on device iOS one.17:48With routes, this is the route and this is the gateway. When I apply that service, you see that this configuration is coming as part of the service itself, and this is the configuration that will be applied to the device, right? So this happens as part of the service. Now before.18:01Before we double click on the service and I show you what the package itself looks like, let me show you 1st if I go inside.18:20Sorry just disappeared. Can you just try to, to rejoin the session to see if it's something related to permissions or something? I think it's trying better. Yeah, let's do that. Okay guys, back into our terminal and I think we should be good now. Sorry for all the hiccups and the things you were seeing, but let's let's dive into this, right?18:30So if you see.18:50Now I'm gonna double tap on and show you what the service configuration looks like. So let's go into it, show full service, so show full configuration and then I'm gonna give the name of the service, which is RFS service. And if you see this is the service that we've configured, right? So now we should be able to see this data, the data below.18:52So.19:12Which is RFS iOS one routes thirty.zero. Now, when I click this, I will see all the details or all the things that have applied part of this service including this one. So if you enter, you see that, ok, as part of this in my iOS one I have.19:13All of these, but I still don't see it. And why is that?19:32The reason is because I've just done a commit dry run and we haven't really committed the service. So I'm just gonna quickly commit the service. Or maybe let's apply the service again, make commit. Okay commit complete and then I'm gonna say ok let's say show full configuration.19:36RFS service. And now if you see as part of the RFS service, this configuration is visible.19:56Right? And then let me show you what the device configuration now looks like. So if I go to my show full configuration of devices, you will see that the configuration.20:04IP forwarding and this route should be visible, so show full configuration for device iOS one, right? And you see that as part of this service, this IP route is already added.20:19So this is how it looks like. Now, if I go inside my package, so these are the, this is this was my NSO CLI, right? But if I go inside my packages, you see that I have the RFS service. And if I open this RFS service for you.20:36Right? You will see this is the structure that we were seeing. You have the SRC which has the yang. Then you have the templates, and you will have the template for, e.g., iOS device packages metadata, and the testing folder. So let's quickly go into and if you.20:54You see here we do not have the Python package, which means there's NO logical there, and this is a template based service, e.g.. And we can also see more services which are Python based, right? So here if I open the Yang.21:12This is what my young looks like. You see all of this and here I've used another component known as grouping, which we are gonna see as we double tap more on Yang and so on. And we'll see where we use that and so on. And if you see here, we've already used a leaf ref, which is.21:29You know, one of the young referencing sort of feature. Then we go back and let's go into templates to look, just look at how the templates look like. And if you see the template looks like this, this is a template or configuration for the devices.21:46Myself and inside this I have configured it for how the iOS device looks like, and then I can add it for multiple as well. Let's say I can create a dynamic template or I can create templates for Junos devices, Nokia devices and so on, right?22:06And then you have, e.g., here you have route, IP route forwarding, prefix, and all the rest of the things. Alright, back to our presentation and talking more about service design. Now, what is very interesting is one of the 1st components when we double tap in.22:21Services of NSO and, you know, start talking about the design component is we we talk about fast map. Now fast map is like one of the most important features or algorithm that NSO uses and it makes sure that it really makes sure that your services run faster, right?22:43Right, and how does it do that? It does that by.23:03So the most important thing is that it does that by making sure only the minimal configuration or only the changes that you've made is going to be pushed to your devices, right? So now what we're doing is that we're making sure that it is more efficient and takes lesser time. And that.23:07That is your fast map algorithm.23:26Let me give you an example, right? So let's say we have this service and you can take any service as an example, you can take the RFS service or any service as an example. Now in this service, what is happening is I have three components, X Y, and Z, right? Now let's say it's connected.23:29To a device and a device model and I am already making some changes to that, to that. So let's say what I do is it's connected to A, B and C And I make certain changes and in that change, the one change that is done is on this layer, right? So what is the new device.23:49Component gonna look like, it's gonna be like A, B and the changed or the C, right? So finally, the thing that is gonna get pushed to the device is only gonna be the set. It's only gonna be the difference of what we've put and not the whole configuration. What I mean to say is if I go back to my terminal and we go back to.24:09Your CLI.24:29I will configure the RFS service again and let's say I take the RFS service, let's say for iOS one and then we kind of make certain changes. So let's say, and we'll see it from multiple, you know.24:30The set up, but let's say we make certain changes to our routes and I say 30 and I want to just make it to two, and then, and let's say.24:50And let's see what this one looks like, right? So you see that RFS service was actually pretty big and the device had a lot of changes, but only the diff will be changed. And we'll see this with more examples with different kinds of ServiceNow.25:07So what happens here is only the diff will be changed and not the whole configuration. So if you see another example, let's say we have a service which is L two VPN service, and let's say this service is named as a CME, right? Now, in this you can have multiple, so we're just configuring a service and.25:27When we create a service, everything gets added. So you can add multiple components in that service, you can add like device, interface remote, like a lot of different things. So it has two links, link site one and link site two, right? And when you try to add it, like in our case, everything was getting added, right? So you see.25:47Everything here is getting added. So in create it works like a simple service creation, whatever you add just gets added. But the change happens.26:07Or fast map is like, e.g., you will see the change or it getting triggered more like visibly when you make a modification into the service. So let's say you have this service and this is what your CDB looks like, right? You have the service layer, you have the devices and then a device layer in the NSO.26:16For CDB itself, which is linked to your.26:36Device itself. So your, you have your services layer and in your services layer you have this service which has, you know, these kind of components that we were seeing. And when you make any changes to service, that is implied that that changes gets into your device and eventually your device is configured, right? Now, let's say.26:40You modify certain changes. So I take the same service, but I start with modification. I change the VC ID and and so on, right? And here if you see what happens is.26:59Well, this is where fast map gets triggered because it is not making changes to everything in the service or re adding the service, but only making changes to that VCID, only that one component of the service stream.27:11And this is what is known as known as fast map, where only the diff gets added or changed and so on and nothing else. Again, if I make another change to L two VPN, the different one and I let's say only change the address, then in that case as well your CDB will show only the diff or it will only add the diff.27:27And this makes.27:47Everything faster because it makes things more efficient, right? Now, if I delete a service, then what happens is that everything gets deleted as part of the service. So this is how we handle things, right? So e.g. here if I delete like one particular component of the service, you'll see that everything gets deleted and as.27:49Part of that, the device configuration will also get deleted.28:08So let's see e.g. if I do NO RFS service for iOS one and then I delete the route one.one.one or maybe let's delete the same one that we created before.28:13Okay we don't see this here. Maybe let's use another one.28:42Yeah, so if you oh because we didn't commit that one. So if you see we deleted this one and everything else will get deleted. And if I make a commit, then.28:47Even the device configuration that is this one will get deleted. Let's try to make some small modification to this one. I take the same route here and I will make changes.29:03To your if you see here, this is where your fast map gets triggered as well and you see that only those changes are kind of, you know, changed as.29:20So on. I will make the comment to this.29:39And then let's quickly also remove this service and then let's see what that looks like. And if I remove let's see maybe we remove another service.29:42Thirty.0.one.one and let's make a commit. And now when we see show full configuration of RFS service, you'll see that.30:04That this service thirty.1.one is deleted from the RFS service list and if I see the show full configuration for my device, which is iOS one device, you will see that again we don't see the 30 dot.30:22One.one sort of configuration because that's deleted as part of that as well. So all of this is happening in the background because of your past map, right? Now we've already seen some of the basics and I guess that most of you here would already be aware of how these things work in the background and the.30:40Basics of it. Now let's get to the most, some of the challenging questions, right? Now.31:00Let's talk about how do we handle service sharing resources. What does that mean? Now, it means that you might have multiple services, you might have an ACL service, you might have a loopback service, you might have some other service.31:06Which might be or it is possible the same instance of that service might be touching the same part or same configuration of the devices. How do we handle that? What if multiple services make changes to the same part of the configuration of the devices, right? So how does, how is.31:21That keeping kept into account.31:41So let's take the 1st example. The 1st example is your L two VPN service. In your L two VPN service, let's say we have a service instance and then we are making certain changes to your devices. Now there's something to notice here that we've not seen before. We have this.31:44Known as ref count and backdrop drop backdrop. Now, what is ref count and backdrop? Now what NSO does in the background is every time you configure a service, NSO maintains a ref count and backdrop. Ref count is in the device how many times?32:02The service was applied or changed like is it like how many services are touching the same part of the configuration and backdrop is your is your let's say, the value itself?32:21So e.g., if I go here and I say let's.32:37So if I do service metadata, you say, see that as part of my service, like as part of this service that we configured, you have the ref count, that means only one service is touching this part of the device right now and the back pointer is this.32:55Which means this is the value of that component, right? So you already see that as part of this. So this is what I'm talking about. And now let's say we saw this one case, but now what happens is let's say we create another instance of this service. So we have another service where we create L two VPN A two. And now this L two.33:15VPN A two also makes changes to the same configuration of that device. Then what happens there? Then you'll see that the ref count.33:35Changes to two because now there are, it's almost like it's stacked. So one service was applied and now another service is applied on top of that. So ref count becomes two, but the value becomes of the service that was applied the last, right? So e.g., this, the value here becomes A two. So you see the.33:44Device configuration looks like, ok, we have x connect A one, we have x connect A two because they're completely different configuration or steps. But then you have loopback one, which was also changed by.34:04L two VPN A one and also changed by L two VPN A two. And now your L two VPN A two when it's making the changes, your NSO is maintaining the ref count and saying that, ok, now the ref count is two and the back pointer or the value itself is now A two. Okay, now let's see different instances. So what happens when someone deletes.34:17It's L two VPN A one service. If someone deletes the L two VPN A one service, of course your X1A connect sorry X connect A one gets deleted.34:37Because it was only linked to that part of the service like we were seeing before, but also the ref count becomes one because the L two VPN A one service is deleted. But you also see that the value itself doesn't change because the value was configured and it was coming from, from.34:49Right here from L two VPN A two.35:09Right, so your device configuration for loopback one will remain, it will not change because the ref count is one and the value is set to A two. But now what happens when you delete L two VPN A two, then the whole configuration from the device gets deleted because then you have, you don't have x connector.35:13Like A two and then.35:32The ref count here now becomes zero as you, as you make changes to the, to the service, right? So this is what happens and then e.g., you will see that it will not show any ref count and the back point as when there is NO value because the whole service got deleted. Now this becomes very important as.35:33As you start getting into more complex workflows and services, and this is one of the most important things. Also, when you design your service.35:53And also when you debug your service, because then you have to see where is the value coming from, what is the ref count, and you can also add it in your Python logical layer, where you can see that, ok, check the ref count and if only the ref count is let's say, you know, you want a unique value or something, only the ref count is zero, then a.36:02Why this changes, otherwise reason alert or something like that. You can have.36:22All of that sort of complicated structuring or handling in your Python based on your knowledge of service sharing and ref count and back pointers. Okay, now taking out another feature of the box, right? Now we have stack services.36:26Now, what are our stack services? As the names suggests, this is like stacking of your services. Now let's take it as an example, right? So let's say you have your CFS layer and your RFS layer. And think of it this way. Your CFS layer is your customer facing service, which.36:43Which means your high level service of who wants to use it. Is it the network admin? Who wants to set it up? And your RFS layer is more like your.37:03Resource facing service who wants to manage it? E.g., am I directly interacting with my Nokia device? How does that handle things and so on, right? So if you take a very high level example, you know, I'd like to use this example is let's say if you have a CFS service and what you're doing here is.37:13Let's say I am renovating a building, I'm setting up a building or something, right? And in that building, when I set up different things, your CFS services, let's say I am, I only care about.37:33When I have, in my kitchen, let's just take it as an example, when I have all the water supply, when I turn the knob left, I should get hot water when I turn the knob right, I should get cold water. And this is what your user cares about. The user doesn't care where it's coming from. Is it coming from solar? It's coming from?37:48Or from, you know, different pipe. It doesn't care about it. The user cares about.38:07When I turn left, I want hot water, when I turn right, I want cold water. So that's your CFS service, which is the high level of service. Then you have another layer where you said, ok, you said you want hot water, but right now I can fetch the hot water from solar so I will go to the solar and fetch the high hot water from there and activate.38:12The things in the background for that. Now that's your RFS service. Where, how does it work in the background for that? Now from a networking context, you can think of it this way. Let's say if I want to, I, as a user, I want to choose that, ok, I want to use.38:32AWS, instance EC two or the user decides, No, I wanna actually spin up this device in a particular lab, and this is how I wanna provision it. There are both the choices and for your end user, you should make it simpler, right? You should be like, ok, I want to use this or that.38:51But in the background, in the RFS device or RFS service layer, what's gonna happen is that it's gonna take that information from CFS. Let's say it says I want AWS EC two instance, right? Or I want a virtual device, it's gonna check, ok, you want a virtual device? I need to check if I have it.39:09If I'm able to make the connection and then spin it up and connect to that. Now that's all the engineering that's happening. That's your RFS service. Now this is just as an example. And, you know, I used to love this.39:29This animated series, it's called Bop the builder. I don't know if you guys have seen it, but there's one episode from Bob the builder and what Bob the builder does is, that it just puts up different pieces like ok can I reuse the same thing that we discussed, let's say e.g. with hot water and cold water.39:42In my bathroom, can I use the same thing in my garden? And then it just, he just like puts the pieces together. He would put the pieces of like the living room, the bedroom, everything just together. And and that kind of reminds me how we do things with NSO, right? We always say like we wanna make things you.40:02Coupled but well integrated. So what do what we wanna do is that every.40:23Service should be on its own and we should be able to handle it, but make it abstracted, but then also connect it well so you can use it like that. And this is the best example of stack services because what we wanna do is we wanna create a lot of child services which might be completely functional by its own.40:28Own, right? They have their own function and so on. But then you should be, if you want, be able to integrate it like you integrate it in a controller or something to a parent service which might be able to use it or integrate them together if necessary, let's say in a workflow or something, right? So what really happens.40:48From a developer lens in a stacked service and then we'll jump into where do we use it? Why do we use it?41:08When not to use it and things like that. So 1st of all, let's understand what really are stacked services, right? So basically in a stacked service, it's a microservice based concept and architecture.41:14Where you have a service and then you can have a parent service that creates that service, right? So you can have a high level parent service, let's say e.g., this is the parent service here and this.41:30Parent service here creates your child services. And when this happens, this is called your stacked architect architecture. And then your child service in, in return can also create another service.41:47And then that can finally, let's say, apply configurations to the devices. So we can have a model like this. So e.g., in this case, this will be a CFS service, right? Again, this service in this case will be a CFS service and this is a RFS service because it's a resource facing or router facing service.42:03In a way.42:23Okay, let's double click on it and we understand this more and more, right? Let's say when do we need to use stack services? And even before we double click on, ok, when do we use it? Let's try to understand, ok, what does the structure look like? So let me try to show you with for.42:25Just an example of this and then we kind of double click on, ok, where do we use it? Then in which situations do we use it?42:44Okay, 1st let's see how it looks like from two angles. 1st, let's see from the user angle or if you're on the CLI directly what it would look like, and then we will go from more of a developer angle and I'll show you the packages and how the packages look like.42:52So let's say I have to configure a CFS service, right? And I already have some CFS services in my system, so I'll show you what those look like, show full configuration CFS service. So you see that I have CFS service zero one. We love dogs yet to be experts. Let's create.43:11Another one. CFS service, and this one we call it deep deep dive, ok, into NSO services.43:31And then I can choose my device. Let's say I choose my device as iOS zero, then I choose the network and I can choose the network as let's say forty.forty, not one.one I'm just choosing around.43:49Value, I choose a mask, net mask zero, and then a gateway and let's say just say partner 40. Now let's see what this looks like, right? When I do a commit dry run, you see that there are certain things that has happened here. Now.44:10In my services section, and that is something that we were not seeing before.44:29You have two different layers. One is your CFS service itself that I just configured because I only configured this. I said deep dive into services, right? And this service created another service.44:35So this service created an RFS service and this RFS service then applied configuration to my devices. So let's say I'm not gonna commit this, right? And when I don't commit this, you will see that.44:51This particular configuration does not get applied to the device. Neither does this service get created, right? But let's say if I commit it, then you will see that in your RFS service, because we've already seen this service, you'll see that.45:07A new instance like this will be created in the RFS service. So I exit from here. Now if I do show full configuration CFS service, you should be able to see deep dive into services. Like you have it here, deep dive into services, and if I do show full configuration RFS service.45:24Because this service is created by your CFS service.45:43You will see that this particular instance is added to your iOS zero device. And now if I do a show full configuration of my iOS device, iOS zero.45:49Then you see that this configuration is added to my device and this is actually coming from CFS service because CFS service created the RFS service and then that created another configuration of the device. Okay, now let's see another example. Let's, let's modify.46:06The same service, right? Now I take the same service, oh, let's go into config mode.46:26And I take the same service CFS service, deep dive into NSS services, right? And then what I do is I add VLAN ID, which I didn't I forgot to add before. So I'm just gonna say VLAN ID.46:32And I say I want it as 23. Now let's see what happens. So I do a commit dry run and when I do a commit dry run, I see something very, very interesting. I see that, ok, there is a modification here that is.46:50Let me do this one more time, because it's making changes to iOS zero device now. So if you see here, it, the iOS zero device.47:09Had now this is a very interesting observation here. So if you see that two things that has happened here, 1st is I created the C in my CFS service I, which is already there, I added a new component. So I added the VLAN ID 23 and you see a reflection.47:24Of modification in an RFS service because this RFS service VLAN for iOS zero device already existed and it said that, ok.47:45Now a new service, because before this service made the change, now a new service wants to make a change and I wanna change my VLAN ID from 22 to 23. Now, if you see.47:55In my CFS service, when I didn't add VLAN ID, this new service, which is service RFS service VLAN did not even get triggered before only the RFS service was getting triggered, right? So if I kind of put that into perspective here.48:11So what was happening before was we had this high level CFS service and I sent certain parameters to the CFS service and as part of this.48:29Configuration right that I had sent. This configuration was getting applied and a new service was getting created which was RFS service. I'm gonna call it RFSS here. And then I added another component because I forgot to add it that was the VLAN ID.48:43And when I added this VLAN ID, what happened is.49:03This configuration also get got added, but this CFS ServiceNow only made a modification and created another service which is RFS service VLAN ID.49:06Right? Because, and this RFS service VLAN ID now is making changes to the iOS zero device. Like this service RFS also made changes.49:27To a device, right? So let's go back here and see, ok, what does now iOS zero service really looks like? I'm gonna make this change again and I'm gonna commit the changes here. Now let's see what the configuration of.49:41Our device iOS zero looks like. Now if you see that we still have this, right? And let's see what the VLAN ID looks like now. Now if you see the VLAN becomes.50:0123 and this is the description, right? Okay, now we are gonna see what we're gonna make again some changes, so let's say we add, we make some modification into this. So I'm gonna add like few more things. So again, I make some changes into this. I give it.50:17Device iOS zero, at the gate, let's make some changes directly to it. So let's click network just use.50:37Let's use this one.50:56Okay, sorry, this should be the mask. Okay, so I'm gonna add a gateway.51:13And gateway maybe we make some changes to the gateway for just our observations. Making some random changes here.51:30And then we add a VLAN ID, because we didn't change the VLAN, then we change the description. We are learning ok now let's see what that looks like. Now if you see there are multiple changes that has happened here, right? As part of this CFS.51:45Service. Now there's modification and everything, but as part of this ServiceNow we have VLAN description we are learning, there is RFS service that is created and there's RFS service VLAN that is created. And there's modification in each one of them. And then as part of that.52:05RFS services, these RFS services are pushing configuration into iOS zero. So if you see what is happening in this case now is that we have the CFS service and this CFS service is now creating both of these services, which is your.52:23RFS service, right? And your RFS service VLAN at the same time because I gave all the parameters at the same time. And this is now making some changes to your device.52:42Which is your iOS zero device. Okay, so now if you see this this are all the modifications that is happening and we see all the components kind of play here. You see the fast map algorithm because now you see only changes happening, and not the whole like.52:59You know, only the modifications getting deleted or added?53:19And then you see as part of the CFS service, your two RFS services getting created and configuration changes happening to your iOS zero device, right? So I'm gonna commit this change and then we're gonna quickly look at what different configurations look like. So I'm gonna say show full configuration, RFS service.53:22Vlan.53:42And this is what is our new configuration, right? Where we said description we are learning and VLAN is 22. And then we say show full configuration for my simple RFS service and it's saying that for iOS zero device, this is the change that I have.53:44And then I can also see show full configuration for my RFS service, right? And this is the one we created. Now, which said RFS service deep dive into services, and then if you see it has all of these parameters. Now, what is interesting and this is what we're gonna see in our Yang and double.54:02Tap on that is your these two components.54:22Trigger RFS service VLAN, right? But they are optional components. So if you don't give, give this comp these these parameters, your RFS service VLAN does not get triggered and all of the other ones, let's say you have your device, network, mask engaged.54:26All of this creates your RFS service, which are mandatory so you cannot even create the service without giving these components. And the information I'm giving you right now is defined in your yank. So we'll go quickly and check what are.54:46Yeah, looks like. So let's, from a developer lens, let's look at what these services look like. So I go inside my packages and in my package you see that I have my CFS service and then I have my RFS services, right? RFS service and RFS service VLAN. Now, if.54:59I go inside my CFS service and I go inside my.55:19Yang? You see that my Yang has all of these components where it has device, right? Then it has network mask gateway, VLAN ID and VLAN description.55:25And now let's see what is very, very interesting is if we go inside our templates, you're gonna see that the template of this looks like looks very different than the traditional RFS template. Now, the template of a CFS model or customer facing service model.55:44Has the template of another service. So it has a template of RFS service, right? So you have the RFS service right here where you have a network masking gateway. And if we provide the VLAN ID, so this.56:03Is already, this logic is added in your template, e.g.. Then if you add VLAN ID, then, and only then the RFS service VLAN will be created and this is the configuration of the RFS service VLAN.56:22Right? So this is double tapping from the lens of, a developer. And this is how it creates the logic. Now, let's see where do we kind of use this sort of, you know, set up. So 1st let's say you have a scenario like this. Now, of course it looks very complicated, but.56:40I'm gonna simplify this for you. So let's say the story goes like this, right? Only focusing on this section right now. Let's say you have, you're a new company and.57:00You want to set up data centers. So let's say 1st we decide that I want to create I see a message from Dimitri.57:19Okay, if you have any questions, you can let us know in the chat. So, ok, let's let's think of this way, right? Now let's say you have you're creating a data center. Now let's say the 1st data center that I'm creating is gonna be in.57:33Paris. Now when I create a data center in Paris I'm like, ok, I'm gonna create it in this way that I will create a CFS service and based on that CFS service, I will create certain RFS services because, you know, I need an RFS service. I'm just saying it up for creating.57:49Some interfaces, some VPN are network set up which has BGP, e.g..58:09So I do all of these and each one of these RFS services that we have, right? They are, so each one of these RFS service are independent of its own, like the way we saw with our, our service, right? When I just wanted to create an RFS service, I could create it that was not linked to my CFS service.58:14So each one of them are independent components, but they are also, they can work independently, but they are created by our CFS service.58:34And in turn, they make some changes to our devices. Now, let's say the Paris data centers done and now I want to create a data center in London. I go to London and I, this has a completely different network infrastructure and how we're gonna do things so I can.58:44Create a very different because our business intent is different, customer needs are different, I create a very different CFS service, but then I decide to reuse some of the RFS services I had before. So I bring in some of the RFS services and I put it here. Similarly, I create another.59:04Data center in Madhreed and we have like, ok, I have the same concept, right? So now let's say when I talk about workflow, there could be a situation where we say that, ok, now all of this is done and i'm scaling and we're expanding. So I want to create a parent service where I can decide.59:23Okay.59:43And handle different services on different locations. So this almost acts like a controller. So I create another parent service on top, which is my grandparent service or NSO parent parent service, which will in, in turn create other CFS services, let's say on different availability.59:44And then we'll configure your RFS service which in turn can apply configuration to your virtual or physical devices, right? And you can use the different kind of permutation combination like in the way I was showing you before, where you could choose like, ok, I want to use this component.01:00:04And this is how I want to configure it and I can use like some other component and this is how I want to use it. So this is your workflow implementation when you have very complicated workflows and you want to choose that, ok, based on this parameter, I only want to trigger.01:00:24A service, let's say on availability zone one and availability zone two, then that can work, right? And you can have another workflow where you say that, ok, based on certain other configurations, I only want to trigger a service that goes directly here and then.01:00:41Here, so you can create all of these combinations with that and keep a track of what is being changed where.01:01:01Now reusability. Again, you want to use stack services where we had a situation where you said that, ok, I created my services in London and which was availability zone two, and I had my NSO RFS interface service VPN service, BGP service.01:01:09But then I decide to use these services in another location because I can reuse it, right? So then what I did is in my Madhreed data center, I decided to use the same services. So you can use reuse the same services which can work independently but can have a very different.01:01:28Or logical layer from the top, but you know some of the packages can remain the same. Now, what is very interesting is stack services follows, again, double tapping on the fact a microservice architecture where your child services.01:01:49Which could be your RFS services are loosely coupled, which means that they are capable of existing on their own. And that's why we are able to reuse them. So they have the full control of the individual services, right? And can be used modified like the way we were doing, you know, RFS services. E.g., if I.01:02:06Go back to my terminal and I go back to my CLI, I can go and make changes only to my VLAN ID service. So e.g. I go to my RFS VLAN service and I can choose a device. Let's say I choose my same device I was using, which is iOS zero. I can directly.01:02:26You make changes to that. I can say that I want.01:02:45My, let's say VLAN, and I want the description to I'm changed by RFS service.01:02:51VLAN directly, right? So now when I do a commit dry run, you'll see that the changes happen from we are learning to RFS service VLAN directly, right? So you already see the changes here and if I make.01:03:08Come at.01:03:28You'll see that this is able to independently operate and rewrite the changes that were done by the CFS service. So the parent service develops the child service and this mapping happens, but your child service can exist independently. Now, how is it really saving time?01:03:29This is a very interesting one because.01:03:48In this case, what happens is, let's say, e.g., in our services, right, where we had the CFS service and the RFS service and so on. Now, let's say I was to make changes only to one of the components, like I did before, where I said that.01:03:52Okay, I'm gonna rewrite this change again. Let's say I am going to again take the CFS service and I'm gonna say deep dive into services and I'm gonna change the VLAN description.01:04:10Curious, ok? Now let's see what happens here. Now if you see that as part of your fast map, this is actually happening by fast map. Now this, your CFS service is actually, you know.01:04:29What it does is that it can make changes to a lot of things, right? It can make changes to your RFS service which was creating the route and everything, but now because we only made one change, it did not change the whole everything that was part of the CFS service, but it only made changes to that one config.01:04:47Which is it only triggered RFS service VLAN.01:05:08For iOS zero device and in that part also like we made changes right here, right? So now we changed ok now our description is just curious. So this is what I'm talking about. So this is where it saves time because now it's not like in the workflow everything gets triggered, but only the change.01:05:12These are the modifications you make will get triggered. So how is this happening here?01:05:31You are running create in your Python service when you create a service, so you create the RF a CFS service, your customer facing service. As part of your customer facing service, it generates a create, create and create, which is.01:05:37Ultimately sent to the CDB and then to the device, right? Now it checks in the background if the previous data is equal to the new CDB data like it did before. So if the CDB data is equal to the new CDB data, the fast map will not generate create at all. So e.g..01:05:52With this service will not be created at all, because your CDB and fast map is able to internally check that the previous data that was there is equal to the new data. So this is how we're saving time by now.01:06:12CFS service is only focused on creating these two services and did not waste his time on creating multiple services and so on. All right, now so if it's if you see that it kind of marks here and says.01:06:31Wouldn't add anything to the diff that will be needed to be transferred in the end. Alright, now one of the last points, if you have LSA in your roadmap, which means that let's say right now your NSO is handling.01:06:5125000 devices and then you want to add another 25 and you guys are scaling a lot and there are more setup coming up, right? Then of course your NSO one NSO instance has a limitation and you want to add more NSO instances.01:07:07So, and you you're thinking about NSA. In that case, the stack service helps a lot because then when you have an LSA, which means that one NSO provisions or manages other nsos, which in turn manage the devices.01:07:24In that case, your, if you have the stack services already, your RFS services can be dispatched to your lower level NSO, set up and your parent services or CFS service can be dispatched to your higher level or parent NSO, right? So.01:07:42Let's see one more very quick example before we move ahead. So in your parent service, you have the DNS service, right? And the NTP service in this case. So let's say if you.01:08:02Create this parent service here. This service will apply the template for the services for DNS service and NTP service. So if you see in your Python code, it's gonna look like this. Template apply DNS service and NTP service. So this.01:08:13So, parent service applies template for both of these services, and you can import your Yang and your child services and so on. So this is what the Yang would look like where you use the Yang of both of these services.01:08:31Now, the example that we saw, we had one use case, then we had another use case and a 3rd use case, and then we kind of had a parent service in here and a child service, and then what we did was we created a workflow, we created another parent service, and then we attached them. Now there could be.01:08:49Different ways of doing it, either.01:09:07You can have a parent service here, and do it or you can also have, you know, some actions and stuff like that. That is depending on how you want to design your services. Of course, you know, with whatever you use, there are challenges to consider. E.g., one of the important ones was, the.01:09:09Fact that it increases, of course, the complexity of the package, right? Now we need to check, e.g., what is happening to the ref count because we made so many changes. So that is something that you will have to maintain. So e.g., if I go.01:09:29Show full configuration, devices, device, of my device and then I have to literally say, ok, what is gonna happen to my service metadata? Is it gonna have a lot of changes, right? So this is something that you will have to see because now multiple services were involved in this. There were CFS service.01:09:44Like, you know, e.g., a complicated workflow, we had a grandparent CFS service which creates more CFS service based on the parameter that was given and then RFS service, which in turn applies the configuration to the devices. So you need to be careful of the map, so don't overuse it but know where to exactly use it. Of course, I said that it saves time, but.01:10:05It can also complicate time, right? Because depending on how you.01:10:24You create your services and how you layer it, the fast map time can also increase, so depending on how you design your service, and that's where designing service mindset really plays a big role. Then exactly what we spoke about managing sync states, service IDs, now you have to see that if.01:10:29My services are in sync and so on, right?01:10:49And then reconciliation becomes more difficult, so e.g. if you have a brownfield set up and you already have your devices with, certain info like certain configuration and so on and you're trying to reconcile it, it also becomes more complicated sometimes in stack services.01:10:52All right, double tapping quickly on what I meant when I said LSA is exactly this, where I have my upper node, which is our upper node or parent NSO, right? And this parent NSO manages other lower node nsos.01:11:12Which in turn manages your other services and devices. So this is what LSA setup looks like and we usually use it with our customers when they have a lot of devices, a lot of scale, that is necessary. Okay, now let's move on to the next topic. We don't.01:11:30We have a lot of time, so we will try to wrap this up and see some more components and the more we can see in some other of our.01:11:50You know, next sessions and so on. So let's quickly see what is meant by reactive fast map. Now, your reactive fast map has nothing really to do with your.01:11:59Fast map algorithm itself, right? So what happens here is you have your, and, and let's take an example of where can we really use reactive fast map and what it is meant by reactive fast map.01:12:15So let's take this as an example. We have NSO and then what we're trying to do here is just as an example, we are trying to create, we're trying to use an option where we create some virtual setups.01:12:30So e.g., your, you can use your VMware or something, and then you are trying to do the whole set up of a virtual NFBO sort of an architecture, right? Network function virtualized org orchestrated systems. So this is just as an example to show you what fast map reactive fastmap would look like.01:12:46Right? So now what happens here is the 1st thing that we do is when you want to do a setup like that, just think about it this way. As a service, I go and check that, ok, I want to create a VNF infrastructure, I want to create a virtual router. Now to do that.01:13:06You're kind of dependent on another external resource, right? You need to check that, ok, is it like, is it possible to create it? Is the infrastructure enough? Yes, my customer or my user wants to create it, but.01:13:25I have to check with someone else if it's possible or not, if there's enough storage, if it's if this the other setup is up to be spinned up. So there are two things that is happening here, right? There is I want to create and can I create and then I want to redeploy again. So let's take this step. So 1st step is basically.01:13:40Actually the service request arrives, which means that, ok, I want to create.01:14:00A VF a VNF service, right? 2nd one is service instance is created, but it requires VM resource 1st. So it says that, ok, I understand you want to create it, so the service request is created. But what I need from you is I need to check from my VM manager if.01:14:07I can create this service. And then.01:14:26Once the VM is ready, it reinvokes, so it goes here and says, ok, you can do it, acknowledgement done. In this case, this is the most important step where it says that now I need to redeploy my service, right? So here there is a service redeploy that happens.01:14:30Now in case of service redeploy, it says, ok, I have understood your request that I want to create. Yes, it can be created and redeployed. And now finally the services can be configured. So this action of redeploying of service right here, this is called reactive fast map.01:14:51Now let's see how it looks like in our code, right? In our code, e.g., you have, ok, I have this VNF service and based on a trigger, like we can use an action or a kicker, I say that I want to create a VNF service.01:15:08Now, when the kicker gets the information, it triggers it and then what happens in the background is that this service is, the service request is generated and the service when it checks with the VM manager, it's a re triggered or redeployed. And this redeploying is called reactive files.01:15:27Now let's do this, right?01:15:45Now, when you get that, when it says redeploy, that's when your VNF service is actually generated and so on. So your ESC here is the VM manager and your image or the device that is created self is this one. And this is what it looks like. Okay, let's take another example. Another example would be something very simple.01:15:48Say you have a set of VPN pools, right? Now you say that, ok, I have a simple service and my service just needs to check, if from the list of VPN pools, it could be IP pools or whatever.01:16:08If you have the correct IP that I can use. So what is happening, there are two things happening here. The 1st thing is I want to create a VPN pool and I want to use an ID from there and second that if the ID does not exist or if not ID, then I want to allocate it. So in this case, it's calling another service.01:16:25And then the service is getting redeployed. And when this happens, it's called your, your reactive fast map is basically triggered.01:16:44Okay, now we have 10 min to go, so we touched base on couple of other things. So e.g., we see that how I'm gonna go a little fast over this because so that we can cover like some of the important concepts and then if you want to double tap, we're always here. You can reach out to any of our.01:16:53Or also check out our NSO community page.01:17:13How do I handle network which is not in sync with NSO? Now we saw this complicated cases with reactive fastmap. We saw the cases with stack services, right? And you can see that it can happen that your services can go out of sync, and this is how you can check it, right? You can go and you can be like, ok, I want to check if.01:17:17With my, e.g., RFS service.01:17:37And let's oh maybe let's check our CFS service. Our CFS service deep dive into services, I want to see if it's in sync. Now it says it's in sync. I can check, ok, what is the deep check sync for this?01:17:40And it gives, it goes into the node, into the device level and sees, ok, is it in sync or not? Then I can check, ok, I want to check, get modifications. And I see, ok, these are all the modifications that were made, right? I can also check several other things.01:17:57Things like I can redeploy the service like I was saying. So it only makes changes to this service. Then you see we have reactive redeploy as well. Reactive redeploy of the, only the service logic and so on, right? So you have all of these different options that you can use within your service.01:18:17So let's say I'm gonna put it at get modifications and leave it here. So there are two concepts that we are kind of pretty aware of, right? We have the greenfield services where this is the 1st time that you're deploying a service, setting up new configurations and so on.01:18:37And then you are kind of coming up with a clean slate, right? But then in most of our cases.01:18:57We come up, we deal with legacy infrastructure, legacy network, which means that you already have your complicated network setups, you have your devices and so on, right? Now, how do you deal with situations like that?01:19:04In those sort of situations, you create the service based on the configuration or that that was already there. So let's take an ACL example that we had before. So let's say if we were in a situation like this where we had certain devices.01:19:21Which already, so let's say we have two devices. Okay, this device looks very different, but these are my routers, ok? So we had router one and router two. Now router one and router two, let's say already had some ACL services running.01:19:40And this is the brownfield setup that we already have. Now I bring in my NSO right here, right? So now we say that, ok, we want these devices to be managed by NSO.01:19:57And this is NSO. So when I connect to this, what I want to do is because I already had a ACL service here, I want to reconcile this configuration into this. So I want to already do some service discovery from the network.01:20:12This network that was already existing I want to do some service discovery from that. Now, how can I do it?01:20:32In this concept is called service reconciliation reconciliation. Now the 1st step is identifying of instances of a specific service type. Does it belong to ACL? Predefining the attributes and then taking it to a layer up. Now, this is called your service discovery and let's say most of the.01:20:38Use cases have this a lot, where you have, ok, when you're migrating from A to B, this is where you might need to use it, right? So usually what you do is.01:20:58You take it in your XML, you take all the configuration that is necessary, and then you map it to your service and you map it to your Yang in short. And this is how you kind of reconcile it. And then you have the option in your service like you can go to any service and then.01:21:07You have the option to kind of check it and, you know, redeploy it and things like that to kind of make a check on different aspects of this. Okay coming to our one of the last components, right? Now how when you define your Yang, how do you.01:21:24Make sure that, how should you define it? Like, should one single service have many instances that, e.g., like I have one ACL service and I add all the parameters to that or should I create multiple instance of the service? Like I can have ACL managed service, ACL reconcile service.01:21:41ACL.01:22:01Smart insert service. How do I create that sort of thing? So there are pros and cons, right? If you see single service instance, which means you can have multiple elements in one single service, let's say you have many elements here and all the elements go in this single service. Now, the rule of.01:22:03Come when you're coming to service design is that never let this list extend more than hundred parameters. That's where it gets more complicated and the service gets too difficult. So that's when you should say that, ok, when it's extending.01:22:22Beyond this, I need to create multiple service instances because this leads to bad performances and like the debugging becomes very, very complex, right? Multiple instances, like I was telling you, you can have, ok, now I say that, ok, my ACL service is getting too complicated because I'm using.01:22:36Way too many things here. What I can do is I can be like, ok, I want a ACL reconciled service, which has certain components, I want ACL managed service, ACL, a smart insert service and different kinds of service that I can create. So each service will have a YANG model and it will have.01:22:56Only minimal number of components in that yang module, right? Which will make your service management easier and then you can, you know, see, ok, how to manage the service, check different things as part of the service and so on.01:23:16And these are like some of the important things that you will want to check when you're creating such complicated services, and then this just makes your service creation journey much, much, much easier. So this is basically it for our session today. We have a lot of material to cover.01:23:32Right, we can go into a lot of depth and details and that would be very interesting.01:23:52That we'll be covering as part of our next sessions as well. E.g., if you've not seen it already, what you might wanna see is that our next session is going to be about, this is the highlight from our next session, right? So our next session is gonna be.01:23:58On our back practices, like how do you do rollback and triple AAA and all of that? So yeah, if you haven't registered yet register for that as well and then we're always here so feel free to reach out and we can deep dive into any of the topics of NSO as you want.01:24:20Okay, so thank you so much for today. Thank you, thank you so much everyone for, for your assistance today. If you have any questions, just let me quickly check the chat, but I think we are all covered. I'll just put here in the chat also the link.01:24:36To the community page where you can file the recording from previous sessions and also to the current one in case you would like to review and see you next week. Thank you very much. Bye bye. Thank you Sonia. Bye bye.01:24:56

About this Video

Author : Cisco Customer Success

Uploaded : May 22, 2026

Service ProviderNetwork Service Orchestrator
AI summary icon

AI summary

Cisco Network Services Orchestrator recording explores how to build, enable, and operate NSO services that automate multi vendor configuration. It demonstrates service anatomy—YANG models, Python or Java logic, device templates, package metadata, and testing—plus RESTCONF integrations and live CLI demos. See FastMap push only diffs, ref counts protect shared resources, and Stacked Services link CFS and RFS for modular reuse. Watch how Reactive FastMap coordinates external systems, how to check sync, redeploy, and reconcile brownfield devices, and how LSA organizes scale across multiple NSO nodes. Real ACL and VLAN examples show commit dry runs, edits, and safe deletes that minimize errors.

  • Learn to design and deploy services with YANG, templates, and Python logic.
  • See FastMap, Reactive FastMap, and Stacked Services reduce change risk and time.
  • Understand brownfield reconciliation, sync checks, and LSA scaling for complex networks.