Files
lg/docs/requirements.md

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.