-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Summary
Currently, the gRPC transport implementation supports UTCP (Universal Tool Call Protocol) for tool registration and execution. This issue tracks the addition of gRPC gNMI (gRPC Network Management Interface) support to enable telemetry data retrieval and configuration management of network devices.
Motivation
gNMI is an industry-standard specification for network device management and telemetry streaming. Adding gNMI support would enable:
- Real-time telemetry data collection from network devices
- Configuration push/pull operations
- Subscription-based monitoring with streaming responses
- Compatibility with standard gNMI-compliant devices and simulators
- Vendor-neutral network management capabilities
Proposed Changes
1. gNMI Protocol Buffer Definitions
- Add gNMI service definitions (
gnmi.proto) alongside existing UTCP definitions - Include gNMI RPC operations:
Get- retrieve current stateSet- modify configurationSubscribe- streaming telemetry subscriptionsCapabilities- retrieve device capabilities
2. GrpcTransport Enhancements
- Extend
GrpcTransportto support both UTCP and gNMI service types - Add service type detection/routing logic
- Implement gNMI-specific request handling
3. New GrpcProvider Configuration
- Add
service_typefield toGrpcProvider(defaults to "utcp" for backward compatibility) - Support "gnmi" as an alternative service type
- Allow provider-specific gNMI configuration (e.g., origin, target specifications)
4. gNMI Operations Implementation
subscribe_telemetry()- Stream telemetry data from devicesget_config()- Retrieve device configurationset_config()- Apply configuration changesget_capabilities()- Query device capabilities- Proper error handling for gNMI-specific status codes
5. Streaming Integration
- Leverage existing
StreamResultinfrastructure for telemetry subscriptions - Handle gNMI subscription lifecycle (subscribe, receive, unsubscribe)
- Parse and deserialize gNMI
Updatemessages
6. Authentication & TLS
- Extend existing auth mechanisms to support gNMI requirements
- Ensure proper metadata handling for gNMI-specific headers
- Support mutual TLS for device authentication
Implementation Considerations
- Backward Compatibility: All changes should maintain existing UTCP functionality
- Testing: Add comprehensive unit tests for gNMI operations with mock gNMI servers
- Documentation: Update provider configuration docs with gNMI examples
- Error Handling: Provide clear error messages for gNMI-specific failures
- Performance: Consider connection pooling for multiple gNMI subscriptions
Acceptance Criteria
- gNMI protocol buffers are generated and integrated
-
GrpcTransportsupports service type routing (UTCP vs gNMI) - Core gNMI operations (Get, Set, Subscribe) are implemented
- Streaming telemetry works end-to-end
- Unit tests cover gNMI functionality with mock servers
- TLS and authentication work with gNMI services
- Documentation updated with gNMI examples and configuration
Related Issues
None currently
Additional Context
gNMI specification: https://github.com/openconfig/gnmi/blob/master/proto/gnmi/gnmi.proto
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels