... | ... | @@ -29,7 +29,16 @@ The following chart shows which NATs are compatible with each other. Columns and |
|
|
|
|
|
## NAT Matching
|
|
|
|
|
|
### Proxy assignment
|
|
|
|
|
|
Because we aren't worried about matching specific clients with specific proxies, we can have the broker sort proxies into buckets, according to which types of NATs they are compatible with. When a client polls, the broker picks a proxy out of a compatible bucket to give to the client.
|
|
|
|
|
|
In practice, we don't need 9 buckets for each possible combination of mapping and filtering behaviour. We simplify this to 2 buckets:
|
|
|
- **unrestricted**: proxies in this bucket will work with all clients, even those with the most restrictive symmetric NATs and filtering behaviour. Only (AI,AI) and (AI,AO) proxies belong in this bucket.
|
|
|
- **restricted**: all proxies that aren't (AI,AI) or (AI,AO) are restricted. Most[^1] of the proxies in this bucket will work for clients without symmetric NATs.
|
|
|
|
|
|
### Determining NAT behaviour
|
|
|
|
|
|
### Placing proxies into buckets
|
|
|
|
|
|
|
|
|
[^1]: there is an edge case here where clients with port-dependent filtering behaviour (AI,PD) won't work with symmetrically mapped proxies, i.e. proxies with (AO,X) or (AP,X) behaviours. However, symmetric mapping is relatively rare. At the time of writing this post, (AI,PD) clients work with over 80% of restricted proxies. |
|
|
\ No newline at end of file |