Expand description
Handshake control packet — draft-sharabayko-srt-01 §3.2.1, Figure 5, and
its extension messages: Handshake Extension Message (§3.2.1.1 / Figure 6,
flags in §3.2.1.1.1 / Table 6), Key Material Extension (§3.2.1.2, content
is a super::KeyMaterial — §3.2.2), Stream ID Extension (§3.2.1.3 /
Figure 7), and Group Membership Extension (§3.2.1.4 / Figures 8-9).
word0..0 Version (32)
word1 Encryption Field (16) | Extension Field (16)
word2 Initial Packet Sequence Number (32)
word3 Maximum Transmission Unit Size (32)
word4 Maximum Flow Window Size (32)
word5 Handshake Type (32)
word6 SRT Socket ID (32)
word7 SYN Cookie (32)
word8..11 Peer IP Address (128)
── repeated ──
Extension Type (16) | Extension Length (16, in 4-byte blocks)
Extension Contents (Extension Length * 4 bytes)This module covers structure only: parsing the fixed CIF fields and walking/decoding extension blocks. The handshake exchange (caller / listener / rendezvous state machine, §4.3) is an explicit follow-up.
Structs§
- Group
Flags - Group Membership Extension
Flags(§3.2.1.4, Figure 9): only theMbit is defined. - Group
Membership Extension - Group Membership Extension (§3.2.1.4, Figure 8) — the payload of an
ExtensionType::Groupblock. - Handshake
Extension Block - One decoded Handshake Extension block (§3.2.1):
Extension Type/Extension Length/Extension Contents. Data-carrying (borrows the raw contents) — decode the contents withSelf::as_hs_ext_message,Self::as_key_material,Self::as_stream_id, orSelf::as_group_membershipas appropriate forSelf::ext_type. - Handshake
Extension Flags - The
Extension Field(§3.2.1, Table 3) — a 16-bit bitmask on a CONCLUSION handshake, or an opaque echoed value on an INDUCTION response. - Handshake
Extension Iter - Iterator over
HandshakeExtensions. SeeHandshakeExtensions::iter. - Handshake
Extension Message Flags SRT Flagsof a Handshake Extension Message (§3.2.1.1.1, Table 6).- Handshake
Extensions - A borrowed, lazily-walked list of Handshake Extension blocks — the same
convention
dvb-siuses for descriptor loops. Iterate withSelf::iter. - Handshake
Packet - Handshake control packet (§3.2.1, Figure 5).
- HsExt
Message - Handshake Extension Message contents (§3.2.1.1, Figure 6) — the payload of
an
ExtensionType::HsReq/ExtensionType::HsRspblock.
Enums§
- Encryption
Field Encryption Field: block cipher family and key size advertised in the handshake (draft-sharabayko-srt-01§3.2.1, Table 2).- Extension
Type - Handshake Extension
Extension Type(draft-sharabayko-srt-01§3.2.1, Table 5). - Group
Type - Group Membership Extension
Type(draft-sharabayko-srt-01§3.2.1.4,SRT_GTYPE_*). - Handshake
Type Handshake Type(draft-sharabayko-srt-01§3.2.1, Table 4).
Constants§
- ENCRYPTION_
FIELD_ AES_ 128 - AES-128.
- ENCRYPTION_
FIELD_ AES_ 192 - AES-192.
- ENCRYPTION_
FIELD_ AES_ 256 - AES-256.
- ENCRYPTION_
FIELD_ NONE Encryption Fieldwire values (§3.2.1, Table 2).- EXT_
TYPE_ CONGESTION SRT_CMD_CONGESTION.- EXT_
TYPE_ FILTER SRT_CMD_FILTER.- EXT_
TYPE_ GROUP SRT_CMD_GROUP.- EXT_
TYPE_ HSREQ Extension Typewire values (§3.2.1, Table 5).- EXT_
TYPE_ HSRSP SRT_CMD_HSRSP.- EXT_
TYPE_ KMREQ SRT_CMD_KMREQ— also used as the control-packetSubtypefor a Key Material message delivered as a User-Defined control packet (§3.2.2).- EXT_
TYPE_ KMRSP SRT_CMD_KMRSP.- EXT_
TYPE_ SID SRT_CMD_SID.- GROUP_
MEMBERSHIP_ EXT_ LEN - Wire length of a Group Membership Extension (Figure 8).
- GROUP_
TYPE_ BALANCING - Balancing.
- GROUP_
TYPE_ BROADCAST - Broadcast.
- GROUP_
TYPE_ MAIN_ BACKUP - Main/backup.
- GROUP_
TYPE_ MULTICAST - Multicast (reserved for future use).
- GROUP_
TYPE_ UNDEFINED Type(Group Type) wire values of the Group Membership Extension (§3.2.1.4).- HANDSHAKE_
CIF_ FIXED_ LEN - Length in bytes of the fixed Handshake CIF core (Version through Peer IP Address, §3.2.1 Figure 5) — 12 header words.
- HANDSHAKE_
TYPE_ AGREEMENT - AGREEMENT.
- HANDSHAKE_
TYPE_ CONCLUSION - CONCLUSION.
- HANDSHAKE_
TYPE_ DONE Handshake Typewire values (§3.2.1, Table 4).- HANDSHAKE_
TYPE_ INDUCTION - INDUCTION.
- HANDSHAKE_
TYPE_ WAVEHAND - WAVEHAND.
- HS_
EXT_ FLAG_ CONFIG - CONFIG.
- HS_
EXT_ FLAG_ HSREQ Extension Fieldbitmask values (§3.2.1, Table 3). Only meaningful on a CONCLUSION handshake; on an INDUCTION response this 16-bit field is instead echoed back opaquely by the Listener.- HS_
EXT_ FLAG_ KMREQ - KMREQ.
- HS_
EXT_ MESSAGE_ LEN - Wire length of a Handshake Extension Message (Figure 6).
- HS_
MSG_ FLAG_ CRYPT - CRYPT.
- HS_
MSG_ FLAG_ PACKET_ FILTER - PACKET_FILTER.
- HS_
MSG_ FLAG_ PERIODICNAK - PERIODICNAK.
- HS_
MSG_ FLAG_ REXMITFLG - REXMITFLG.
- HS_
MSG_ FLAG_ STREAM - STREAM.
- HS_
MSG_ FLAG_ TLPKTDROP - TLPKTDROP.
- HS_
MSG_ FLAG_ TSBPDRCV - TSBPDRCV.
- HS_
MSG_ FLAG_ TSBPDSND SRT Flagsbitmask values of the Handshake Extension Message (§3.2.1.1.1, Table 6).
Functions§
- build_
extension_ block - Build one Handshake Extension block’s raw bytes (
Extension Type+Extension Length+Extension Contents, §3.2.1) — append the result of repeated calls to chain multiple blocks. - encode_
stream_ id - Encode the Stream ID extension’s 32-bit-little-endian-word storage
(§3.2.1.3) from a plain UTF-8 stream id string, padding with
0x00up to the next 4-byte boundary. Inverse ofHandshakeExtensionBlock::as_stream_id.