Subject: [Network-tokens] Network Tokens @ IPv6

From: "Yiannis Yiakoumis" <[email-masked]>
Date: Tue, 14 Jul 2020 19:35:00 +0000

Tom,

I'd like to understand better the use of tokens at IPv6 - it will help a lot in the discussions we have, and to also understand the trade-offs between IPv6 and other options (STUN, TLS, etc).

Do you have any document and/or implementation that defines use of tokens at IPv6? Is FAST the best source here? Implementation-wise?

It might be good to scope an implementation to greater detail and with clear assumptions so we can argue on pros/cons. Few things that are not clear in my mind:

* You mentioned a token being verified and dropped by the first network node. What happens with the reverse direction then? Doesn't this lead to connection state again similar to per-flow tokens?

* Is the token a random value (big enough to somehow prevent collision)? Or is it encrypted?

* If encrypted, what algorithms do we use for encryption, how long does the ciphertext become, and what's the decryption overhead? Is the derived token small enough to fit in every packet?

* If not encrypted, how do we prevent replay/spoof attacks? How much token-specific state do we need to keep at the network? What is the lifetime of tokens?

* If we end-up with connection state anyways, does it make sense to have one token per flow (instead of per-packet) and not worry about encryption and byte overhead?

* How does the API/socket interface at the client side look like?

Coming up with a good description that details assumptions is a first step. Next step is implementation. We should be able to add it on the network token function we have relatively easy. It would help a lot if you have a client implementation that sends traffic with tokens.

Best,

Yiannis