1 - extend record type support: NULL, CAA
v0.2.4 added the multi-record framework via #37. The following types aren't confirmed included and each has a distinct reason to be added
| Type |
reason |
| NULL (10) |
raw binary payload, (still not blocked ) |
| CAA (257) |
blocking it breaks TLS issuance |
| NAPTR (35) |
obscure enough that most DPI rulesets don't have rules for it (yet lol) |
| DNSKEY / DS |
blocking it breaks DNSSEC validation (might alredy be blocked but worths adding) |
| HINFO (13) |
fallback reach (510 bytes per response) |
refs: https://datatracker.ietf.org/doc/html/rfc1035
2 - adaptive probing + mid session fallback
without auto selection, multi record support is only useful to people who already know which type works (a hard barrier for non technical users.)
- on startup, probe all record types in parallel, rank by availability / latency / loss (https://github.com/yarrick/iodine)
- auto-select the best type ( maybe add
-probe-only flag to print results and exit)
- during a live session, detect degradation via KCP retransmit counters and switch to the next-ranked type without dropping the KCP/smux session
- cache probe results in a file keyed by resolver IP to skip probing on reconnect
3 - base36 label encoding
base32 wastes four characters (0 1 8 9) that DNS already supports. Base36 is a perfect natural fit:
| Encoding |
Bits/char |
| Base32 |
5.00 |
| Base36 |
~5.17 |
~3.3% more payload per label
add -encoding base36 flag, default to base32 still compatibility with dnstt.
4 - parallel multi record channels
Use multiple record types simultaneously as independent lanes within a single session
split outbound data across record types in parallel, reassemble by checking the SEQ numbers. each working type is an extra bandwidth lane.
5 resolver rotation
a single resolver is used for the the session. If it starts rate limiting or blocking, it needs to be manually restarted
(without requiring dnstm/dnstc )
1 - extend record type support: NULL, CAA
v0.2.4 added the multi-record framework via #37. The following types aren't confirmed included and each has a distinct reason to be added
refs: https://datatracker.ietf.org/doc/html/rfc1035
2 - adaptive probing + mid session fallback
without auto selection, multi record support is only useful to people who already know which type works (a hard barrier for non technical users.)
-probe-onlyflag to print results and exit)3 - base36 label encoding
base32 wastes four characters (
0 1 8 9) that DNS already supports. Base36 is a perfect natural fit:~3.3% more payload per label
add
-encoding base36flag, default tobase32still compatibility with dnstt.4 - parallel multi record channels
Use multiple record types simultaneously as independent lanes within a single session
split outbound data across record types in parallel, reassemble by checking the SEQ numbers. each working type is an extra bandwidth lane.
5 resolver rotation
a single resolver is used for the the session. If it starts rate limiting or blocking, it needs to be manually restarted
(without requiring dnstm/dnstc )