[tor-project] Sponsor 38 update (Shadow simulator)
jnewsome at torproject.org
Thu Mar 19 17:41:05 UTC 2020
We’ve filled in a more granular plan in the _Sponsor 38_
We’ve made some progress on _Shadow_
<https://github.com/shadow/shadow>’s milestone _Improve development
assurance and velocity_ <https://github.com/shadow/shadow/milestone/15>.
Fixed remaining compiler warnings in our continuous-integration
environments, and enabled -Werror there. _[#726_
Added continuous integration for shadow-plugin-tor, testing each
pull request of shadow-plugin-tor against stable versions of shadow
and Tor [_#85_
<https://github.com/shadow/shadow-plugin-tor/pull/90>], and also run
it for pull requests in the Shadow plugin against stable versions of
shadow-plugin-tor and Tor [_#727_
Shadow was released. In addition to the changes above, it modularizes
the router queue management algorithm and makes CoDel the default algorithm.
Our current focus is on prototyping Phantom: a new architecture for
Shadow that will run applications in their own processes rather than
using a custom ELF loader to load them directly into Shadow’s process.
The new architecture will work with unmodified program binaries (rather
than having to recompile them with -fPIC), should be stabler and easier
to maintain, and may have performance benefits.
Because Rob Jansen and Ryan Wails at NRL are actively involved in this
development work, NRL regulations require that the active development
happen in a private branch. When it’s ready to be upstreamed, they’ll go
through an NRL release process and merge it into the public repo. In the
meantime there is a place-holder issue [_#738_
<https://github.com/shadow/shadow/issues/738>] in the public repo.
Recent progress on Shadow-Phantom:
Added ability to simultaneously support alternative “thread”
strategies for controlling and communicating with plugins.
Working proof-of-concept of “Shim-Pipe” threads, which use
LD_PRELOAD to interpose the libc API to call a version of the
“syscall” function that communicates via Shadow using a pipe.
Nearly done with a shared-memory-based IPC mechanism for the
Shim-Pipe, which will be used for syscall pointer arguments.
Working proof-of-concept of “Ptrace” threads, which use ptrace to
attach to plugin threads, and intercept and service syscalls. This
approach is expected to be a bit simpler (the tracing process can
directly read and write the tracee’s memory, making marshalling
easier) and more reliable (e.g. handle direct usage of the syscall
instruction), but be less performant (likely more context switches
between Shadow, the OS, and the plugin).
In the coming month our main focus will continue to be on
Shadow-Phantom. We intend to flesh out the functionality enough to start
doing simple networking benchmarks, and if results look promising will
continue to flesh it out enough to run Tor.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the tor-project