Home › Forums › PeerfactSim Forum › How to publish something in the gnutella overlay?
- This topic has 11 replies, 1 voice, and was last updated 9 years, 10 months ago by
Anas Anis.
-
AuthorPosts
-
May 21, 2015 at 8:14 pm #930
Anas Anis
GuestHi 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.
ThanksMay 21, 2015 at 8:15 pm #935Matthias Feldotto
GuestHey,
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.
May 21, 2015 at 8:16 pm #936Anas Anis
GuestSorry, 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.Thanks,
May 21, 2015 at 8:20 pm #939Anas Anis
GuestIn 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?
join
leave
publishRanks
publishSet
queryRank
query
startQueryIs there anything else can be performed on these overlays?
May 21, 2015 at 8:20 pm #940Anas Anis
GuestIs 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?May 21, 2015 at 8:21 pm #941Anas Anis
GuestI’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 callbackGroup1 100s publishRanks 100
Group2 101s publishRanks 102
Group3 104s publishRanks 103
Group4 108s publishRanks 104Group7 130s queryRank 100 10
Group8 131s queryRank 101 10
Group9 132s queryRank 103 10
Group10 133s queryRank 107 10Group8 210s leave false
Group9 210s leave false
Group10 210s leave false
Group11 210s leave false
Group12 210s leave false
Group13 210s leave falseBut 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?!May 21, 2015 at 8:22 pm #943Thim Strothmann
GuestA 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,
ThimMay 21, 2015 at 8:22 pm #944Anas Anis
GuestFirst, 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,
May 21, 2015 at 8:23 pm #945Anas Anis
GuestHi 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 callbackGroup1 100s publishRanks 100
Group2 201s publishRanks 102
Group3 304s publishRanks 103
Group4 408s publishRanks 104Group7 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 callbackI am still getting the same results?!
May 21, 2015 at 8:24 pm #946Anas Anis
GuestAnd 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.May 21, 2015 at 8:25 pm #948Thim Strothmann
GuestHi,
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.May 21, 2015 at 8:25 pm #950Anas Anis
GuestI 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.overlay.gnutella04.analyzer.GnutellaMessageAnalyzer”/
>
<Analyzer
class=”de.tud.kom.p2psim.impl.overlay.gnutella04.analyzer.GnutellaQueryAnalyzer”/
>
<Analyzer
class=”de.tud.kom.p2psim.impl.overlay.gnutella04.analyzer.GnutellaNetLoadAnalyzer”/
><Analyzer class=”de.tud.kom.p2psim.impl.vis.analyzer.VisAnalyzer”
messageEdges=”true”>
<OverlayAdapter
class=”de.tud.kom.p2psim.impl.overlay.gnutella04.vis.Gnutella04Adapter”/
>
</Analyzer></Monitor>
So the analyzing is performed during the full execution time.
Thanks -
AuthorPosts
- You must be logged in to reply to this topic.