2.5 KiB
2.5 KiB
Looking Glass
Problem Statement
Network administrators often face challenges when troubleshooting issues from outside a network. To address this, a Looking Glass (LG) can be deployed. The LG allows external users to issue commands for network troubleshooting. For example, an administrator can:
- Perform pings
- Execute traceroutes or MTR commands
- Display BGP routes for a specific IP address
- Check the status of BGP sessions
This functionality enables administrators to troubleshoot network issues more effectively.
Functional Requirements
- Security: The LG must be secure to prevent unauthorized access and ensure data integrity.
- User-Friendliness:
- The LG frontend should provide command history for user reference.
- The LG frontend should provide graphical output for BGP routes to enhance understanding.
- Deployment and Maintenance: The LG must be easy to deploy and maintain, minimizing the administrative burden.
- Integration: The LG must interact with Bird2 for BGP functionalities.
- Multi-Router Support: The LG must support multiple routers to facilitate broader network management.
- API integration: The LG backend should have a way to integrate with chatbots to facilitate Chat-Ops.
Technical Requirements
- Input Validation: The LG must only accept strictly validated user input to prevent injection attacks and ensure command integrity.
- Restricted Mode Operation: The LG must operate in restricted mode with Bird to limit the scope of commands executed.
- Performance:
- The LG frontend must load quickly to enhance user experience.
- The LG must stream command output in real-time for immediate feedback.
- The LG frontend must be responsive across different devices and screen sizes.
- Library and Framework Usage: The LG must utilize a minimal number of libraries and frameworks to reduce complexity and potential vulnerabilities.
- Configuration: The LG must support configuration through a simple config file or environment variables for ease of setup.
- BGP Community Mapping: The LG must map BGP communities to user-friendly descriptions, such as "Route originated internally" or "Route learned from upstream," to improve clarity for users.
- Rate Limiting: The LG should support rate limiting to prevent abuse and ensure fair usage.
- Logging: The LG needs to log requests for auditing and troubleshooting purposes.
- Containerization: The LG should support containerized deployments to facilitate scalability and isolation.
- API: the lg should have a simple API.