Nokia Event-Driven Automation (EDA) is a next-generation data center network automation platform designed to ensure reliable network operations, simplify the entire network management lifecycle, and adapt quickly to evolving demandsβwhile achieving human error zero. EDA is a modern, Kubernetes-based platform that simplifies the data center network operations across all stagesβfrom Day 0 design and Day 1 deployment to Day 2+ operations. It abstracts the complexity of multivendor environments, enabling real-time provisioning, live streaming telemetry, and integration with on-prem cloud platforms.
Please contact Mohammad Zaman, Amit Kumar, Frank Cordova if you have any questions.
Join the community on discord
The workshop will primarily focus on getting familiar with the key concepts in EDA. As such, we are not going to spend a lot of time diving deep into the inner workings of EDA. We hope that participating in this workshop will whet your appetite. Since EDA is free (as in πΊ) to try, you can easily spin up your own installation and get as wild as you want!
When you are ready to spin up your own playground... Try EDA!
We will be building our fabric and overlay on top of the base topology that is instantiated when you start the Try EDA! Playground, but you are encouraged to get as creative as your computer resources will allow π»
- TopoNodes
- TopoLinks
- Topologies
- Further Reading docs.eda.dev and documentation.nokia.com
π Key Takeaway: The playground operates using the same mechanism that powers digital twin capabilities, enabling you to test and validate any changes before applying them to the physical network.
The topology is the foundation of the layers of abstraction EDA uses to implement the declared intent of the engineer. It is made up of a number of nodes, interfaces and links.
The default topology in the playground (and the one we are using) is depicted in this image:
In EDA, the topology is a tree made up of nodes and links. Each tier of the tree can contain multiple resources and relationships between tiers is drawn based on the links π²
The playground topology when depicted in this abstracted way looks like this:
You may have noticed that the abstraction image refers to the nodes as TopoNodes and the links as TopoLinks. In EDA, a leaf or spine switch would be a TopoNode and the circuit between the leaf and spine would be a TopoLink.
Based on the image above:
- This drop-down allows you to select the
Namespace, this topology is in theedaNamespace - The topology is found in the
Mainscreen Topologiesare where we can find defined topologies (note that you will need to double-click the topology to open the visualization)- The
iopens theInformationscreen. - Click
leaf1to be able to see all of the information about the node, take a moment to look at all of the available information about this node.
Next, look through the options on the left side of the screen to find Nodes in the Targets subsection.
- You will see a list of the three nodes in our topology [ spine, leaf1, leaf2 ]
- Click on the three vertical dots on the far right-hand side of one of the nodes.
- Click
Node Configurationto see the full configuration of the node as it is currently deployed. You will be able to come back to look at this after other steps to be able to see how the configuration changes as you build out the fabric. Close this view when you are done. - Now click
Configuration Viewfrom the three vertical dots. This is where the various options were set for this node. - Click
Editin the bottom right corner of theConfiguration Viewand notice the yaml pane - you can make changes to the yaml or the gui in this screen and they will update eachother. ChangeoperatingSystemtosrosand notice that the other side also changes. Click cancel in the lower left corner or the X in the upper right when you are done here, and then click OK.
The Links and Interfaces sections are further down the left side in the Topology section. Spend some time to see what you can find in these.
Topologies can be built manually, but it is far more common to generate the topology files using one of the methods described in the docs.eda.dev
To challenge yourself, draw your topology on a napkin and then use the tools to generate your topology in EDA to match your drawing.
- Building Blocks
- Manual Configuration
- Template Deployment
- Further Reading docs.eda.dev
π Key Takeaway: The declarative, intent-based approach provided by EDA allows an engineer to validate and implement an entire fabric in less time than it takes an engineer to log into a single switch.
The Fabric app was designed to make deployment of data center fabrics of all sizes much faster and without errors. It is able to automate the deployment of the fabric components such as IP addresses, VLANs and both the underlay and overlay network protocols.
The Fabric app supports highly flexible deployment models, enabling you to tailor the configuration of your data center fabric to suit different architectural needs. The data center can be a single fabric (as we will demonstrate in our playground), or it could be divided up into any number of fabrics which can then be interconnected to form a cohesive managed set of fabrics.
Each element in the topology is able to be assigned any number of labels. The labels are able to be used to filter and select elements to determine how to apply configurations to the element based on their role in the network.
Example Label Selectors:
- Leaf Node Selector:
eda.nokia.com/role=leaf - Spine Node Selector:
eda.nokia.com/role=spine - Fabric Selector:
eda.network.com/pod=pod1
System/Loopback Interfaces
- IPv4 Assignment: IPv4 addresses must be assigned to the primary loopback interface (system or loopback) of each node.
- IPv6 Assignment: Optionally, IPv6 addresses can also be configured on these interfaces.
TopoLink Interfaces:
- The
Fabricapp requires the configuration of either IPv4, IPv6 addresses or the use of IPv6 unnumbered on the interfaces selected by the TopoLink label selector under the InterSwitchLinks property, assuring that all connections with the network are addressed.
IP Allocation Pools:
- IP addresses can be automatically assigned from the specified IP Address allocation pools. Separate pools are commonly used for system interfaces and ISL (inter-switch link) interfaces.
Underlay Protocol:
- The
Fabricapp currently supports eBGP underlay. ISL (inter-switch links) and ASNs will be configured using defined IP/ASN allocation pools.
Routing Policies:
- If not defined manually, the
Fabricapp will automatically generate the requiredRoutingPolicies
Overlay Protocol:
- eBGP: if eBGP is selected, the existing underlay sessions will be reused but with the added address-families to support the overlay.
- iBGP: if iBGP is selected,
Autonomous Systemfor the iBGP session must be configured. Additionally,Route Reflector,RR IP Addresses,RR Client NodesandRR Nodesmust be configured.
Based on the image above:
- Click on
Fabrics - Click on
Create
This will open the Fabric Edit window.
Using the image above as a reference:
- Instead of scrolling to find where to enter configurations, you can type the name of the element and it will take you right there.
- This is an example of having to manually type a specific entry. Be sure to type these carefully as they are free-form.
Filling out the Fabric UI form:
- Starting at the top, type
workshop-fabricin theNamefield - In the
Labelsdrop-down, chooseAddat the top - In the
Addpop-up, typeeda.nokia.com/podfor theKeyandpod1for theValueand click theAddbutton - In the
Specificationsection, use the drop-down menu to selectsystemipv4-poolfor theIPv4 Pool - System IPoption - Do the same for
IPv6 Pool - System IPbut selectsystemipv6-poolinstead - In the
Specification | Leafssection, clickAdd a Label Selectorand entereda.nokia.com/role=leaf(as shown in the image above) - In the
Specification | Spinessection, clickAdd a Label Selectorand entereda.nokia.com/role=spine - In the
Specification | InterSwitchLinkssection, use the drop-down menu to selectipv4-poolfor theIPv4 Pool - InterSwitch Link IPoption - Do the same for
IPv6 Pool - InterSwitch Link IPbut selectipv6-poolinstead - Click
Add a Label Selectorfor theLink Selectoroption and entereda.nokia.com/role=interSwitch - In the
Specification | Underlay Protocolsection, use the drop-down to selectEBGPin theProtocoloption - Use the drop-down to select
asn-poolin theAutonomous System Pooloption - In the
Specification | Overlay Protocolsection, use the drop-down to selectIBGPin theProtocoloption - In the
Specification | Overlay Protocol | BGPsection, type65500in theAutonomous Systemoption - Type
1.1.1.1in theCluster IDoption - Click
Add a Label Selectorin theRoute Reflector Node Selectorand entereda.nokia.com/role=spine - Click
Add a Label Selectorin theRoute Reflector Client Node Selectorand entereda.nokia.com/role=leaf - Click the
Add To Transactionbutton in the lower right corner.
Validating the Fabric configuration:
- Click on the
Transactionbasket in the upper right corner (it will be blue with a transaction in it) - Click on
Dry Run - Click on
Diffs - On the left side, all of the configuration changes can be viewed for each of the elements - take some time to look through the configurations that have been generated from this basic intent.
- Once you are properly amazed, click
Cancel - Click the
Xat the bottom of theTransactionswindow to discard the transaction.
Faster! Better!
- Open the underlay_fabric.yaml file.
- Copy the contents of the file (
ctrl-afollowed byctrl-c) or (command-afollowed bycommand-c) on mac - Click
Createin theFabricswindow again. - Instead of wasting time filling out everything manually, we will just paste the file into the
YAMLwindow- Click into the
YAMLwindow, and doctrl-a/command-a(depending on your OS) hitbackspace/delete - Now that we have a blank window, do
ctrl-v/command-v(depending on your OS) to paste the file contents into the window.
- Click into the
- Notice how all of the fields in the form became populated?
- Now we can click
Add to Transactionimmediately - In the
Transaction Basket, clickDry Runagain, followed byDiffsand notice that we have all the same configurations from before, but we did it in only a few seconds this time. - Click
Committo push the configurations to the network.
We used a very basic set of intents to create this fabric. Although it is fully viable, in most cases you will be configuring your allocation pools and fabrics to match your own network.
Read through the fabric docs at docs.eda.dev and create some of your own pools and labels and apply them to a more customized fabric configuration.
- EQL
- Natural Language
- edactl
- e9s
- Further Reading docs.eda.dev and documentation.nokia.com
π Key Takeaway: The EQL enables real-time querying and parsing of the entire state of managed devices, supplying data for visualization and streaming to external applications. This gives engineers a unified view of the managed network, treating it as a single cohesive resource.
EDA supports queries using a syntax that is collectively referred to as the EDA Query Language, or EQL.
Based on the above image:
- The
Queriescan be found in theToolssubsection. - The drop-down menu allows you to select either
EQL QueryorNatural Language
Natural Language Queries
Prerequisite: API key configured in the
.spec.llmcontext of yourEngineConfig. Refer to the install guide for more details.
- Start by selecting
Natural Languagefrom theQuery Builderdrop-down menu. - In the query text box, type
show me all ethernet-1/1 interfacesand click theQuerybutton. - You will see the details for
ethernet-1/1on each of the nodes appear in the results window. - Notice that the EQL representation of the query you just performed (
.namespace.node.srl.interface where (name = "ethernet-1/1")) is displayed directly below the query text box - Now, add
on leaf1to the end of your query string so that it saysshow me all ethernet-1/1 on leaf1and click theQuerybutton - Notice that the EQL representation is updated and now you only see the leaf1 node in the results window.
EQL Queries
- Start by selecting
EQL Queryfrom theQuery Builderdrop-down menu. - In the query text box, type
.namespace.and notice that a contextual list of options appears below. - Choose
.namespace.node.srl.network-instance.interfaceand click theQuerybutton. - In the results window, you will see every
interfaceon everynodein everynetwork-instancein the topology. - Filter your results by adding
where (.namespace.node.name = "leaf1")to the end of the query string so that it now shows.namespace.node.srl.network-instance.interface where ( .namespace.node.name = "leaf1")and click theQuerybutton - In the results window, you only see
leaf1interfaces now.
Thinking of the entire topology as a single resource that can be queried in real-time should be exciting. Troubleshooting just became that much easier and faster.
- In the query text box, enter
.namespace.node.srl.interface.traffic-rate fields [sum(in-bps) as "In", sum(out-bps) as "Out"]and click theQuerybutton.
This shows you a real-time aggregate traffic counter on the entire network! This exemplifies the value of using streaming telemetry!
EQL is extremely flexible and can do far more than what we have tried so far. Take a look at the documentation.nokia.com for more details.
In addition to the EDA GUI access, there are other text-based methods available for performing queries: e9s and edactl
Take some time to give those two tools a try. Try creating some more advanced and interesting queries of your own.
- App Store
- Notifier
- Further Reading docs.eda.com
π Key Takeaway: Extending the functionality of EDA is just a click away with the App Store. Integrating ChatOps into your operations workflow is just that simple.
Many teams rely on messaging applications such as discord or slack for critical communications and notifications.
The Notifier app, available in the App Store allows for easy integration.
Based on the image above:
- The
App Storeis located in theSystem Administrationview - The
App Storeis labeled asStorein theApp Managementsubsection - The
Notifierapp is anIntegrationscategory - The
Notifierapp provides the functionality for ChatOps integration
App Install
- Simply click the
Install 2.0button to install the app
Notifier Configuration
- The
Notifierapp now shows up in theMainview - Click on
Providerto enter theProviderwindow - Click the
Createbutton in the upper right - Copy and paste this Provider YAML into the YAML box just as before in the fabric creation section
- Click the
Add To Transactionbutton - Click the
Notifierbutton on the left side to enter theNotifierwindow - Click the
Createbutton in the upper right - Copy and paste this Notifier YAML into the YAML box just as before
- Click the
Add To Transactionbutton - Click the
Transaction Basketand clickCommit
To see the ChatOps integration, join the EDA Workshop Discord
Try to trigger some changes in EDA to see the notifications show up in the discord server.
Our Notifier is currently set to send every notification. Refer to the docs.eda.dev to see how to set up filters to deliver only specific notifications.
- Revision Control (Restore/Revert)
- Deviations & Remediation
- EQL
- Further Reading documentation.nokia.com
π Key Takeaway: Creating custom dashboards in EDA allows you to tailor the data to display information important to your organization.
The ability to create custom dashboards allows an engineer to see a visual representation of significant information in just a glance.
Each of the dashlets are described in detail in the documentation.nokia.com
Create your own custom dashboard by following the steps laid out in the documentation.nokia.com









