-
Notifications
You must be signed in to change notification settings - Fork 269
Support AF_NETLINK address family #2980
Description
Describe the issue
Trying out snowflake simulations on the newest version of shadow and ran into some trouble with go library calls again. Seems like Snowflake's requirements have changed since I last tried a year ago :)
When I run a minimal snowflake example, all of the tgen streams fail and up inspecting the logs from the snowflake client, I see the following log messages:
2000/01/01 00:01:30 snowflake-client 2.5.1
2000/01/01 00:01:30 Started SOCKS listener at 127.0.0.1:9000.
2000/01/01 00:02:00 SOCKS accepted: {127.0.0.1:8080 map[]}
2000/01/01 00:02:00
--- Starting Snowflake Client ---
2000/01/01 00:02:00 Using ICE servers:
2000/01/01 00:02:00 url: stun:stun:3478
2000/01/01 00:02:00 Rendezvous using Broker at: http://broker:8080
2000/01/01 00:02:00 ---- SnowflakeConn: begin collecting snowflakes ---
2000/01/01 00:02:00 ---- SnowflakeConn: starting a new session ---
2000/01/01 00:02:00 WebRTC: Collecting a new Snowflake. Currently at [0/1]
2000/01/01 00:02:00 snowflake-9b4b05eedfb883bf connecting...
2000/01/01 00:02:00 WebRTC: DataChannel created
2000/01/01 00:02:00 Failed to prepare offer failed to create network: route ip+net: netlinkrib: address family not supported by protocol
2000/01/01 00:02:00 WebRTC: closing DataChannel
2000/01/01 00:02:00 WebRTC: closing PeerConnection
2000/01/01 00:02:00 WebRTC: Closing
2000/01/01 00:02:00 WebRTC: failed to create network: route ip+net: netlinkrib: address family not supported by protocol Retrying...
2000/01/01 00:02:00 redialing on same connection
These presumably correspond to the following warnings in shadow.log:
00:00:00.428894 [154689:shadow-worker] 00:02:00.000000001 [WARN] [snowflakeclient:11.0.0.3] [socket.c:1109] [syscallhandler_socket] unsupported socket domain "16", we only support AF_INET
The same thing appears to be happening with the proxy (which also uses WebRTC).
To Reproduce
Run a minimal Snowflake experiment: https://github.com/cohosh/shadow-snowflake-minimal
All of the tgen streams will fail
Operating System (please complete the following information):
- OS and version:
Debian GNU/Linux 12 (bookworm) - Kernel version:
Linux 6.1.0-9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) x86_64 GNU/Linux - Go version: go version
go1.19.8 linux/amd64
Shadow (please complete the following information):
-
Version: Shadow v3.0.0-52-g787ed885 2023-05-25--19:22:30
-
Which plug-ins you are using: None
Additional context
I realize this might be a big ask, I'm still trying to figure out why the webrtc library needs this.