Skip to content

Commit dda8f6f

Browse files
author
AdQuest Developer
committed
Refactor QUIC testing framework with enhanced dashboard and certificate management
- Add comprehensive dashboard with real-time metrics and visualization - Implement certificate authority setup and management system - Restructure client/server architecture with modular components - Add BBRv3 congestion control implementation with detailed metrics - Enhance GUI with template-based rendering and API endpoints - Add container orchestration support with Docker configurations - Implement QUIC-specific testing scenarios and benchmarks - Add installation scripts and documentation for CA setup - Refactor internal modules for better separation of concerns
1 parent ed47cc0 commit dda8f6f

89 files changed

Lines changed: 10120 additions & 5194 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Git
2+
.git
3+
.gitignore
4+
5+
# Build artifacts
6+
quic-test
7+
quic-gui
8+
quic-test-build
9+
quic-test-dashboard
10+
tui
11+
12+
# Documentation
13+
*.md
14+
docs/
15+
16+
# IDE
17+
.vscode/
18+
.idea/
19+
20+
# Logs
21+
*.log
22+
23+
# OS
24+
.DS_Store
25+
Thumbs.db
26+
27+
# Temporary files
28+
*.tmp
29+
*.temp
30+
31+
# Node modules (if any)
32+
node_modules/
33+
34+
# Docker
35+
Dockerfile*
36+
docker-compose*.yml
37+
38+
# Scripts (keep only necessary ones)
39+
scripts/
40+
41+
# Test files
42+
*_test.go
43+
44+
# Binaries in bin/
45+
bin/
46+
47+
# Prometheus data
48+
prometheus/data/
49+
50+
# Grafana data
51+
grafana/data/

.goreleaser.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 2GC CloudBridge QUIC testing - GoReleaser конфигурация
1+
# Cloudbridge Research QUIC testing - GoReleaser конфигурация
22
# Автоматическая сборка релизов для всех платформ
33

44
project_name: quic-test
@@ -222,7 +222,7 @@ release:
222222
prerelease: auto
223223
name_template: "v{{.Version}}"
224224
header: |
225-
## 2GC CloudBridge QUIC testing v{{.Version}}
225+
## Cloudbridge Research QUIC testing v{{.Version}}
226226
227227
### 📦 Что включено:
228228
- **quic-test**: Основной бинарник для тестирования
@@ -288,7 +288,7 @@ dockers:
288288
- "quic-test:latest"
289289
dockerfile: Dockerfile
290290
build_flag_templates:
291-
- "--label=org.opencontainers.image.title=2GC CloudBridge QUIC testing"
291+
- "--label=org.opencontainers.image.title=Cloudbridge Research QUIC testing"
292292
- "--label=org.opencontainers.image.description=QUIC performance testing tool"
293293
- "--label=org.opencontainers.image.url=https://github.com/twogc/quic-test"
294294
- "--label=org.opencontainers.image.source=https://github.com/twogc/quic-test"
@@ -302,7 +302,7 @@ dockers:
302302
- "quic-test-dashboard:latest"
303303
dockerfile: Dockerfile.dashboard
304304
build_flag_templates:
305-
- "--label=org.opencontainers.image.title=2GC CloudBridge Dashboard"
305+
- "--label=org.opencontainers.image.title=Cloudbridge Research Dashboard"
306306
- "--label=org.opencontainers.image.description=QUIC testing dashboard"
307307
- "--label=org.opencontainers.image.url=https://github.com/twogc/quic-test"
308308
- "--label=org.opencontainers.image.source=https://github.com/twogc/quic-test"

