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


0123456789ABCDEF
-0x1x
Preamble
SFD
0x0xMAC destinationMAC sourceEther TypePayload
Payload
FCS


IPv6/UDP 40+8byte offset=14byte 


0123456789ABCDEF
0x0xVER CLASS FLOW
LENGTHNEXT
HOPSource
0x1x
AddressDestination
0x2x
AddressSrc PortDest PortLengthChecksum
0x3x
DATA



Diretta Header 16byte offset=62byte


0123456789ABCDEF
0x0xSeparat
Size
MessageStatusOption0Option1
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.


0123456789ABCDEF
0x0xMAC destinationMAC sourceEther TypeVER CLS 
0x1x
FLOW
LENGTH
NEXT
HOP
Source
0x2x
Address
Destination
0x3x
Address
Src Port
Dest Port
Length
Checksum
Separat
0x4x
Size
Message
Status
Option0Option1Option2
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.


0123456789ABCDEF
0x0xMAC destinationMAC sourceEther TypeVER CLS 
0x1x
FLOW
LENGTH
NEXT
HOP
Source
0x2x
Address
Destination
0x3x
Address
Src Port
Dest Port
Length
Checksum
Audio
-0x4x
StreamCNT


MS mode 2 offset=64

To ensure 64-bit alignment for the RAW Frame, add two bytes of control data at the beginning.


0123456789ABCDEF
0x0xMAC destinationMAC sourceEther TypeVER CLS 
0x1x
FLOW
LENGTH
NEXT
HOP
Source
0x2x
Address
Destination
0x3x
Address
Src Port
Dest Port
Length
Checksum
PADCNT
-0x4x
Audo Stream


DDS (MS mode 3)  offset=16

No IP Layer for L2 traffic.


0123456789ABCDEF
0x0xMAC destinationMAC sourceEther TypePO
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.