-
Notifications
You must be signed in to change notification settings - Fork 40
Home
The EOS Software Development Kit (EOS SDK) lets you program native, high-performance apps that run on your Arista switch. These apps, or "agents," harness the full power of EOS, including event-driven, asynchronous behavior, high availability, and complete access to both Linux and EOS's APIs.
Programs that use the SDK are extremely powerful and flexible; you can use the functionality the SDK exposes to produce a diverse set of applications. For example, you can build agents that:
- Provide fault tolerance by reacting to congestion events and link failures
- Connect to a centralized server or controller for persistent, unified device management.
- Implement custom routing or tunneling protocols using IP routes, MPLS actions, and more
- Monitor network health by sending probe packets and measuring their latency and RTT variance.
- Programmatically handle VM migrations by adding and removing ACLs and QoS policies.
- Apply variable switchport configuration based off of a neighbor's LLDP properties
- Protect against DDoS attacks through selective flow-based filtering
- Aggregate counters locally and periodically send fine-grained counter data to another server, thereby avoiding slow and brittle SNMP monitoring solutions.
- ... and so much more.
All of these options are possible because EOS SDK uses the same fundamental building blocks as built-in Arista agents, meaning your custom code inherits all of EOS's reliability and flexibility features for free. Thanks to a modular architecture and unfettered access to the underlying Linux system, SDK agents are compatible across all Arista platforms and integrate seamlessly with custom CLIs, configure replace, hitless supervisor failover, system logging, resource management, and more.
Agents are written using C++ or Python, and have access to a wide variety of stable APIs, along with full access to the remaining EOS state. To get started with the SDK, you can follow along with the Quickstart guide.
Have a comment, question, or found a typo? Open an issue!