DASHBOARD_ENHANCEMENTS.md

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# QUIC Educational Dashboard Enhancements
2+
3+
## Overview
4+
The QUIC Educational Dashboard has been significantly enhanced with advanced features for professional educational use. The dashboard now provides comprehensive real-time visualization, interactive scenarios, and export capabilities.
5+
6+
## New Features Implemented
7+
8+
### 1. Real-time Visualization Charts
9+
- **Throughput Chart**: Real-time line chart showing throughput over time
10+
- **RTT and Packet Loss Chart**: Dual-axis chart displaying RTT and packet loss metrics
11+
- **Protocol Comparison Chart**: Radar chart comparing QUIC vs TCP+TLS performance
12+
- **Chart.js Integration**: Professional charting library for smooth animations and interactions
13+
14+
### 2. Enhanced Scenario Execution
15+
- **Step-by-step Progress**: Visual progress tracking with detailed steps
16+
- **Real-time Insights**: Educational explanations during scenario execution
17+
- **Interactive Controls**: Pause, stop, and export scenario results
18+
- **Six Educational Scenarios**:
19+
- QUIC Handshake Demo (Beginner)
20+
- Congestion Control Comparison (Intermediate)
21+
- Stream Multiplexing (Intermediate)
22+
- Loss Recovery Analysis (Advanced)
23+
- Connection Migration (Advanced)
24+
- Security Features (Advanced)
25+
26+
### 3. Wireshark Capture Integration
27+
- **Start/Stop Capture**: Control packet capture during tests
28+
- **Real-time Packet Counting**: Live display of captured packets
29+
- **PCAP Export**: Download captured packets for Wireshark analysis
30+
- **Educational Focus**: Designed for protocol learning and analysis
31+
32+
### 4. PDF Report Generation
33+
- **Comprehensive Reports**: Educational analysis with insights and recommendations
34+
- **Customizable Content**: Include/exclude charts, analysis, and recommendations
35+
- **Professional Format**: Structured reports suitable for academic use
36+
- **Educational Analysis**: Detailed explanations of QUIC protocol behavior
37+
38+
### 5. Data Export Capabilities
39+
- **Multiple Formats**: CSV, JSON, and configuration export
40+
- **Scenario Results**: Export complete scenario execution data
41+
- **Metrics History**: Export time-series performance data
42+
- **Configuration Backup**: Save and share test configurations
43+
44+
## Technical Implementation
45+
46+
### Frontend Enhancements
47+
- **Chart.js Integration**: Added Chart.js library for professional visualizations
48+
- **Modular JavaScript Architecture**: Split into 5 focused modules for better maintainability
49+
- `dashboard-core.js`: Main class and initialization
50+
- `dashboard-charts.js`: Chart.js integration and visualizations
51+
- `dashboard-scenarios.js`: Educational scenario execution
52+
- `dashboard-export.js`: Export, capture, and reporting functionality
53+
- `dashboard-api.js`: Server communication and data management
54+
- **Responsive Design**: Charts and new components adapt to screen size
55+
- **Progressive Enhancement**: New features don't break existing functionality
56+
- **Professional Styling**: Consistent with Zitadel design system
57+
58+
### Backend API Extensions
59+
- **Educational API**: New endpoints for capture, reporting, and export
60+
- **Scenario Management**: API support for step-by-step scenario execution
61+
- **Report Generation**: Server-side report creation with educational content
62+
- **Data Export**: Multiple format support with proper MIME types
63+
64+
### File Structure
65+
```
66+
web/static/
67+
├── dashboard.html # Enhanced with charts and export sections
68+
├── css/dashboard.css # New styles for charts and scenarios
69+
└── js/ # Modular JavaScript architecture
70+
├── dashboard-core.js # Main QUICDashboard class and initialization
71+
├── dashboard-charts.js # Chart.js integration and visualizations
72+
├── dashboard-scenarios.js # Educational scenario execution
73+
├── dashboard-export.js # Export, capture, and reporting functionality
74+
├── dashboard-api.js # Server communication and data management
75+
└── README.md # Detailed module documentation
76+
77+
internal/dashboard/
78+
├── educational_api.go # Extended with export and capture endpoints
79+
├── quic_api.go # Core QUIC management API
80+
├── quic_manager.go # Process management
81+
└── metrics_collector.go # Real-time metrics collection
82+
```
83+
84+
## Usage Instructions
85+
86+
### Starting the Dashboard
87+
```bash
88+
# Build the project
89+
make build
90+
91+
# Start the dashboard server
92+
./quic-test -mode=dashboard
93+
94+
# Open browser to http://localhost:9990
95+
```
96+
97+
### Using Educational Scenarios
98+
1. **Select a Scenario**: Choose from 6 educational scenarios based on skill level
99+
2. **Watch Progress**: Monitor step-by-step execution with real-time insights
100+
3. **Analyze Results**: Review charts and metrics during and after execution
101+
4. **Export Data**: Save results for further analysis or reporting
102+
103+
### Capturing Network Traffic
104+
1. **Start Capture**: Click "Start Capture" before running tests
105+
2. **Run Tests**: Execute scenarios or manual tests
106+
3. **Stop Capture**: End capture when testing is complete
107+
4. **Download PCAP**: Export captured packets for Wireshark analysis
108+
109+
### Generating Reports
110+
1. **Configure Options**: Select report sections (charts, analysis, recommendations)
111+
2. **Generate Report**: Create comprehensive PDF report
112+
3. **Download**: Save report for academic or professional use
113+
114+
### Exporting Data
115+
- **CSV Export**: Metrics data in spreadsheet format
116+
- **JSON Export**: Complete test data with metadata
117+
- **Config Export**: Save test configurations for reuse
118+
119+
## Educational Benefits
120+
121+
### For Students
122+
- **Visual Learning**: Real-time charts help understand protocol behavior
123+
- **Step-by-step Guidance**: Scenarios provide structured learning paths
124+
- **Hands-on Experience**: Interactive testing with immediate feedback
125+
- **Professional Tools**: Experience with industry-standard analysis methods
126+
127+
### For Instructors
128+
- **Comprehensive Reports**: Detailed analysis for grading and feedback
129+
- **Flexible Scenarios**: Different complexity levels for various skill levels
130+
- **Export Capabilities**: Easy sharing and archiving of results
131+
- **Professional Interface**: Suitable for academic and industry training
132+
133+
## Performance Considerations
134+
135+
### Real-time Updates
136+
- **Efficient Charting**: Chart.js optimized for real-time data updates
137+
- **Data Limiting**: Charts maintain only last 20 data points for performance
138+
- **Smooth Animations**: Non-blocking updates with animation control
139+
140+
### Memory Management
141+
- **Circular Buffers**: Automatic cleanup of old data points
142+
- **Lazy Loading**: Charts initialize only when needed
143+
- **Resource Cleanup**: Proper cleanup on page unload
144+
145+
## Browser Compatibility
146+
- **Modern Browsers**: Chrome 80+, Firefox 75+, Safari 13+, Edge 80+
147+
- **Chart.js Support**: Leverages Canvas API for optimal performance
148+
- **Responsive Design**: Works on desktop, tablet, and mobile devices
149+
150+
## Future Enhancements
151+
152+
### Planned Features
153+
- **Real-time Collaboration**: Multiple users viewing same test
154+
- **Advanced Analytics**: Machine learning insights
155+
- **Custom Scenarios**: User-defined educational scenarios
156+
- **Integration APIs**: Connect with LMS systems
157+
158+
### Technical Improvements
159+
- **WebSocket Integration**: Real-time bidirectional communication
160+
- **Advanced Charting**: 3D visualizations and heatmaps
161+
- **Performance Optimization**: Further reduce resource usage
162+
- **Accessibility**: Enhanced screen reader and keyboard support
163+
164+
## Testing the Implementation
165+
166+
### Quick Test
167+
1. Start dashboard: `./quic-test -mode=dashboard`
168+
2. Open http://localhost:9990
169+
3. Click "Start Demo" on "QUIC Handshake Demo" scenario
170+
4. Watch real-time progress and charts
171+
5. Export results when complete
172+
173+
### Full Feature Test
174+
1. Load "Congestion Comparison" preset
175+
2. Start packet capture
176+
3. Run "Congestion Control Comparison" scenario
177+
4. Monitor real-time charts during execution
178+
5. Generate PDF report with all options
179+
6. Export data in CSV and JSON formats
180+
7. Download PCAP file for Wireshark analysis
181+
182+
## Conclusion
183+
184+
The enhanced QUIC Educational Dashboard provides a comprehensive platform for learning and analyzing the QUIC protocol. With real-time visualizations, interactive scenarios, and professional export capabilities, it serves both educational and research purposes effectively.
185+
186+
The implementation maintains the clean, professional design while adding powerful new features that enhance the learning experience without overwhelming users. The modular architecture ensures easy maintenance and future extensibility.

Dockerfile.client

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 2GC Network Protocol Suite - Client Dockerfile
22
# Оптимизированный образ для QUIC клиента
33

4-
FROM golang:1.25.1-alpine AS builder
4+
FROM golang:alpine AS builder
55

66
# Установка зависимостей
77
RUN apk add --no-cache git make
@@ -16,8 +16,8 @@ RUN go mod download
1616
# Копирование исходного кода
1717
COPY . .
1818

19-
# Сборка только клиента
20-
RUN make build-client
19+
# Сборка основного бинарника
20+
RUN go build -o quic-test ./
2121

2222
# Runtime образ
2323
FROM alpine:3.20
@@ -32,9 +32,9 @@ RUN addgroup -g 1001 -S quic && \
3232
# Установка рабочей директории
3333
WORKDIR /app
3434

35-
# Копирование собранного клиента
36-
COPY --from=builder /app/build/quic-client ./
37-
COPY --from=builder /app/tag.txt ./
35+
# Копирование собранного бинарника
36+
COPY --from=builder /app/quic-test ./
37+
COPY --from=builder /app/certs ./certs
3838

3939
# Установка прав доступа
4040
RUN chown -R quic:quic /app
@@ -64,4 +64,4 @@ LABEL org.opencontainers.image.licenses="Apache-2.0"
6464
LABEL org.opencontainers.image.vendor="2GC"
6565

