|
From: Sander v. D. <sgv...@gm...> - 2013-02-24 16:57:37
|
On Sun, Feb 24, 2013 at 3:26 PM, Stefan Glaser <gla...@gm...>wrote:
> Hey all,
>
> first of all, great to see some discussion going on again! Thank you for
> your great input!
>
> About security:
> [...]
>
> Though I agree it is important to think about security, what is the
benefit for a team in bypassing the proxy? It's purpose is to not
disadvantage a team in case of severe network delays and keep timing
constant, if a team circumvents it it only exposes itself to random timing.
In any case if it is an issue we can make the server (or the firewall)
enforce a maximum amount of connections, and have the proxy open that
amount when it starts.
> About providing results to the agents:
> What about holding the result file in the standard robocup user home
> (where it is probably written) and put a sym link to it in each home
> directory? So each agent should always find the actual result file in their
> home directory. Or are there restrictions/drawbacks in accessing such a
> file in the robocup user home?
>
That is an option. Maybe giving direct read access to the file would be
easier, as teams sometimes delete the symlinks from their directory on
accident.
> The only valid argument in my opinion for the RSG-format is that teams
> already have a parser. When using xml for example, it could be better
> visualized (e.g. via xsl as html-page), one could have validation of the
> document via DTD or Schema and there exist a lot of visual editors,
> enforcing and suggesting tags according to the DTD/Schema. On the other
> hand it may be a bit harder to edit directly from command line. But as
> Hedayat mentioned, we can provide different result formats later, also with
> respect to the Score Board Sander mentioned. Don't get me wrong, I don't
> want to exclude the RSG-format. I just wanted to mention, that it is not
> neccessarily the best choice for consistency and administration.
>
If something generates it as XML, we can also use XSLT to generate RSG from
it. What I wanted to say is, we just have to guarantee RSG will be there,
regardless of how it is generated. With that said, I do agree with the
benefits of XML. I'd also put JSON or YAML in the considerations, but any
can be generated from the other.
> Sander, do you have any documentation with respect to the RCSimControl?
>
Unfortunately not more than the in-code documentation at the moment. I am
working on it a bit more atm, I'll in any case make it so that Doxygen
generates something useful.
> Regards,
> Stefan
>
>
>
> Am 23.02.2013 18:58, schrieb Sander van Dijk:
>
>> Hey all,
>>
>> Few things from me to add to the discussion:
>>
>> - Regardless from implementation and discussion about which program should
>> be responsible, let's tackle first how teams access it. I for now am in
>> favour of files written somewhere that are accessible to all teams, e.g. a
>> special user's ('results') home dir that is readable for everybody. I
>> agree
>> with Hedayat that they should be in any case RSG. This would be the
>> easiest
>> for teams to implement, and we could even make them by hand in case we
>> don't manage to create the automated tools in time, which as OC makes me
>> most comfortable :).
>>
>> - Just FYI before too much redundant work is done, the organization for
>> Eindhoven is looking into using some competition wide centralized 'Score
>> Board' application that has been developed. I am awaiting more details on
>> what it actually is, but it looks like something that makes the gathering
>> and publication of results automatic, and perhaps we can plug into it.
>>
>> - Finally, I'd just like to point RCSimControl (
>> http://launchpad.net/**rcsimcontrol <http://launchpad.net/rcsimcontrol>),
>> which I developed during the RoboCup
>> funded project in which I also created the TBB multithreading for the
>> server. I always planned to use it to create a more advanced league
>> manager
>> as well (it controls multiple parallel instances; I use it to run a small
>> scale tournament for qualification on our super cluster). But development
>> of any other tools by somebody who actually has the time to invest in it
>> is
>> of course always welcome ;).
>>
>> Cheers,
>> Sander
>>
>>
>> On Mon, Feb 18, 2013 at 7:39 PM, Hedayat Vatankhah <hed...@gm...
>> >wrote:
>>
>> Hi Stefan & Klaus,
>>> (and others! I thought that it is better to add this discussion to
>>> simspark-devel, hope that you don't mind!)
>>> About monitor, yes actually in all games that I'm in OC I do setup
>>> firewall rules to close all connections except the expected ones as
>>> Stefan
>>> said. But no, I didn't anything for communication between agents through
>>> sockets (however, I have tried some other restrictions like making the
>>> log
>>> files and directories write-only).
>>> I was not trying to imply that our security is perfect now, but security
>>> should be considered anyway. Also, the problem with the proxy could be
>>> probably much more 'useful' than communication between agents. I also
>>> didn't want to imply that we should not use proxy until it is completely
>>> secure. Even having a plan for security is great.
>>>
>>> Anyway, the security aspect is not necessarily complex. Stefan provided
>>> an
>>> idea, and actually it derived me to think of an even simpler idea... or
>>> actually that it is probably already secure enough! :P :D How? Well, we
>>> will run the proxy before the agents anyway, right? So, the proxy can
>>> make
>>> the expected number of connections to the simulator before running the
>>> agents. Now, we know that no more connections should be made to the
>>> simulator, so agents cannot connect to the simulator anyway. We can have
>>> a
>>> simple method to monitor the number of agents connected to proxies too
>>> (for
>>> example, league manager might query the number of agents and print them
>>> on
>>> screen or something). This probably have a little implementation work for
>>> the proxy too. However, Stefan ideas are great too, specially about the
>>> competition manager.
>>>
>>> About providing the results, RSG format is selected (I guess!) because
>>> agents already have an RSG parser, so they can easily parse them. Using
>>> another format for the agents mean that they should implement yet another
>>> parser. Therefore, I'm actually in favor of using RSG format for that.
>>> However, the results might be generated also in another format for other
>>> purposes.
>>>
>>> But, no, simspark should not be responsible for providing the results,
>>> and
>>> even if it is, it should get the results from another place. Actually,
>>> I've
>>> said previously (probably in TC ML or simspark-devel) that ideally we
>>> would
>>> need a kind of 'results server'. Since we run games in parallel, teams
>>> should be actually informed about all results not just the ones played in
>>> that cluster. There are even considerations such as the order and time of
>>> playing games in different clusters (there should be probably a
>>> 'schedule',
>>> and teams are informed about the results of the games which are past in
>>> schedule even if we were actually able to play some more games in the
>>> other
>>> cluster; or we should really run the games according to the schedule).
>>> Teams might query the results from the result server themselves, or
>>> rcssserver3d (which is certainly about competitions) can query them and
>>> provide it to agents. The results server can generate results in other
>>> formats usable for publishing, like using XML and XSL as Stefan
>>> mentioned.
>>>
>>> Finally, it might be more interesting if the competition manager can
>>> manage all games rather than the games running on a single cluster (in
>>> that
>>> case, it can actually play the role of the results server too). Consider
>>> each cluster as a soccer field, competition manager can schedule the
>>> games
>>> and then start the games on the selected fields. Or we might not consider
>>> clusters as fields and consider them completely equal, and dispatch each
>>> game when any cluster is available. Another policy could be to run all
>>> games of a single group on the same cluster to make sure that conditions
>>> are equal for each group. Anyway, when it dispatches a game, it might
>>> also
>>> provide the results for that game too. Well, this idea should not
>>> necessarily be implemented in the initial versions, but might be a goal
>>> which should be considered in design.
>>>
>>> Regards,
>>> Hedayat
>>>
>>>
>>> *Stefan Glaser <gla...@gm...> <gla...@gm...>* wrote on
>>>
>>> Mon, 18 Feb 2013 13:28:57 +0100:
>>>
>>> Hello together,
>>>
>>> sorry that I jump into the discussion, but I also spend some time in
>>> thinking of these problems.
>>>
>>> In general, the monitor issue you mentioned is not really a problem.
>>> Since
>>> the agent teams and the monitor usually run on different machines and the
>>> monitor port is fixed, a simple firewall rule should be sufficient to
>>> prevent this situation. The intermediate communication between agents
>>> though is tough.
>>>
>>> Now the proxy. The main target for me with the first version was simply
>>> to
>>> have a proxy. Since the proxy is only needed for competitions, I felt it
>>> should be transparent to both sides. Given this and that the current
>>> implementation uses random port assignments, there is no possibility for
>>> the server to distinguish connections from a proxy and connections coming
>>> directly from an agent. On the other hand, the current proxy
>>> implementation
>>> simply accepty new connections in an endless loop and has no information
>>> about the competition at all.
>>> In order to not touch the server code, I came up with the following idea.
>>> Extend the proxy to run (and maybe monitoring) the agent processes. If an
>>> agent is started by the proxy, the proxy can expect to get a connection
>>> request for each agent it started and can already reserve a connection to
>>> the server for it. If it doesn't get a connection request together with
>>> an
>>> init-message within let's say 10 seconds, the proxy simply kills the
>>> previously started agent again and prompts a warning. This way the game
>>> wouldn't start up and someone would notice that something is wrong.
>>> We could use the same starting scripts for the agents (just not starting
>>> a
>>> whole team, instead only one agent), but we would need to run a proxy
>>> instance for each match, with some more parameters. Should be not too
>>> much
>>> of a change in the depending scripts.
>>>
>>>
>>> In case I find time to develop the competition manager GUI I have in mind
>>> (an advanced version of the league manager), my target is to use an own
>>> interface to the proxy server to run/stop/monitor agent processes and
>>> their
>>> network statistics. This way a proxy can stay running the whole day and
>>> is
>>> instructed directly from the competition manager GUI.
>>> When talking about the competition manager GUI, I also thought about
>>> providing the current results of the competition to the agents. I wonder
>>> why the SimSpark server should take care of this and why the RSG format
>>> should be used in this case. When thinking of the SimSpark server as a
>>> tool
>>> for research, providing competition abilities is just not needed and
>>> irrelevant i.e. for learning. In my opinion, if we play a competition,
>>> the
>>> server is only responsible for simulating the games, not for organizing
>>> them. If we intend to have a central file, containing the whole
>>> competition
>>> results, why not using an xml-file, which can be easily published and
>>> displayed as html-page to humans, using xsl? And if this file already
>>> exists, why not publishing it over the internet?
>>> All this could be addressed by a separate application, providing a nice
>>> GUI to manage and monitor competitions. This GUI can also be used to
>>> display the results for visitors at Robocup events. By integrating i.e.
>>> RoboViz, we could even watch the games directly in the competition
>>> manager
>>> and play logfiles of the best scenes to amuse visitors. And, think about
>>> a
>>> team which want to test their new agent binary at a competition. They
>>> open
>>> the competition manager in training mode and can either start a game
>>> against another own binary, or ask other teams to enter their user
>>> password
>>> in order to allow the use of their binary for one test match. Test
>>> matches
>>> are then automatically played under competition conditions. This would
>>> speed up test-time of teams when setting up things on the competition
>>> machines for test games.
>>>
>>> I'm really looking forward to develop such a competition manager. I think
>>> this would be a great contribution to the Robocup events, which I can
>>> easily provide, since I'm familiar with most technical stuff involved.
>>> With
>>> this I could take care of providing the actual results of the competition
>>> to the agents.
>>> I'm not sure yet how I'll find time. But I'm kind of eager to start ;)
>>>
>>> What do you think?
>>>
>>> Sorry, got quite a long mail meanwhile. I intend to put a description of
>>> my thoughts into the wiki, too.
>>>
>>> Wish you all the best,
>>> Stefan
>>>
>>>
>>>
>>>
>>>
>>> Am 18.02.2013 08:53, schrieb Klaus Dorer:
>>>
>>> Hi Hedayat,
>>>
>>> hmmm, security aspects are important. But are we checking that no agent
>>> is
>>> connecting as monitor? Or are we checking that no agent opens a socket to
>>> another agent? I think no. Therefore I wonder if we have to be more
>>> strict
>>> here. If yes, is this something we have to do on application level, or
>>> can
>>> we do it on a different level, e.g. opening that port only for a specific
>>> application?
>>>
>>> Greetings
>>> Klaus
>>>
>>> Am 16.02.2013 19:20, schrieb Hedayat Vatankhah:
>>>
>>> Hi Stefan,
>>> Sorry for my lack of response. I'm still planning to put some time to
>>> answer your first email (but in brief, the security aspects look more
>>> complicated than the proxy itself. For example, agents must be unable to
>>> impersonate themselves as the proxy(ies)).
>>> And thank you a lot for reporting on the progress. I'll certainly look
>>> into the wiki page and will provide my comments (if any!). :)
>>>
>>> Thanks a lot.
>>> Hedayat
>>>
>>>
>>> /*Stefan Glaser <gla...@gm...> <gla...@gm...>*/ wrote
>>>
>>> on Sat, 16 Feb 2013 19:13:50 +0100:
>>>
>>> Hello Hedayat,
>>>
>>> I was eager to implement something, so I spend some time implementing the
>>> proxy server for SimSpark.
>>> It was quite simple and straight forward to implement and first tests
>>> look
>>> good. We intend to test the proxy over the internet, just to get a
>>> subjective impression ;) In addition we also want to test it on a local
>>> network, monitoring the traffic to the server with wireshark, to get some
>>> numbers. Once that is done, I would try to release it somehow.
>>>
>>> If you are interested in the concept and want to get some information
>>> until we release the source code, I already put a description into the
>>> wiki:
>>> http://simspark.sourceforge.**net/wiki/index.php/Agent_Proxy<http://simspark.sourceforge.net/wiki/index.php/Agent_Proxy>
>>>
>>> Wish you all the best,
>>> Stefan
>>>
>>>
>>> Am 13.02.2013 14:10, schrieb Stefan Glaser:
>>>
>>> Hello Hedayat,
>>>
>>> as Klaus mentioned, we would take care of implementing the proxy approach
>>> for the next competitions.
>>>
>>> We would realize it in Java - I hope that doesn't result in any
>>> problem...
>>>
>>> Now, appart from informing you about that we would take care of the
>>> implementation, I wanted to ask you about some thoughts with respect to
>>> the
>>> proxy. The basic idea is clear, having an intermediate component,
>>> measuring
>>> the time on the client machines. But I wonder, is there anything else
>>> critical, which one has to be aware of in the implementation? E.g. some
>>> situation which a team can explore in order to gain benefits over other
>>> teams?
>>>
>>> Cheers,
>>> Stefan
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------**------------------------------**
>>> ------------------
>>> The Go Parallel Website, sponsored by Intel - in partnership with
>>> Geeknet,
>>> is your hub for all things parallel software development, from weekly
>>> thought
>>> leadership blogs to news, videos, case studies, tutorials, tech docs,
>>> whitepapers, evaluation guides, and opinion stories. Check out the most
>>> recent posts - join the conversation now.
>>> http://goparallel.sourceforge.**net/<http://goparallel.sourceforge.net/>
>>> ______________________________**_________________
>>> Simspark Generic Physical MAS Simulator
>>> simspark-devel mailing list
>>> simspark-devel@lists.**sourceforge.net<sim...@li...>
>>> https://lists.sourceforge.net/**lists/listinfo/simspark-devel<https://lists.sourceforge.net/lists/listinfo/simspark-devel>
>>>
>>>
>>>
>>
>
--
Adaptive Systems Research Group
Department of Computer Science
University of Hertfordshire
United Kingdom
|