Opened 8 years ago

Closed 3 years ago

#8505 closed enhancement (wontfix)

ExitCompass: statistics about Fast Exits

Reported by: mo Owned by: gsathya
Priority: Medium Milestone:
Component: Metrics/Compass Version:
Severity: Normal Keywords:
Cc: karsten, atagar, rejo@… Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description (last modified by mo)

For the Exit Reimbursement Program, we need the following:

  • collect aggregate bandwidth of exit relays per family and country (parse consensus/descriptors using stem), together with relay contact info
  • calculate amount of compensation (in USD) per family
  • webinterface to display that, a history of these values and a total aggregate per month
  • generate monthly reports and send a summary to moritz (+ tor-reports?), and detailed reports to families

Child Tickets

Change History (12)

comment:1 Changed 8 years ago by gsathya

Cc: karsten added

comment:2 Changed 8 years ago by gsathya

Cc: atagar added

(cc-ing atagar coz he likes things that use stem and I would love his code review on this tool _)

comment:3 Changed 8 years ago by mo

Description: modified (diff)

comment:4 Changed 8 years ago by mo

Description: modified (diff)

comment:5 Changed 8 years ago by mo

I modified the description because the new objective is to apply a factor based on the country the relays are based in, so we need to aggregate not only by family, but also by country.

We should play with deriving a factor that is inversely proportional to the total exit probability of the country, and combine that with a constant per country which can be tweaked in respect to laws (treaties etc).

quick draft pseudo code

for all relays:
 exitbw[relay.family][relay.country] += relay.exitbw

for family in [0..families]:
 for country in [0..countries]:
  cashout[family] += exitbw[family][country] 
                     * constantfactor[country] 
                     / exitprobability[country]   # take care of 0

comment:6 Changed 8 years ago by mo

Description: modified (diff)

comment:7 in reply to:  description ; Changed 8 years ago by gsathya

Replying to mo:

For the Exit Reimbursement Program, we need the following:

  • collect aggregate bandwidth of exit relays per family and country (parse consensus/descriptors using stem), together with relay contact info

Hi. Does anyone know the most optimal method of grouping relays by family?

comment:8 Changed 8 years ago by atagar

Hi. Does anyone know the most optimal method of grouping relays by family?

A family relationship only exists if two relays *both* declare each other to be in their family. That is to say, if relay A declares B to be in its family, but B doesn't declare A then no family exists.

I suppose you could process descriptors into sets of relays that all declare families with each other. Some relays may appear in multiple sets though. I don't know an elegant way of doing this offhand (code I have in mind is a little messy).

comment:9 in reply to:  8 Changed 8 years ago by gsathya

Replying to atagar:

I suppose you could process descriptors into sets of relays that all declare families with each other. Some relays may appear in multiple sets though. I don't know an elegant way of doing this offhand (code I have in mind is a little messy).

If I have 3 relays A, B and C which have each other in their family. Ideally we should have one family formed. but if I group them with *each other*, I'd get 3 families no?

comment:10 in reply to:  7 Changed 8 years ago by peer

Replying to gsathya:

Hi. Does anyone know the most optimal method of grouping relays by family?

#6662 might be relevant. A summary might be to group by the largest mutual relationship unit and merge overlapping families, taking into account cached descriptors for relays that are not available at the time of examination.

comment:11 Changed 7 years ago by rejozenger

Cc: rejo@… added

comment:12 Changed 3 years ago by karsten

Resolution: wontfix
Severity: Normal
Status: newclosed

I believe that either the "Exit Reimbursement Program" has ended long ago, or that whoever is in charge for that has found an alternative solution. Closing.

Note: See TracTickets for help on using tickets.