6666
# Команда по умолчанию - запуск клиента
67-
CMD ./quic-client --addr=${QUIC_CLIENT_ADDR:-quic-server:9000} --connections=${QUIC_CONNECTIONS:-2} --streams=${QUIC_STREAMS:-4} --rate=${QUIC_RATE:-100} --duration=${QUIC_DURATION:-60s} --prometheus ${QUIC_NO_TLS:+--no-tls}
67+
CMD ["./quic-test", "-mode=client", "-addr=quic-server:9000", "-connections=2", "-streams=4", "-rate=100", "-duration=60s", "-prometheus", "-no-tls"]

Dockerfile.dashboard

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# 2GC CloudBridge Dashboard - Multi-stage Dockerfile
1+
# Cloudbridge Research Dashboard - Multi-stage Dockerfile
22
# Специализированный образ для веб-дашборда
33

44
# Этап 1: Сборка
5-
FROM golang:1.21-alpine AS builder
5+
FROM golang:alpine AS builder
66

77
# Установка зависимостей
88
RUN apk add --no-cache git make
@@ -17,14 +17,14 @@ RUN go mod download
1717
# Копирование исходного кода
1818
COPY . .
1919

20-
# Сборка только dashboard
21-
RUN go build -o dashboard ./cmd/dashboard
20+
# Сборка основного бинарника
21+
RUN go build -o quic-test ./
2222

2323
# Этап 2: Runtime
2424
FROM alpine:3.20
2525

2626
# Установка зависимостей runtime
27-
RUN apk add --no-cache ca-certificates tzdata
27+
RUN apk add --no-cache ca-certificates tzdata wget
2828

2929
# Создание пользователя для безопасности
3030
RUN addgroup -g 1001 -S dashboard && \
@@ -34,7 +34,13 @@ RUN addgroup -g 1001 -S dashboard && \
3434
WORKDIR /app
3535

3636
# Копирование собранного бинарника
37-
COPY --from=builder /app/dashboard ./
37+
COPY --from=builder /app/quic-test ./
38+
39+
# Копирование веб-файлов
40+
COPY --from=builder /app/web ./web
41+
42+
# Копирование сертификатов для тестирования
43+
COPY --from=builder /app/certs ./certs
3844

3945
# Установка прав доступа
4046
RUN chown -R dashboard:dashboard /app
@@ -51,12 +57,12 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
5157
CMD wget --no-verbose --tries=1 --spider http://localhost:9990/ || exit 1
5258

5359
# Метки для контейнера
54-
LABEL org.opencontainers.image.title="2GC CloudBridge Dashboard"
55-
LABEL org.opencontainers.image.description="QUIC testing dashboard"
60+
LABEL org.opencontainers.image.title="Cloudbridge Research Dashboard"
61+
LABEL org.opencontainers.image.description="QUIC testing dashboard with modular JavaScript architecture"
5662
LABEL org.opencontainers.image.url="https://github.com/cloudbridge-relay-installer/quck-test"
5763
LABEL org.opencontainers.image.source="https://github.com/cloudbridge-relay-installer/quck-test"
5864
LABEL org.opencontainers.image.licenses="Apache-2.0"
59-
LABEL org.opencontainers.image.vendor="2GC CloudBridge"
65+
LABEL org.opencontainers.image.vendor="Cloudbridge Research"
6066

61-
# Команда по умолчанию
62-
CMD ["./dashboard", "--addr=:9990"]
67+
# Команда по умолчанию - запуск в режиме dashboard
68+
CMD ["./quic-test", "-mode=dashboard"]

0 commit comments

Comments
 (0)