Configuration created to enable simultaneous playback of multiple sinks (targets) (multi stream)
We have decided to postpone the implementation of simultaneous playback.
Diretta Protocol
Communication is performed using IPv6/UDP link local.
IPv6 Link-Local addresses are uniquely determined.
Additionally, since the interface is specified during transmission, it does not reference the routing table as with IPv4.
DDS does not reference IPv6 ND either.
EtherFrame -(Preamble/SFDent)=14byte
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| -0x1x | Preamble | SFD | ||||||||||||||
| 0x0x | MAC destination | MAC source | Ether Type | Payload | ||||||||||||
| Payload | FCS | |||||||||||||||
IPv6/UDP 40+8byte offset=14byte
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | VER CLASS FLOW | LENGTH | NEXT | HOP | Source | |||||||||||
| 0x1x | Address | Destination | ||||||||||||||
| 0x2x | Address | Src Port | Dest Port | Length | Checksum | |||||||||||
| 0x3x | DATA | |||||||||||||||
Diretta Header 16byte offset=62byte
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | Separat | Size | Message | Status | Option0 | Option1 | Option2 | Option3 | ||||||||
| 0x1x | Audio Stream / Alternate Data | |||||||||||||||
This header is used for all procedures, including target detection, format acquisition, and connection setup.
Diretta with MS disable (gen1) performs playback using this packet.
The header is 16 bytes because Socket's read/write operations are designed to utilize memory starting from the beginning with 64-bit alignment.
Audio Stream(Omit the Preamble/SFD/FSC for 64-bit alignment)
The length of the AudioStream is represented in 16-byte units; the actual length varies depending on the Diretta profile.
MS disable (gen1) offset=78
Perform packet skipping and SinkPort control using DirettaHeader
The Read/Write socket is positioned at a 64-bit alignment from the beginning.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | MAC destination | MAC source | Ether Type | VER CLS | ||||||||||||
| 0x1x | FLOW | LENGTH | NEXT | HOP | Source | |||||||||||
| 0x2x | Address | Destination | ||||||||||||||
| 0x3x | Address | Src Port | Dest Port | Length | Checksum | Separat | ||||||||||
| 0x4x | Size | Message | Status | Option0 | Option1 | Option2 | Option3 | Audio | ||||||||
| -0x5x | Stream | |||||||||||||||
MS mode 1 offset=62 Footer=1
Add one byte to the rear as a packet loss confirmation counter without using the Header
MS mode leaves the output destination and other settings to UDP.
This corresponds to the beginning of the Read/Write operation on the socket.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | MAC destination | MAC source | Ether Type | VER CLS | ||||||||||||
| 0x1x | FLOW | LENGTH | NEXT | HOP | Source | |||||||||||
| 0x2x | Address | Destination | ||||||||||||||
| 0x3x | Address | Src Port | Dest Port | Length | Checksum | Audio | ||||||||||
| -0x4x | Stream | CNT | ||||||||||||||
MS mode 2 offset=64
To ensure 64-bit alignment for the RAW Frame, add two bytes of control data at the beginning.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | MAC destination | MAC source | Ether Type | VER CLS | ||||||||||||
| 0x1x | FLOW | LENGTH | NEXT | HOP | Source | |||||||||||
| 0x2x | Address | Destination | ||||||||||||||
| 0x3x | Address | Src Port | Dest Port | Length | Checksum | PAD | CNT | |||||||||
| -0x4x | Audo Stream | |||||||||||||||
DDS (MS mode 3) offset=16
No IP Layer for L2 traffic.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0x0x | MAC destination | MAC source | Ether Type | PO | CNT | |||||||||||
| -0x1x | Audo Stream | |||||||||||||||
PO:SINK Output Destination
CNT: Packet Drop Check
Bit errors are handled by the EtherFrame CRC.
The length is calculated in EtherFrame.
Bypasses the OS IP stack
Once we can reliably obtain the EtherType for Mode3, implementation on devices like FPGAs becomes feasible.