Skip to content

bunch of new features #67

Description

@parsa222

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 )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions