We ran the Fabrics API (TCP provider) between Azure VMs on completely unpeered VNets. TargetInfo embeds the target's private bind sockaddr, so an initiator on a non-routed network can't connect as-is.
Patching the address bytes ([4:8] of the serialized sockaddr) to the target's public IP before handing TargetInfo to the initiator works through Azure NAT at full rate: 30 grains/s sustained (1080p30 v210, ~1.3 Gbps), zero drops over 100k+ grains, initiator ~10% of one core, ~0% CPU on the receiving host. This is effectively the cross-region/cross-cloud recipe — only the address handling needed the hack.
Feature request: a supported advertised-address (bind address vs announce address) field in TargetInfo would make NAT traversal first-class.
Also observed: with both hosts on NTP, the remote flow's head index matched locally-generated flows — a reader cut the fabric-delivered flow with no special handling. Nice property worth documenting.
Full field notes: https://github.com/guycochran/mxl-cloud-production-demo (docs/FINDINGS.md §7)
We ran the Fabrics API (TCP provider) between Azure VMs on completely unpeered VNets. TargetInfo embeds the target's private bind sockaddr, so an initiator on a non-routed network can't connect as-is.
Patching the address bytes ([4:8] of the serialized sockaddr) to the target's public IP before handing TargetInfo to the initiator works through Azure NAT at full rate: 30 grains/s sustained (1080p30 v210, ~1.3 Gbps), zero drops over 100k+ grains, initiator ~10% of one core, ~0% CPU on the receiving host. This is effectively the cross-region/cross-cloud recipe — only the address handling needed the hack.
Feature request: a supported advertised-address (bind address vs announce address) field in TargetInfo would make NAT traversal first-class.
Also observed: with both hosts on NTP, the remote flow's head index matched locally-generated flows — a reader cut the fabric-delivered flow with no special handling. Nice property worth documenting.
Full field notes: https://github.com/guycochran/mxl-cloud-production-demo (docs/FINDINGS.md §7)