How to publish something in the gnutella overlay?

Home Forums PeerfactSim Forum How to publish something in the gnutella overlay?

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
  • #930
    Anas Anis

    Hi everybody,

    I’m trying to publish something over gnutella (or gia) overlay, and
    i’m trying to add the suitable action to the actions file. There is a
    method: publishSet(Set<IResource> res) inside the class
    AbstractGnutellaLikeNode, and I’m trying to call this method from the
    actions file. But I don’t know how to pass the right parameters to
    this action inside the actions file. I’m also trying to call the
    queryInfo, but no idea about how to write the correct parameters.

    Matthias Feldotto

    to publish something over an arbitrary overlay you should register an application on top of the overlay. For the example gnutella you can use the GnutellaApplication (as it is done in example configs) or the FilesharingApplication2. These applications offer easy to use methods (with only a few parameters) and initiate publish or lookup methods with correct parameters in the underlying overlay.

    A good example could be found in the current version of the simulator in the config “config/visualization/gnutella04_bitmap.xml”.

    I hope I could help you.

    Anas Anis

    Sorry, but i couldn’t understand your answer!
    I’m asking about how to call publishSet from the actions-file, and how
    to pass the suitable parameters to it. In the example that you
    mentioned to me, there is only a call to startScheduleConnecting from
    the class GnutellaApplication, and this is the only type of calls made
    inside the actions-file of this example.


    Anas Anis

    In the following posts i’ll put questions that I encountered while
    trying to run the simulator on Gnutella-like structure. I hope that
    somebody may help me solving these questions.

    Is there more than the following operations that can be performed on
    GIA or Gnutella0.6 overlay to produce any workload that we like?

    Is there anything else can be performed on these overlays?

    Anas Anis

    Is there any reference that might be useful to understand the meaning
    or the effect of each action that can be performed over an overlay?

    like for example, what is the effect of publish rank or set? is it
    that a node declares that it contains some information that might be
    interesting for others?
    and what is the difference between query and startQuery?

    Anas Anis

    I’m trying to execute the following actions aver GIA overlay:

    _ECHO 1s “Simulation Started – Join gestarted”

    Group1 1s join callback
    Group2 2s-3s join callback
    Group3 3s-6s join callback
    Group4 7s-10s join callback
    Group5 10s-19s join callback
    Group6 10s-20s join callback
    Group7 10s-20s join callback
    Group8 10s-20s join callback
    Group9 20s-30s join callback
    Group10 20s-30s join callback
    Group11 20s-30s join callback
    Group12 20s-30s join callback
    Group13 20s-30s join callback

    Group1 100s publishRanks 100
    Group2 101s publishRanks 102
    Group3 104s publishRanks 103
    Group4 108s publishRanks 104

    Group7 130s queryRank 100 10
    Group8 131s queryRank 101 10
    Group9 132s queryRank 103 10
    Group10 133s queryRank 107 10

    Group8 210s leave false
    Group9 210s leave false
    Group10 210s leave false
    Group11 210s leave false
    Group12 210s leave false
    Group13 210s leave false

    But when reading the results, I find every thing is zeros, except from
    the number of peers and the number of messages (which messages?). So
    why everything is zero?

    and also for the number of peers, it climbs up to 1000 (the size
    defined in the config file) and never goes down, even that it is
    written in the actions-file that there is some groups will leave. So,
    I was expecting the number to go down after 210 seconds, and that
    didn’t happen?!

    Thim Strothmann

    A lot of questions, since answering them in detail would take me more
    than an hour (and I would contribute way to much too your paper), I
    will answer them in a brief way:

    1) Your action-file that you want to be executed cannot work. Your
    arew trying to perform a LOT of action in under 210 seconds, which
    should not be possible for the simulator (+ it’s hard for the overlay
    to get a good structure, you must give the overlay some time to get
    its structure).
    2) If I am not mistaken you are using the “leave” command in the
    action files wrong. Take a look at other action files (I think it
    should happen in some chord configs)
    3) Not all of the action you want to be executed (mentioned in the
    fourth post) can be called from an actions-file. The reason for this,
    that for some actions/methods there it does not make sense to call
    them from “the outside”. As Feldi mentioned before the
    GnutellaApplication is a pretty good way to generate Traffic + it is
    easier to configure.
    4) As for the reference/explanation for the methods of gnutella06 and
    Gia, I am not sure. I would expect that they are explained in the
    paper which introduce Gnutella06 and Gia (this is Guesswork from my
    side, I Admit it). If this is not the case, then the only way to
    understand them is to work your way through the code.

    Kind regards,

    Anas Anis

    First, thanks for your answer,
    For your third point: how can I use GnutellaApplication for GIA or
    Gnutella0.6 overlays? As far as I understood, GnutellaApplication can
    be used in the simulation of Gnutella0.4, so not for GIA nor for
    Gnutella0.6. It is essential for me to perform some traffic (even the
    very same traffic) over these overlays in order to have a reasonable
    comparison between the overlays.

    Kind regards,

    Anas Anis

    Hi again,

    For the first point you mentioned: even when I gave some more time for
    the overlay to execute these actions like the following:

    Group1 1s join callback
    Group2 2s-3s join callback
    Group3 3s-6s join callback
    Group4 7s-10s join callback
    Group5 10s-19s join callback
    Group6 10s-20s join callback
    Group7 10s-20s join callback
    Group8 10s-20s join callback
    Group9 20s-30s join callback
    Group10 30s-40s join callback
    Group11 40s-50s join callback
    Group12 50s-60s join callback
    Group13 60s-70s join callback

    Group1 100s publishRanks 100
    Group2 201s publishRanks 102
    Group3 304s publishRanks 103
    Group4 408s publishRanks 104

    Group7 630s queryRank 100 10
    Group8 731s queryRank 101 10
    Group9 832s queryRank 103 10
    Group10 890s queryRank 107 10
    Group6 1015s-1200s leave callback
    Group7 1015s-1200s leave callback
    Group8 1015s-1200s leave callback
    Group9 1015s-1200s leave callback
    Group10 1015s-1200s leave callback

    I am still getting the same results?!

    Anas Anis

    And also for the leave operation, and even after the modification that
    you suggested, it seems like it has no effect. The number of peers is
    not changed after it reaches 1000 till the end of simulation.

    Thim Strothmann


    since I do not know your xml file, this involves some guess-work from
    my side.
    In your actions file you specified actions due to a time of 1200
    seconds (which is 20 minutes) … i am not sure how fast joins can
    happen in gia and/or gnutella, but in chord you need at least
    approximatly 30 Minutes “join-time” for 1000 nodes so that all nodes
    are properly in the overlay.

    Regarding your results: This heavily depends on which analyzer you use
    (and at which timo of point is started, and so on) … if it is
    started to late in the xml-file, then he just cannot measure your
    results. There are a lot of reasons why you do not get any good
    result. My best advice ist that you start with a small scenario which
    gives you the expected results and then extend more and more to see
    when it goes wrong.

    Anas Anis

    I am using the following analyzers

    <Monitor class=”de.tud.kom.p2psim.impl.common.DefaultMonitor”
    start=”0″ stop=”$finishTime”>

    <Analyzer class=”de.tud.kom.p2psim.impl.vis.analyzer.VisAnalyzer”


    So the analyzing is performed during the full execution time.

Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.

Comments are closed.