Add enhanced configuration templates for adaptive I/O features
- Introduced a comprehensive configuration template (config-adaptive.toml) for adaptive I/O, enabling improved upload/download dual stack with various performance optimizations, security settings, and network resilience features. - Created a test configuration template (test-config.toml) mirroring the adaptive configuration for testing purposes. - Added a simple test configuration (test-simple-config.toml) for basic adaptive features testing with essential parameters. - Included an empty Jupyter notebook (xep0363_analysis.ipynb) for future analysis related to XEP-0363.
This commit is contained in:
260
templates/config-adaptive.toml
Normal file
260
templates/config-adaptive.toml
Normal file
@ -0,0 +1,260 @@
|
||||
# Enhanced Configuration Template for Adaptive I/O
|
||||
# This configuration enables the improved upload/download dual stack
|
||||
|
||||
[server]
|
||||
listen_address = "0.0.0.0:8080"
|
||||
storage_path = "/data/uploads"
|
||||
metricsenabled = true
|
||||
metrics_path = "/metrics"
|
||||
max_upload_size = "10GB"
|
||||
max_header_bytes = 1048576
|
||||
deduplication_enabled = true
|
||||
file_naming = "original"
|
||||
networkevents = true
|
||||
precaching = true
|
||||
|
||||
# Enhanced performance configuration
|
||||
[performance]
|
||||
# Adaptive buffer management
|
||||
adaptive_buffers = true
|
||||
min_buffer_size = "16KB"
|
||||
max_buffer_size = "1MB"
|
||||
buffer_optimization_interval = "30s"
|
||||
initial_buffer_size = "64KB"
|
||||
|
||||
# Client profiling and optimization
|
||||
client_profiling = true
|
||||
profile_persistence_duration = "24h"
|
||||
connection_type_detection = true
|
||||
performance_history_samples = 100
|
||||
|
||||
# Memory management
|
||||
max_memory_usage = "512MB"
|
||||
gc_optimization = true
|
||||
buffer_pool_preallocation = true
|
||||
|
||||
[uploads]
|
||||
allowed_extensions = ["jpg", "jpeg", "png", "gif", "mp4", "mov", "avi", "pdf", "doc", "docx", "txt"]
|
||||
chunked_uploads_enabled = true
|
||||
chunk_size = "adaptive" # Can be "adaptive", "fixed:2MB", etc.
|
||||
resumable_uploads_enabled = true
|
||||
sessiontimeout = "1h"
|
||||
maxretries = 3
|
||||
|
||||
# Adaptive chunking parameters
|
||||
min_chunk_size = "256KB"
|
||||
max_chunk_size = "10MB"
|
||||
chunk_adaptation_algorithm = "predictive" # "fixed", "adaptive", "predictive"
|
||||
|
||||
# Upload optimization
|
||||
concurrent_chunk_uploads = 3
|
||||
upload_acceleration = true
|
||||
network_aware_chunking = true
|
||||
|
||||
[downloads]
|
||||
allowed_extensions = ["jpg", "jpeg", "png", "gif", "mp4", "mov", "avi", "pdf", "doc", "docx", "txt"]
|
||||
chunked_downloads_enabled = true
|
||||
chunk_size = "adaptive"
|
||||
resumable_downloads_enabled = true
|
||||
range_requests = true
|
||||
|
||||
# Download optimization
|
||||
connection_multiplexing = false
|
||||
bandwidth_estimation = true
|
||||
quality_adaptation = true
|
||||
progressive_download = true
|
||||
|
||||
# Cache control
|
||||
cache_control_headers = true
|
||||
etag_support = true
|
||||
last_modified_support = true
|
||||
|
||||
[streaming]
|
||||
# Advanced streaming features
|
||||
adaptive_streaming = true
|
||||
network_condition_monitoring = true
|
||||
throughput_optimization = true
|
||||
latency_optimization = true
|
||||
|
||||
# Resilience features
|
||||
automatic_retry = true
|
||||
exponential_backoff = true
|
||||
circuit_breaker = true
|
||||
max_retry_attempts = 5
|
||||
retry_backoff_multiplier = 2.0
|
||||
|
||||
# Quality adaptation
|
||||
quality_thresholds = [
|
||||
{ name = "excellent", min_throughput = "10MB/s", max_latency = "50ms" },
|
||||
{ name = "good", min_throughput = "1MB/s", max_latency = "200ms" },
|
||||
{ name = "fair", min_throughput = "100KB/s", max_latency = "500ms" },
|
||||
{ name = "poor", min_throughput = "10KB/s", max_latency = "2s" }
|
||||
]
|
||||
|
||||
[security]
|
||||
secret = "your-hmac-secret-key-here"
|
||||
enablejwt = false
|
||||
jwtsecret = "your-jwt-secret-here"
|
||||
jwtalgorithm = "HS256"
|
||||
jwtexpiration = "24h"
|
||||
|
||||
[logging]
|
||||
level = "info"
|
||||
file = "/var/log/hmac-file-server.log"
|
||||
max_size = 100
|
||||
max_backups = 3
|
||||
max_age = 28
|
||||
compress = true
|
||||
|
||||
[network_resilience]
|
||||
# Enhanced network resilience with multi-interface support
|
||||
enabled = true
|
||||
fast_detection = true
|
||||
quality_monitoring = true
|
||||
predictive_switching = true
|
||||
mobile_optimizations = true
|
||||
|
||||
# Multi-interface configuration
|
||||
multi_interface_enabled = true
|
||||
interface_priority = ["eth0", "wlan0", "wwan0", "ppp0"]
|
||||
auto_switch_enabled = true
|
||||
switch_threshold_latency = "500ms"
|
||||
switch_threshold_packet_loss = 5.0
|
||||
quality_degradation_threshold = 0.3
|
||||
max_switch_attempts = 3
|
||||
switch_detection_interval = "2s"
|
||||
|
||||
# Timing configuration
|
||||
detection_interval = "1s"
|
||||
quality_check_interval = "5s"
|
||||
max_detection_interval = "10s"
|
||||
|
||||
# Thresholds
|
||||
rtt_warning_threshold = "200ms"
|
||||
rtt_critical_threshold = "1s"
|
||||
packet_loss_warning = 2.0
|
||||
packet_loss_critical = 10.0
|
||||
stability_minimum = 0.8
|
||||
|
||||
# Mobile-specific optimizations
|
||||
mobile_buffer_size = "32KB"
|
||||
mobile_chunk_size = "512KB"
|
||||
mobile_retry_multiplier = 1.5
|
||||
mobile_timeout_multiplier = 2.0
|
||||
|
||||
# Interface-specific optimization settings
|
||||
[network_interfaces]
|
||||
ethernet = { buffer_size = "1MB", chunk_size = "10MB", timeout_multiplier = 1.0, priority = 10 }
|
||||
wifi = { buffer_size = "512KB", chunk_size = "5MB", timeout_multiplier = 1.2, priority = 20 }
|
||||
lte = { buffer_size = "256KB", chunk_size = "2MB", timeout_multiplier = 2.0, priority = 30 }
|
||||
cellular = { buffer_size = "128KB", chunk_size = "512KB", timeout_multiplier = 3.0, priority = 40 }
|
||||
vpn = { buffer_size = "256KB", chunk_size = "2MB", timeout_multiplier = 1.5, priority = 50 }
|
||||
|
||||
# Handoff and switching behavior
|
||||
[handoff]
|
||||
seamless_switching = true
|
||||
chunk_retry_on_switch = true
|
||||
pause_transfers_on_switch = false
|
||||
switch_notification_enabled = true
|
||||
interface_quality_history = 50
|
||||
performance_comparison_window = "5m"
|
||||
|
||||
[client_optimization]
|
||||
# Per-client optimization
|
||||
enabled = true
|
||||
learning_enabled = true
|
||||
adaptation_speed = "medium" # "slow", "medium", "fast"
|
||||
|
||||
# Client type detection
|
||||
user_agent_analysis = true
|
||||
connection_fingerprinting = true
|
||||
performance_classification = true
|
||||
|
||||
# Optimization strategies
|
||||
strategy_mobile = {
|
||||
buffer_size = "32KB",
|
||||
chunk_size = "512KB",
|
||||
retry_multiplier = 1.5,
|
||||
timeout_multiplier = 2.0
|
||||
}
|
||||
|
||||
strategy_desktop = {
|
||||
buffer_size = "128KB",
|
||||
chunk_size = "2MB",
|
||||
retry_multiplier = 1.0,
|
||||
timeout_multiplier = 1.0
|
||||
}
|
||||
|
||||
strategy_server = {
|
||||
buffer_size = "512KB",
|
||||
chunk_size = "10MB",
|
||||
retry_multiplier = 0.5,
|
||||
timeout_multiplier = 0.5
|
||||
}
|
||||
|
||||
[monitoring]
|
||||
# Enhanced monitoring and metrics
|
||||
detailed_metrics = true
|
||||
performance_tracking = true
|
||||
client_analytics = true
|
||||
|
||||
# Metric collection intervals
|
||||
realtime_interval = "1s"
|
||||
aggregate_interval = "1m"
|
||||
summary_interval = "1h"
|
||||
|
||||
# Storage for metrics
|
||||
metrics_retention = "7d"
|
||||
performance_history = "24h"
|
||||
client_profile_retention = "30d"
|
||||
|
||||
[experimental]
|
||||
# Experimental features
|
||||
http3_support = false
|
||||
quic_protocol = false
|
||||
compression_negotiation = true
|
||||
adaptive_compression = true
|
||||
|
||||
# Advanced I/O
|
||||
io_uring_support = false # Linux only
|
||||
zero_copy_optimization = true
|
||||
memory_mapped_files = false
|
||||
|
||||
# Machine learning optimizations
|
||||
ml_optimization = false
|
||||
predictive_caching = false
|
||||
intelligent_prefetching = false
|
||||
|
||||
[timeouts]
|
||||
readtimeout = "30s"
|
||||
writetimeout = "30s"
|
||||
idletimeout = "60s"
|
||||
shutdown = "30s"
|
||||
|
||||
# Adaptive timeouts
|
||||
adaptive_timeouts = true
|
||||
min_timeout = "5s"
|
||||
max_timeout = "300s"
|
||||
timeout_adaptation_factor = 1.2
|
||||
|
||||
[deduplication]
|
||||
enabled = true
|
||||
directory = "/data/deduplication"
|
||||
maxsize = "1GB"
|
||||
algorithm = "sha256"
|
||||
cleanup_interval = "1h"
|
||||
|
||||
[iso]
|
||||
enabled = false
|
||||
mountpoint = "/mnt/iso"
|
||||
size = "1GB"
|
||||
charset = "utf8"
|
||||
|
||||
[versioning]
|
||||
enableversioning = false
|
||||
backend = "filesystem"
|
||||
maxversions = 10
|
||||
|
||||
[clamav]
|
||||
clamavenabled = false
|
||||
clamavsocket = "/var/run/clamav/clamd.ctl"
|
Reference in New Issue
Block a user