#29370: Measure mode with arbitrary tgen traffic models
---------------------------------------+------------------------------
 Reporter:  irl                        |          Owner:  metrics-team
     Type:  enhancement                |         Status:  reopened
 Priority:  Low                        |      Milestone:
Component:  Metrics/Onionperf          |        Version:
 Severity:  Normal                     |     Resolution:
 Keywords:  metrics-team-roadmap-2020  |  Actual Points:  0.1
Parent ID:  #33321                     |         Points:  1
 Reviewer:                             |        Sponsor:  Sponsor59
---------------------------------------+------------------------------

Comment (by karsten):

 Thank you, robgjansen and acute, for your comments above! The more I think
 about this feature, the more I come to the conclusion that we do not need
 it.

 I'll start with addressing acute's thoughts:

 Replying to [comment:9 acute]:
 > Having a pass-through feature could be very useful for research. For
 example, evaluating Tor performance with clients in mobile or other type
 of bandwidth-constrained networks would require a model that minimises the
 used bandwidth; or if a user wanted to fill the pipe for a congestion
 control experiment a larger file size model would be needed etc.

 I can see how different network environments would require different
 measurement models. But maybe we can identify how these models should
 differ and then add parameters to OnionPerf's command line that feed into
 the generated TGen models. For example, the file size of the downloaded
 file could easily be a `--filesize` parameter on the command line.

 > If there is no appetite for implementing this feature, what we could
 have instead is documentation that explains to users how to use their own
 model if they want to, and keep our own models (including oneshot)
 internally as suggested here.

 If researchers need to change parts of a model that cannot be configured
 using the OnionPerf command line interface, they will have to change the
 OnionPerf sources to do what they want. I'd say that that's still easier
 than editing a TGen XML file. If the missing piece is better
 documentation, we should provide that.

 Now to robgjansen's thoughts:

 Replying to [comment:8 robgjansen]:
 > The use case was to allow OnionPerf to measure traffic patterns other
 than the usual "file download" pattern (the model that OnionPerf generates
 for itself internally). So, for example, you could set up a tgen traffic
 model to act like a ping utility, sending a few bytes to the server side
 and back to the client to measure circuit round-trip times.

 The ping model is something that we're considering to implement in #30798,
 so let's consider what that would entail:
  - We would need a different TGen client model that sends a few bytes
 every second or every configurable amount of time.
  - We would also need to update the analysis code in OnionPerf. We'd no
 longer be interested in elapsed seconds between start and reaching a
 certain stage of the download. We'd want to extract the time between
 sending a ping and receiving a pong, for every one of them.
  - In fact, we might want to parse the TGen server logs as well, to learn
 when a ping arrived and the pong was sent back. We have that information,
 which is not available to the typical ping application, so why not use it.
  - We would have to update the visualization code to extract and display
 different metrics than in the bulk download case.

 Thinking about different traffic models, what if we wanted to measure
 something like an `HTTP POST` rather than the `HTTP GET`? I'd assume that
 we'd have to provide a different TGen ''server'' model file as well, but I
 don't know for sure. If that's still possible with replacing just the TGen
 client model, there's probably another model that requires a custom TGen
 server model which we just didn't think of yet.

 All in all, it's more than just ''the'' TGen model. We'd have to write a
 fair amount of code in order to implement a useful ping model in
 OnionPerf.

 > My initial idea was not to make OnionPerf generate these models, but
 rather to create them externally and have OnionPerf just "pass them
 through" to tgen. That means whoever generated the models would need to
 correctly set the server addresses and SOCKS ports, etc.
 >
 > I'm not sure that Tor wants this feature for OnionPerf. An alternative
 could just be to wait until you have a specific model in mind that you've
 decided you want to start measuring, and then generate that model
 internally as we do now with the 5MiB downloads. In that case the pass-
 through feature would not be needed, and you wouldn't have to maintain
 something that you don't use.
 >
 > Do you think the pass-through feature is actually useful for Tor, or
 does generating models internally make more sense?
 >
 > (The tgen models in Shadow are generated with the correct
 addresses/ports during the phase when we generate the Shadow experiment
 configuration. This is currently done using the Shadow-Tor config
 generator [https://github.com/shadow/tornetgen here].)

 If there had been existing models that we could have plugged in easily,
 that would have been a good argument in favor of this feature. But it
 seems like we could as well reuse the model-generating code from the
 Shadow-Tor config generator if we wanted to support these models in
 OnionPerf. And still, we would have to write new analysis and
 visualization code to evaluate those new measurements.

 The internally generated model also has the advantage that it's easier to
 use. All it takes to start a measurement is a (potentially quite long)
 command with several parameters. But it doesn't require a (still
 potentially long) command plus one or two files. Describing the experiment
 would then be a matter of listing all software versions and the OnionPerf
 command used to start measurements.

 My suggestions are that we:
  - make the current bulk transfer model more configurable by adding
 parameters like initial pause, transfer count, or filesize as part of
 #33432;
  - develop a ping model as internal model where OnionPerf generates TGen
 files, plus analysis and visualization code, as part of #30798, assuming
 there's need for developing such a model; and
  - remove the `-m/--traffic-model` parameter from the codebase and close
 this ticket as something we considered carefully but decided against.

 Oops, this comment was longer than I had expected when starting to write
 it. Thanks for making it to the end, and thanks again for sharing your
 thoughts above. I'm open to discussing this more if there are aspects that
 I didn't acknowledge as much as I should.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29370#comment:10>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs

Reply via email to