8. Compatibilità RR ServiceMode e chiavi obbligatorie
In un RR ServiceMode, una SvcParamKey è considerata "obbligatoria" se l'RR non funzionerà correttamente per i client che ignorano questa SvcParamKey. Ogni mapping di protocollo SVCB dovrebbe specificare un insieme di chiavi che sono "automaticamente obbligatorie", cioè obbligatorie se presenti in un RR. La SvcParamKey "mandatory" viene utilizzata per indicare qualsiasi chiave obbligatoria per questo RR, oltre a eventuali chiavi automaticamente obbligatorie che sono presenti.
Un RR ServiceMode è considerato "compatibile" da un client se il client riconosce tutte le chiavi obbligatorie e i loro valori indicano che è possibile stabilire con successo una connessione. Gli RR incompatibili vengono ignorati (vedere il passaggio 5 della procedura definita nella Sezione 3).
Il valore di presentazione deve essere un elenco separato da virgole di una o più SvcParamKeys valide, identificate dal loro nome registrato o nel formato chiave sconosciuta (Sezione 2.1). Le chiavi possono apparire in qualsiasi ordine ma non devono apparire più di una volta. Per auto-coerenza (Sezione 2.4.3), le chiavi elencate devono anche apparire nei SvcParams.
Per consentire un'analisi più semplice, questo SvcParamValue non deve contenere sequenze di escape.
Il valore in formato wire è la concatenazione del valore numerico di ciascuna chiave nell'ordine dei byte di rete, senza alcun riempimento interno.
Ad esempio, un RR ServiceMode con chiavi alpn, port e un'ipotetica nuova chiave foo (SvcParamKey=54321) avrebbe un valore mandatory di "mandatory=alpn,port,foo" nel formato di presentazione. Nel formato wire, questo sarebbe rappresentato come i seguenti ottetti:
00 01 00 03 d4 31
(Nell'esempio sopra, "00 01" rappresenta il valore numerico di "alpn", "00 03" rappresenta il valore numerico di "port", e "d4 31" rappresenta il valore numerico 54321 nell'ordine dei byte di rete.)