Version | 24.12.1 |
---|
Join the community on discord
- 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.
- 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.
- 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.
- 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.
- 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.
- Revision Control (Restore/Revert)
- Deviations & Remediation
"In the similar spirit of reducing the barriers that we did with SR Linux, we distribute the free EDA version by publishing EDA components in the public container registry. Leaving you no excuses not to try it π§ " - Roman Dodin
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 π»
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 theeda
Namespace - The topology is found in the
Main
screen Topologies
are where we can find defined topologies (note that you will need to double-click the topology to open the visualization)- The
i
opens theInformation
screen. - Click
leaf1
to 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 Configuration
to 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 View
from the three vertical dots. This is where the various options were set for this node. - Click
Edit
in the bottom right corner of theConfiguration View
and notice the yaml pane - you can make changes to the yaml or the gui in this screen and they will update eachother. ChangeoperatingSystem
tosros
and 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.
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
Fabric
app 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
Fabric
app 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
Fabric
app 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 System
for the iBGP session must be configured. Additionally,Route Reflector
,RR IP Addresses
,RR Client Nodes
andRR Nodes
must 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-fabric
in theName
field - In the
Labels
drop-down, chooseAdd
at the top - In the
Add
pop-up, typeeda.nokia.com/pod
for theKey
andpod1
for theValue
and click theAdd
button - In the
Specification
section, use the drop-down menu to selectsystemipv4-pool
for theIPv4 Pool - System IP
option - Do the same for
IPv6 Pool - System IP
but selectsystemipv6-pool
instead - In the
Specification | Leafs
section, clickAdd a Label Selector
and entereda.nokia.com/role=leaf
(as shown in the image above) - In the
Specification | Spines
section, clickAdd a Label Selector
and entereda.nokia.com/role=spine
- In the
Specification | InterSwitchLinks
section, use the drop-down menu to selectipv4-pool
for theIPv4 Pool - InterSwitch Link IP
option - Do the same for
IPv6 Pool - InterSwitch Link IP
but selectipv6-pool
instead - Click
Add a Label Selector
for theLink Selector
option and entereda.nokia.com/role=interSwitch
- In the
Specification | Underlay Protocol
section, use the drop-down to selectEBGP
in theProtocol
option - Use the drop-down to select
asn-pool
in theAutonomous System Pool
option - In the
Specification | Overlay Protocol
section, use the drop-down to selectIBGP
in theProtocol
option - In the
Specification | Overlay Protocol | BGP
section, type65500
in theAutonomous System
option - Type
1.1.1.1
in theCluster ID
option - Click
Add a Label Selector
in theRoute Reflector Node Selector
and entereda.nokia.com/role=spine
- Click
Add a Label Selector
in theRoute Reflector Client Node Selector
and entereda.nokia.com/role=leaf
- Click the
Add To Transaction
button in the lower right corner.
Validating the Fabric configuration:
- Click on the
Transaction
basket 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
X
at the bottom of theTransactions
window to discard the transaction.
Faster! Better!
- Open the underlay_fabric.yaml file.
- Copy the contents of the file (
ctrl-a
followed byctrl-c
) or (command-a
followed bycommand-c
) on mac - Click
Create
in theFabrics
window again. - Instead of wasting time filling out everything manually, we will just paste the file into the
YAML
window- Click into the
YAML
window, 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 Transaction
immediately - In the
Transaction Basket
, clickDry Run
again, followed byDiffs
and notice that we have all the same configurations from before, but we did it in only a few seconds this time. - Click
Commit
to 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.
EDA supports queries using a syntax that is collectively referred to as the EDA Query Language, or EQL.
Based on the above image:
- The
Queries
can be found in theTools
subsection. - The drop-down menu allows you to select either
EQL Query
orNatural Language
Natural Language Queries
Prerequisite: API key configured in the
.spec.llm
context of yourEngineConfig
. Refer to the install guide for more details.
- Start by selecting
Natural Language
from theQuery Builder
drop-down menu. - In the query text box, type
show me all ethernet-1/1 interfaces
and click theQuery
button. - You will see the details for
ethernet-1/1
on 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 leaf1
to the end of your query string so that it saysshow me all ethernet-1/1 on leaf1
and click theQuery
button - 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 Query
from theQuery Builder
drop-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.interface
and click theQuery
button. - In the results window, you will see every
interface
on everynode
in everynetwork-instance
in 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 theQuery
button - In the results window, you only see
leaf1
interfaces 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 theQuery
button.
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.
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 Store
is located in theSystem Administration
view - The
App Store
is labeled asStore
in theApp Management
subsection - The
Notifier
app is anIntegrations
category - The
Notifier
app provides the functionality for ChatOps integration
App Install
- Simply click the
Install 2.0
button to install the app
Notifier Configuration
- The
Notifier
app now shows up in theMain
view - Click on
Provider
to enter theProvider
window - Click the
Create
button 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 Transaction
button - Click the
Notifier
button on the left side to enter theNotifier
window - Click the
Create
button in the upper right - Copy and paste this Notifier YAML into the YAML box just as before
- Click the
Add To Transaction
button - Click the
Transaction Basket
and 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.
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