Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/ooni/netem

Network emulation for writing integration tests in Go
https://github.com/ooni/netem

feat: implement whoami.v4.powerdns.org (#47)

Part of https://github.com/ooni/probe/issues/2669

608dcbcd82b8eabcb675d482e2ca83cf3a41c27d authored 11 months ago by Simone Basso <[email protected]>
feat: implement TCP-endpoint-based throttling (#46)

We need this feature to write test for StreamAllContext, which in turn
is one of the TODOs refe...

14e4ce92d41e802d605142dd5cbe725f430648de authored 11 months ago by Simone Basso <[email protected]>
chore: update deps (#45)

Part of https://github.com/ooni/probe/issues/2556

3cc1ea5e942c314859d1338a12505533cdb107b8 authored about 1 year ago by Simone Basso <[email protected]>
fix(ca.go): use http/1.1 by default (#44)

The previous martian code used http/1.1 by default. Now I know why: if
using http2 we cannot hi...

15f3ffec0107819a201759aaa03a44ef64a61764 authored over 1 year ago by Simone Basso <[email protected]>
BREAKING CHANGE: CertificationAuthority: add code to build certs (#43)

It turns out we can further simplify the ooni/probe-cli implementation
by adding more methods o...

c1d8ba36e4aa4a38fec1843bf6fcb0f99b6b227f authored over 1 year ago by Simone Basso <[email protected]>
BREAKING CHANGE: unify UNetStack and CA's CertificationAuthority behavior (#42)

The UNetStack and CA structures have similar functionality exposed
through a different interfac...

e2f8ee7d236dda5c4d917be38b33b5e6e371dd59 authored over 1 year ago by Simone Basso <[email protected]>
fix(UNetStack): better compatibility with ooni/probe-cli models (#41)

The refactoring at
https://github.com/ooni/netem/commit/45a7aa975636a8de271e07904ccd076a953618b...

df36342a70bec8fa11f120dd46cf5f74ec017319 authored over 1 year ago by Simone Basso <[email protected]>
BREAKING CHANGE: fix: pin certificates to hosts (#40)

Before writing this diff, netem automatically generated the correct cert
on the fly based on th...

45a7aa975636a8de271e07904ccd076a953618b0 authored over 1 year ago by Simone Basso <[email protected]>
feat: make sure DPI does not affect loopback traffic (#39)

It should not happen because GVisor should route the traffic to itself
but it's better to be su...

4ebd416e5945069ba7e60276f2248355fc89211e authored over 1 year ago by Simone Basso <[email protected]>
feat(unetstack.go): expose mitmx CA cert (#38)

Required to write some tests for
https://github.com/ooni/probe/issues/2531

ab0dc13be014a2f55e232798e93384e35255f670 authored over 1 year ago by Simone Basso <[email protected]>
fix(UNetStack): expose the TLSMITMConfig

Also part of https://github.com/ooni/probe/issues/1803

85d962536ff3bc1ca376d97a891463f3b0c78902 authored over 1 year ago by Simone Basso <[email protected]>
feat: fork google/martian/v3/mitm to build expired certs (#37)

To move forward with https://github.com/ooni/probe/issues/1803, I want
to generate expired cert...

c91fe50ff8a593393543b973263bb0b4c6be5476 authored over 1 year ago by Simone Basso <[email protected]>
feat: implement missing DPI rules (#36)

This diff implements the missing DPI rules required to complete
https://github.com/ooni/probe/i...

4c9ebf9611c6e56bbd21f7c8478c0acc522768aa authored over 1 year ago by Simone Basso <[email protected]>
fix(DPISpoofDNSResponse): return NXDOMAIN if rule contains no address (#35)

Required to move forward with https://github.com/ooni/probe/issues/1803

4889f9501fcfb56e7e5be938e9b7b436ed42391a authored over 1 year ago by Simone Basso <[email protected]>
feat: add DPI rule to reject SYN with RST|ACK (#34)

Part of https://github.com/ooni/probe/issues/1803

42ca83ac5cbc4b90808a94965da6009250505ec8 authored over 1 year ago by Simone Basso <[email protected]>
feat: implement sending EOF for offending SNIs (#33)

Useful to move forward with https://github.com/ooni/probe/issues/1803

c9f1063f21d9d533fdd85222e4f075e46b936a3d authored over 1 year ago by Simone Basso <[email protected]>
feat(DNSConfig): allow to remove entries (#32)

Part of https://github.com/ooni/probe/issues/2029

219d252971fccbabe3ebf077eb2984e3471b880b authored over 1 year ago by Simone Basso <[email protected]>
fix(StarTopology): prevent adding the same host multiple times (#31)

I noticed this was possible while working on
https://github.com/ooni/probe-cli/pull/1205.

Re...

db1220e00a4b1e63605e72fd3e33600a46ae27eb authored over 1 year ago by Simone Basso <[email protected]>
dnssserver.go: expose DNSServerRoundTrip and DNSConfig.Lookup (#30)

These two functionalities are currently hidden, but users of this
library need to write less du...

b50edc007f8149a19ea7c138cdbfe4af356baf79 authored over 1 year ago by Simone Basso <[email protected]>
feat(dpiblock.go): implement string-based TCP RST (#29)

This diff adds support for sending a RST segment when the client to
server flow includes a spec...

f920565ac5f0a4534c44c5fca7715bb0c7cb1fb8 authored over 1 year ago by Simone Basso <[email protected]>
doc: clarify updating gvisor

6bfb478aadf7bc439e7d881133273042afc4f58a authored over 1 year ago by Simone Basso <[email protected]>
fix(tlsmitm.go): support TLS handshake with 8.8.8.8 w/o any SNI (#25)

Reference issue: [#2464](https://github.com/ooni/probe/issues/2464)

This diff aims to fix the...

dee7dba8cee9efa2a7eea41005ef331fc5da3edf authored over 1 year ago by kelmenhorst <[email protected]>
chore: upgrade go version and dependencies (#28)

This diff upgrades to go1.20 and a recenty development snapshot posted
on the `go` branch of gv...

fc40c4bce01c2b7708871247d83f4b2a29f89a20 authored over 1 year ago by Simone Basso <[email protected]>
[API CHANGE] feat: implement DNS spoofing (#27)

This diff implements DNS spoofing. To this end, we restructure how RST
injection works first. W...

d01cdcbb35f9a1c0d152700a2d509d05e5cc586a authored over 1 year ago by Simone Basso <[email protected]>
fix(dnsserver): make sure CNAME is canonical (#24)

Otherwise, if the user does not provide a canonical CNAME, the server
code will panic at runtime.

83d9720a67f9dfbe6c933c280ba8bac8f41aa7a1 authored almost 2 years ago by Simone Basso <[email protected]>
Update CONTRIBUTING.md

40fe207b306a893bcd95ac6ae0bd7404ad50390d authored almost 2 years ago by Simone Basso <[email protected]>
Update PERFORMANCE.md

36778b8c7837844daa1028e901e72dd7a23045c3 authored almost 2 years ago by Simone Basso <[email protected]>
Update PERFORMANCE.md

c305c357b8402e8c888ff8886440946f1ee1ac58 authored almost 2 years ago by Simone Basso <[email protected]>
fix(throttling): increase delay per flow (#23)

So, we can model a link with more losses and more delay for the
throttled flow, which further s...

46c188d2f1769b28e498235b9e3291406b1799e1 authored almost 2 years ago by Simone Basso <[email protected]>
doc: add note about the library performance (#22)

In this note, we explain why we think it's fine to use one of the link
models we have to write ...

059c7e9e289b80f997439865e5542baaebd95c0e authored almost 2 years ago by Simone Basso <[email protected]>
doc: add architecture document (#21)

Let's document how this Go module is structured.

0d3e8366dd713771e3f2a6f74a23c1f9a2d7f9ee authored almost 2 years ago by Simone Basso <[email protected]>
doc: add contributing, code of conduct, and design document (#20)

This PR adds additional document that is nice to have.

51d09de57a5ee3e3c2b5245395de1c4d263c5b3b authored almost 2 years ago by Simone Basso <[email protected]>
cleanup: remove unnecessary or non-ergonomic code (#19)

* dnsping is already an integration test

* httping is also already an integration test

* c...

4f18b2e46987fd0bd2432f5dd5838cf7832539b5 authored almost 2 years ago by Simone Basso <[email protected]>
doc: add doc.go for the package (#18)

cbacd3f53f746ad44ae8df8f46a9d7e8004c18da authored almost 2 years ago by Simone Basso <[email protected]>
feat: add complete example using star topology (#17)

While there, get rid of the throttle command, which was useful earlier
on during development, b...

53556708952529dc77b3dd913210236f7d077779 authored almost 2 years ago by Simone Basso <[email protected]>
chore: split racedetector and coverage (#16)

I think it's better to split them. Eventually coverage will be based on
unit tests while race d...

083615294765ba61819b9c300511d5b98562e8f1 authored almost 2 years ago by Simone Basso <[email protected]>
fix: only compute coverage for toplevel package (#15)

I do not fully understand what coveralls is showing and I'd like to see
the toplevel package an...

8537ec4a9fd0b3ce121fa139bf06b60c789460f4 authored almost 2 years ago by Simone Basso <[email protected]>
fix: reduce integration tests flakiness (#14)

This diff attempts to make integration tests less flaky.

55b7af9d41e0f695684ac3ebad04ebe0a0817483 authored almost 2 years ago by Simone Basso <[email protected]>
chore: add coverage measurements (#13)

90842aedfd572643d358b3f55b0974887889fb9c authored almost 2 years ago by Simone Basso <[email protected]>
doc: explain usage in the README (#12)

While there, recognize that we should support an UnderlyingNetwork
implemented using the stdlib...

0790900d4c68039a0208492b65a2c53034b491c4 authored almost 2 years ago by Simone Basso <[email protected]>
doc: start adding content to the README

4952cd82c073ab5e34a820f522ceede8d8fbd6d0 authored almost 2 years ago by Simone Basso <[email protected]>
chore: add initial empty readme

While there, notice that we have a flaky test.

df21f07ede74d17657765dc4ca81419685a9ddb4 authored almost 2 years ago by Simone Basso <[email protected]>
chore: add LICENSE

02a0ca8054ae35223cc2b8690572c1e9dafb2882 authored almost 2 years ago by Simone Basso <[email protected]>
fix(pcap.go): make sure tcptrace can read our pcaps (#11)

We were using the wrong link layer constant.

6e0d618f0cb48b96c78cd066e23cf3aa1208b1dd authored almost 2 years ago by Simone Basso <[email protected]>
cleanup: remove legacy link forwarding code (#1)

Now that we have a better link forwarding code implementation, drop the
old one.

36797e944c3a1da8588174b606710bec3ede56fb authored almost 2 years ago by Simone Basso <[email protected]>
feat(link): select best link forwarding algorithm (#10)

Rather than always using the same function to emulate a link, choose the
best function by inspe...

1c8125eff2e771448cbc21f1ab39321912742b27 authored almost 2 years ago by Simone Basso <[email protected]>
[ci skip] fix(linkfwdfull): finish authoring a comment

fd4345edcf65318bb6b1ffb2e8b019209b32f26b authored almost 2 years ago by Simone Basso <[email protected]>
feat: introduce full forwarding algorithm (#9)

This algorithm is an evolution of the current link forwarding algorithm
attempting to make TCP ...

ed4f5e27857841a7fd4d9367e619038b52b88417 authored almost 2 years ago by Simone Basso <[email protected]>
cleanup(link): remove unused context and sort arguments (#8)

We put mandatory arguments first and optional ones later. In the current
state of the main bran...

5b12ed6e71aa499d7a2125cb0fc5c6bef4ed819e authored almost 2 years ago by Simone Basso <[email protected]>
feat: introduce a delay-only forwarding algorithm (#7)

We will select this algorithm when the user only configures a delay
without any PLR or DPI need...

ede653d0334b2fbea63b93f06894a39118382abd authored almost 2 years ago by Simone Basso <[email protected]>
feat: introduce fast forwarding algorithm (#6)

This diff adds support for a fast forwarding algorithm that has as
little as possible overhead....

610f2eb4e5884a10344a23f54d2fbcef067c8122 authored almost 2 years ago by Simone Basso <[email protected]>
fix(calibrate): produce actionable CSV entries (#5)

We need to include in each row:

1. the prefix of the PCAP files we're capturing;

2. the im...

c68c412766f419527431dba478cdf36cc869858b authored almost 2 years ago by Simone Basso <[email protected]>
fix: decouple PLR and packet dropping (#4)

By having a dedicated flag, we can separate dropping a single packet
from imposing a specific e...

9a3d907ff15dab97249d982ee6dcf464fae35844 authored almost 2 years ago by Simone Basso <[email protected]>
fix(gvisor): buffered channel for write notifications (#3)

Lacking precise performance data, it seems wiser to have the write
notification be as large as ...

69a1cb1864e647a5c23195b6b090ca21b7dc2310 authored almost 2 years ago by Simone Basso <[email protected]>
fix(gvisor): make sure WriteNotify does not hang (#2)

To this end, we need to avoid writing into the notification channel once
the stack has been clo...

99859f031bc1db1ddbd4d95dcc234af10da5e178 authored almost 2 years ago by Simone Basso <[email protected]>
cleanup: we currently don't use the frame's PLR

6279c1696ec2959f265b38714e9f26e16cd4f183 authored almost 2 years ago by Simone Basso <[email protected]>
cleanup: we don't need a mutex locked link losses manager

We can perform all the operations we need inline.

90266b73a1ff8b943bccd5521debd20e57ebb2d3 authored almost 2 years ago by Simone Basso <[email protected]>
feat: make integration tests more robust

In particular, make sure we have always seen samples when we
expected to be samples (be them spe...

9d33ce1aa96ed03bf74f78936d5ffafd3632364c authored almost 2 years ago by Simone Basso <[email protected]>
feat: redesign deep packet inspection

It was a bit difficult to implement deep packet inspection by
wrapping a network interface, so l...

7b2c079360b3acd15e06689f882b55d8e7a2fb64 authored almost 2 years ago by Simone Basso <[email protected]>
fix(link): do not mutate the frame

While that mutation was safe, it is better to not even try.

We can easily make a shallow copy a...

704c5cba5c57de0f8a10e8fb13d9c05b5827b18a authored almost 2 years ago by Simone Basso <[email protected]>
cleanup: remove unused LinkDirection

8a8c15832583eef72a02aee3d09eb05d87eb4b6c authored almost 2 years ago by Simone Basso <[email protected]>
fix: pass logger to DPIEngine

We're not quite there in terms of DPI though. I think we
probably need to redesign it a bit for ...

e6e4c8b67316d251cb698136004e45e180a720ca authored almost 2 years ago by Simone Basso <[email protected]>
feat: continue improving integration tests

e7d894ff937c1e446d3f43e5eb2d7481bbaaff91 authored almost 2 years ago by Simone Basso <[email protected]>
feat: continuous integration

09291af58f89b0bded4d0db2e5d4af2491edc906 authored almost 2 years ago by Simone Basso <[email protected]>
feat: move into the ooni namespace

45b2e1932460f87e3b7f278b7769f1f58ce4d95c authored almost 2 years ago by Simone Basso <[email protected]>
feat: start adding integration tests

2e869049e13cccee0ae3c2d5da17f0bab22427c5 authored almost 2 years ago by Simone Basso <[email protected]>
feat: implement RST injection

e3c573fff2e862dcc4e7facdf6e1f9c9982136e4 authored almost 2 years ago by Simone Basso <[email protected]>
feat: implement packet-dropping rules

5c5e22e9fd412400c6a9fa8829a4143ae287453e authored almost 2 years ago by Simone Basso <[email protected]>
feat: implement DPI and throttling

78374276144a5bb7690eeff1ce79a990290a1118 authored almost 2 years ago by Simone Basso <[email protected]>
fix: make router fast

There is no need to create goroutines in the router when
we can instead let the Link's writer do...

75f410ca245e58864e43015eaf8bf04719f4ab5e authored almost 2 years ago by Simone Basso <[email protected]>
refactor: make it easier to switch topology

35cc5d456d4de81fc1196815b461926cbe828b32 authored almost 2 years ago by Simone Basso <[email protected]>
feat: easily switch topology in commands

It seems there are some serious issues with the router and the
best way for me to investigate is...

919ea2c6c6fed5e9830edd67cad367f682460ba8 authored almost 2 years ago by Simone Basso <[email protected]>
fix(PPPTopology): don't use hardcoded addrs

e56876158650d1d9650bff51536f8cbf96610c17 authored almost 2 years ago by Simone Basso <[email protected]>
feat: implement NDT0 over TLS

5d763a694a9706e3187600d7face84f386a44a41 authored almost 2 years ago by Simone Basso <[email protected]>
feat: introduce the point-to-point topology

This change allows us to simplify the calibrate command.

1ce2199381a21cb75b4868a5c1a207efbcc827ba authored almost 2 years ago by Simone Basso <[email protected]>
refactor: put simplified NDT client into the library

bf5ada7d77b7873fb3e38d7c13de45fd5c024908 authored almost 2 years ago by Simone Basso <[email protected]>
feat: capture packets in dnsping and httpping

9c9e6037e2006e6a269904b1c6834dd4d225bded authored almost 2 years ago by Simone Basso <[email protected]>
refactor: start adding support for DPI

The general idea here is that we now have a mechanism for wrapping NICs
when creating a link. Th...

e9f5862558d145ecf7a9408df2351c9ae957e0ad authored almost 2 years ago by Simone Basso <[email protected]>
refactor: rename Topology as StarTopology

While there, improve documentation.

15b840575d62572c95356961e9bc2a7c0c784d04 authored almost 2 years ago by Simone Basso <[email protected]>
chore: minor changes after code review

1c52219f230996b60ac38e938e04c3c9ec3ab41f authored almost 2 years ago by Simone Basso <[email protected]>
fix: avoid overloading stdlib errors

Let's introduce some library specific errors instead.

ad8158c6d1871aa999e5c098ecd39880e066944a authored almost 2 years ago by Simone Basso <[email protected]>
feat: add routing and topology

f951aa89f11e39e8089f9c02f64c135b78fa31bc authored almost 2 years ago by Simone Basso <[email protected]>
fix: improve gvisor.go logging

48e3e1487ba9e1fe1106862b4f793ccdef39b939 authored almost 2 years ago by Simone Basso <[email protected]>
chore: go mod tidy

8b485a051467a92938ec08257aa5aa99f26cbd89 authored almost 2 years ago by Simone Basso <[email protected]>
feat: expose DNS client code

326f6b19816ce5023f4593e171caf471b99837fc authored almost 2 years ago by Simone Basso <[email protected]>
refactor: nextNICName -> newNICName

341b79b7a58138de6fb53ba733ec6c2b406e2992 authored almost 2 years ago by Simone Basso <[email protected]>
doc: document the purpoce of cmd/calibrate

cdc140b3479a868af6e25305a41533f8229d45d4 authored almost 2 years ago by Simone Basso <[email protected]>
fix: ignore PCAP files

21950869f44b8ee0262256db7b2c34d8fa63fad5 authored almost 2 years ago by Simone Basso <[email protected]>
feat: introduce PCAP packet captures

When I wrote the prototype inside the OONI codebase, I thought
a periodic counter would be fine ...

2f34a2767eed6f9e075bcd794c0098f7f90d6478 authored almost 2 years ago by Simone Basso <[email protected]>
refactor: let UNetStack implement NIC

The fact that previously we had a method called NIC() that
returned the NIC would have made PCAP...

9abed6b07af51e267952f619d21a5036eb7f1425 authored almost 2 years ago by Simone Basso <[email protected]>
netem: emulate the internet using gvisor

764f6b40cea0c96d2befd60089348ac68587604e authored almost 2 years ago by Simone Basso <[email protected]>