gomoqt is an original implementation of Media over QUIC in Golang, based on MOQTransport and MOQTransfork.
Streams completely based on MOQTranfork draft04.
Messages primarily based on MOQTransfork, some messages and fields are derived from MOQTransport
- GOAWAY messages are transmitted on the Session Stream.
- GROUP messages have a Publisher Priority field.
- Two types of priorities: Subscriber Priority and Publisher Priority are implemented
- No Track Path Parts field
Section | Implemented | Tested |
---|---|---|
2. Data Model | ||
2.1. Frame | ✅ | ❌ |
2.3. Group | ✅ | ❌ |
2.4. Track | ✅ | ❌ |
2.4.1. Track Naming and Scopes | 🚧 | ❌ |
2.4.2. Scope | 🚧 | ❌ |
2.4.3. Connection URL | 🚧 | ❌ |
3. Sessions | ||
3.1. Session establishment | ✅ | ❌ |
3.1.1. WebTransport | ✅ | ❌ |
3.1.2. QUIC | ✅ | ❌ |
3.2. Version and Extension Negotiation | ✅ | ❌ |
3.3. Session initialization | ✅ | ❌ |
3.4. Stream Cancellation | 🚧 | ❌ |
3.5. Termination | ✅ | ❌ |
3.6. Migration | 🚧 | ❌ |
4. Data Transmittions | ||
4.1 Publisher Priority Control | 🚧 | ❌ |
4.2 Subscriber Priority Control | 🚧 | ❌ |
4.3 Group Order Control | 🚧 | ❌ |
4.4 Cache | 🚧 | ❌ |
5. Relays | ||
5.1. Subscriber Interactions | ✅ | ❌ |
5.1.1. Graceful Publisher Relay Switchover | ❌ | ❌ |
5.2. Publisher Interactions | ✅ | ❌ |
5.2.1. Graceful Publisher Network Switchover | ❌ | ❌ |
5.2.2. Graceful Publisher Relay Switchover | ❌ | ❌ |
5.3. Relay Object Handling | 🚧 | ❌ |
Control Streams | ||
6.1. Session Stream | ✅ | ✅ |
6.2. Announce Stream | ✅ | ✅ |
6.3. Subscribe Stream | ✅ | ✅ |
6.4. Fetch Stream | ✅ | ✅ |
6.5. Info Stream | ✅ | ✅ |
Control Messages | ||
6.1. Parameters | 🚧 | ❌ |
6.1.1. Version Specific Parameters | ✅ | ❌ |
6.2. SESSION_CLIENT | ✅ | ❌ |
6.2. SESSION_SERVER | ✅ | ❌ |
6.2. SESSION_UPDATE | 🚧 | ❌ |
6.2.1. Versions | ✅ | ❌ |
6.2.2. Setup Parameters | ✅ | ❌ |
6.3. GOAWAY | ✅ | ❌ |
6.4. ANNOUNCE_INTEREST | ✅ | ❌ |
6.5. ANNOUNCE | ✅ | ❌ |
6.6. SUBSCRIBE | ✅ | ❌ |
6.7. SUBSCRIBE_UPDATE | ✅ | ❌ |
6.12. SUBSCRIBE_GAP | 🚧 | ❌ |
6.8. INFO | ✅ | ❌ |
6.9. INFO_REQUEST | ✅ | ❌ |
6.10. FETCH | ✅ | ❌ |
6.11. FETCH_UPDATE | ✅ | ❌ |
Data Stream | ||
7.3. Group Streams | ✅ | ✅ |
Data Message | ||
7.2. GROUP | ✅ | ❌ |
7.2. FRAME | ✅ | ❌ |
Datagram | ||
7.2. Datagram | ✅ | ❌ |
Security Considerations | ||
8.1. Resource Exhaustion | ❌ | ❌ |
We haven't conducted interoperability testing with other implementations yet
- ANNOUNCE message's Status field
- Priority Control
- Handling the Group Expires
- LOC (Low Overhead Container)
- Common Catalog Format for moq