Skip to content

Support AF_NETLINK address family #2980

@cohosh

Description

@cohosh

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: EnhancementNew functionality or improved design

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions