Skip to content

Version 1.1.0 Changelog

briand edited this page Aug 26, 2021 · 6 revisions

Version 1.1.0 comes with new features:

  • Consensus for cache (no more microdescriptors)
  • Exit policy check with default ports
  • Faster proxy with async and parallel read/write, custom port enabled.
  • 8 ready circuits
  • Better performances
  • Less memory used
  • Support for ESP32-S2 and ESP32-WRover, full support for SPI RAM
  • Statistics
  • New commands and better, selective, log output
  • Total debug suppression (increased performances)

Consensus

The method to build the nodes cache is now based on consensus download from authority directories (previously v.1.0.0 used microdescriptors, pre-release used Onionoo service).

Exit policy check

In the settings file BriandDefines.hxx now is available a new array where you can define "must-have" exit-node ports.

Faster proxy

New proxy uses now async (FreeRTOS) tasks and separated read/write operations. Some SDK config settings needed to be updated to achieve good performances and avoid crashes. Now thread-safe and written in standard C++17. Avoided, where possible, FreeRTOS threads.

Better performances, 8 ready circuits, less memory

Changes to sdkconfig settings allowed to have up to 8 built circuits and max. 5 (2/3 of 8) working proxy connections. A queue has been implemented. Changes to settings led to more RAM available.

Support for ESP32-S2 and ESP32-WRover, full support for SPI RAM

Thanks to the updates and testing of the basic library LibBriandIDF.

Statistics

Implemented a small statistics library, statistics are available through torstats command.

New commands and better, selective, log output

New commands have been added and some other suppressed. Now a unique log command can manage specific levels for output to stdout. See Commands.

Total debug suppression (increased performances)

ESP_LOGD calls have been conditioned to a #define, if variable SUPPRESSDEBUGLOG is defined then all ESP_LOGD around the code are suppressed at compile-time. The SUPPRESSDEBUG is enabled by default but can be easly changed in the settings file BriandDefines.hxx.

Statistics shows a better performance on small platforms like ESP32 (all done by loading https://www.torproject.org webpage with firefox connected to AP), using LolinD32, no SPIRAM:

Statistics with suppress enabled (default), ESP32

Compiling size:

RAM:   [=         ]  11.3% (used 36952 bytes from 327680 bytes)
Flash: [======    ]  60.9% (used 1277709 bytes from 2097152 bytes)

Statistics:

No. of normal stream finish: 8
No. of received paddings: 8
No. of exit policy errors: 0
No. of protocol errors: 4
Cache build time (s): 230
No. of cache guard fail: 1
No. of cache middle fail: 3
No. of cache exit fail: 9
No. of cache fail for same family ip: 0
No. of failed connections to guard: 0
No. of failed create2: 0
No. of failed extend2: 1
Max time to build a circuit (ms): 8861
Avg time Tor stream recv (ms): 1 (based on 1868 stream cells)
Avg time Tor stream send (ms): 3 (based on 208 stream cells)

Suppress disabled, ESP32

Compiling size:

RAM:   [=         ]  11.3% (used 36968 bytes from 327680 bytes)
Flash: [======    ]  62.8% (used 1317137 bytes from 2097152 bytes)

Statistics:

No. of normal stream finish: 8
No. of received paddings: 30
No. of exit policy errors: 0
No. of protocol errors: 2
Cache build time (s): 270
No. of cache guard fail: 7
No. of cache middle fail: 0
No. of cache exit fail: 3
No. of cache fail for same family ip: 0
No. of failed connections to guard: 0
No. of failed create2: 0
No. of failed extend2: 0
Max time to build a circuit (ms): 12273
Avg time Tor stream recv (ms): 3 (based on 2620 stream cells)
Avg time Tor stream send (ms): 3 (based on 481 stream cells)

Statistics with suppress enabled (default), Linux

Statistics:

No. of normal stream finish: 6
No. of received paddings: 45
No. of exit policy errors: 0
No. of protocol errors: 5
Cache build time (s): 32
No. of cache guard fail: 4
No. of cache middle fail: 6
No. of cache exit fail: 1
No. of cache fail for same family ip: 0
No. of failed connections to guard: 0
No. of failed create2: 0
No. of failed extend2: 0
Max time to build a circuit (ms): 15061
Avg time Tor stream recv (ms): 2 (based on 2804 stream cells)
Avg time Tor stream send (ms): 2 (based on 199 stream cells)