Skip to content

Unexplained drop in Snowflake client polls and bandwidth, testers wanted #131

@wkrp

Description

@wkrp

Since the beginning of protests and shutdowns in Iran, we have been applying numerous performance optimizations to the Snowflake bridge. As a result, peak bandwidth has risen from 1 Gbps to 4 Gbps and the estimated number of simultaneous users has grown from 20,000 to 100,000. But about two days ago, at 2022-10-04 17:15, usage dropped suddenly and drastically. Likely related, users reported failed Snowflake connection from Iran starting 2022-10-05. We have been investigating, but the exact cause is not clear. We would like help, especially logs from failed Snowflake connections.

You can see the sudden drop in client polls at the Snowflake broker:

Client polls by NAT time

It was accompanied by a simultaneous drop in bandwidth at the bridge:

snowflake-01 bandwidth on eno1

The most likely explanation for a pattern like this is censorship of the broker, probably in Iran. Clients cannot reach the broker, therefore they do not get proxy service, therefore they do not use bridge bandwidth. But the evidence is somewhat ambiguous, and anyway we need to understand how the broker is being blocked, if indeed that is what's happening.

Some of the evidence:

  • Usage decreased about 70% in Iran, but not only in Iran. The US, Tunisia, and Mauritius also had decreases of 40–70%. Some countries' counts remained about the same (Russia, China), and others' increased (Germany, United Kingdom, France).
  • OONI measurements of Snowflake connectivity and the default broker domain front do not show any notable increase in blocking in the past couple of days.
  • We have investigated possible causes of slowness at the broker and the bridge (e.g. network misconfigurations), and so far have not found anything.

There are various possible explanations. For example, connectivity to the broker domain front may be blocked only for certain TLS fingerprints. Perhaps OONI coverage is lacking in the networks most affected. For this we would like help.

How you can help

  • We would like to see snowflake-client logs from failed connections. This log provides more information (e.g. "unable to create broker channel") than the Tor log does ("Bootstrapped 10%"), but you need to take special steps to activate it. In Tor Browser desktop, edit the file Browser/TorBrowser/Data/Tor/torrc-defaults. Find the line that starts with
    ClientTransportPlugin snowflake
    
    and add this to the end of the line:
    -log snowflake-client.log -log-to-state-dir
    
    Then, when you restart Tor Browser, you will find the log at:
    • linux: Browser/TorBrowser/Data/Tor/pt_state/snowflake-client.log
    • windows: Browser\TorBrowser\Data\Tor\pt_state\snowflake-client.log
    • mac: ~/Library/Application Support/TorBrowser-Data/Tor/pt_state/snowflake-client.log
      (Use Go to Folder... in the Finder menu.)
  • If you use Orbot or Onion Browser, try choosing the Built-in snowflake (AMP) option, which uses an alternative form of rendezvous.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions