Implementation Under Test (IUT) Plugins¤
Plugin Type: IUT Service Verified Source Location:
plugins/services/iut/
Overview¤
Implementation Under Test (IUT) plugins represent the actual protocol implementations being evaluated within the PANTHER framework. These implementations can be tested for standards conformance, performance characteristics, or security vulnerabilities.
IUT plugins provide a standardized interface for testing network protocol implementations in isolated container environments, enabling PANTHER to test various implementations without requiring local installation of implementation dependencies.
Architecture¤
Design Principles¤
- Container Isolation: Each implementation runs in its own Docker container to prevent environment conflicts
- Template-Based Configuration: Uses Jinja2 templates for generating implementation-specific configurations
- Event-Driven Architecture: Emits structured events during test execution for monitoring and debugging
- Role-Based Testing: Supports both client and server role testing with dynamic role assignment
- Version Management: Automatic discovery and validation of protocol version configurations
Core Components¤
Key Classes¤
IImplementationManager: Abstract base class defining the core contract for all IUT implementationsIUTServiceManagerMixin: Provides common initialization patterns and Docker integrationIUTManagerEventMixin: Handles event emission and monitoring during test execution
Available Plugins¤
QUIC Protocol Implementations¤
All QUIC implementations inherit from BaseQUICServiceManager or specialized subclasses:
| Implementation | Language | Base Class | Description | Documentation |
|---|---|---|---|---|
| picoquic | C | BaseQUICServiceManager | Mature, RFC-compliant implementation | Documentation |
| aioquic | Python | PythonQUICServiceManager | Async/await, HTTP/3 support | Documentation |
| quiche | Rust | RustQUICServiceManager | Memory safety, performance | Documentation |
| quinn | Rust | RustQUICServiceManager | Modern async implementation | Documentation |
| lsquic | C | BaseQUICServiceManager | LiteSpeed optimized | Documentation |
| quic_go | Go | BaseQUICServiceManager | Goroutine-based | Documentation |
| mvfst | C++ | BaseQUICServiceManager | Facebook's implementation | Documentation |
| quant | C | BaseQUICServiceManager | Research-focused | Documentation |
| picoquic_shadow | C | BaseQUICServiceManager | Shadow NS integration | Documentation |
See the QUIC implementations overview for detailed comparison.
Other Protocol Implementations¤
| Plugin | Protocol | Base Class | Description | Documentation |
|---|---|---|---|---|
| ping_pong | MINIP | BaseMinipServiceManager | Simple ping-pong service for basic testing | Documentation |
Common Configuration¤
IUT plugins typically share these configuration patterns:
services:
- name: "quic_implementation"
type: "iut"
implementation: "quic/picoquic"
config:
binary_path: "/usr/local/bin/picoquicdemo"
server_port: 4443
certificate_file: "cert.pem"
private_key_file: "key.pem"
Integration Points¤
IUT plugins integrate with:
- Protocol plugins: They implement specific protocol versions/behaviors
- Environment plugins: They run within specific execution and network environments
- Tester plugins: They are validated by tester plugins
Development¤
To create a new IUT plugin, see the Adding IUT guide.