Re: Solipsis: Python-powered Metaverse

2005-05-14 Thread Terry Reedy

On Wed, 11 May 2005 22:48:31 -0400, rumours say that Terry Reedy
[EMAIL PROTECTED] might have written:
play an online action game, which sends a constant stream of update 
info.
Then, curious what would happen, I logged on, from a different computer 
but
through the same router, with a temporary guest account.  Somewhat to my
surprise, it worked -- without touching the computer (XP) or router
settings.  And kept working the whole weekend.  So there is a way to tag
update packets so they can be reliably separated into two streams (and 
vice
versa).  Solipsis should be able to do the same.


 7On Sat, 14 May 2005 02:28:57 +0300, Christos TZOTZIOY Georgiou 
 [EMAIL PROTECTED] wrote:

In your case, it's the internal address that originated the connection--
so the router can distinguish the streams:

(int1, port1)-(ext_host, port0)
maps to (router_ext, port2)-(ext_host, port0)

(int2, port3)-(ext_host, port0)
maps to (router_ext, port4)-(ext_host, port0)

Thank you for answering my implicit question.  If I understand now, the 
point I had previously missed is that even though an Internet service must 
typically be addressed *to* a particular port, it does not, typically, have 
to be address *from* that particular port.  So the NAT translator is free 
to associate the doubleton (internal address, internal port) to external 
source port (as long as computers X average ports in use  64K).

However, if both of your internal computers listen to port 6000 for
example, there is no easy way for the router to know to which one it
should forward an *incoming* request for connection to port 6000

In my case, both computers separately originated their sessions.  So 
apparently, the game company, while listening on port X, is willing to 
service two different sessions for two different accounts to different 
client ports, even at the same address, perhaps anticipating and hoping 
that two or more people behind a firewall might buy accounts.

I could then see a multiplexing problem for Solipsis or similar 
peer-to-peer schemes if everyone, being a server as well as client, is 
required to listen and send to just one port.

Jp Calderone [EMAIL PROTECTED] wrote in message 
news:[EMAIL PROTECTED]

  Combinations of marginally smart routers and non-broken protocols can 
 deal with even this situation automatically, without user configuration 
 or intervention.

  Traffic to (router_ext, N) from (ext, M) can be switched to (int1, N) or 
 (int2, N) by simply noticing which of int1 or int2 has recently sent 
 traffic from N to (ext, M).

This is what I imagined the router doing.  In  the case I noted, there 
was/is a steady stream of updates to both clients even if they send nothing 
(due to not moving or clicking on anything), so this would not work.  That 
is why I was a bit surprised when it did work.

  If both have, you can still generally figure it out, by rewriting the 
 source port automatically on the router.

I presume you are referring here to what Christos described.  I now assume 
that this is what my NetGear was doing.

  Of course, if your protocol includes port numbers in the application 
 areas of the packets it sends, the router usually can't properly rewrite 
 the packet, so things go pear shaped.

'Pear shaped' is an interesting metaphor for what I anticipated.  But I did 
not definitely notice a single misdirected packet.  (Of course, there might 
have been client filtering of obviously misdirected packets.)  So I now 
conclude that the protocol maybe does not hardwire client ports.  Thank you 
for your additions also.
=

While the above is not directly on-topic for c.l.p, it does suggest 
possible design considerations for users of the socket module and packets 
built on top ;-).
-- including Solipsis, which is such.

Terry J. Reedy






-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-14 Thread Paul McNett
Terry Reedy wrote:
 While the above is not directly on-topic for c.l.p, it does suggest 
 possible design considerations for users of the socket module and packets 
 built on top ;-).
 -- including Solipsis, which is such.

I contributed to the thread going kind of off-topic, so I'll just follow 
up by saying that the Solipsis Metaverse could have the potential to be 
the killer app that gets Python noticed in a widespread, mainstream 
fashion (with no value judgement attached to that - I'm not sure that 
development would be particularly good or bad for Python). The ability 
for anyone to design their own entities and then put them into a common 
metaverse, where they exist in concrete fashion just by virtue of 
being there at a given position and size, and that none of the entities 
in the metaverse are managed by a central server, is just amazingly 
cool. The coolness factor could be like that of the web in 1993, with 
Python enabling all kinds of normal people to learn programming so they 
can make their mark with their avatar in the virtual world - indeed more 
and more of daily life may become dependent on dealing with people in 
the metaverse instead of face-to-face. And once the masses learn how to 
really wield the power of their computers, watch out the human race just 
evolved a little more.

But the ability for maliciousness to be unleashed is an unfortunate 
side-effect too, and the Python community should be prepared for the 
language becoming the scapegoat, but then again each entity in the 
metaverse is really its own server, and can limit its input/output just 
like we do now with Python web apps.

Um, when I started this message I meant to bring it back on topic. Oh, 
well. Hiro forgives me, I am sure.

-- 
pkm ~ http://paulmcnett.com

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-13 Thread TZOTZIOY
On Wed, 11 May 2005 22:48:31 -0400, rumours say that Terry Reedy
[EMAIL PROTECTED] might have written:

  and what if both computers
 wanted to participate on the port 6000 fun?

Recently, I had one family member use my purchased account to logon to and 
play an online action game, which sends a constant stream of update info. 
Then, curious what would happen, I logged on, from a different computer but 
through the same router, with a temporary guest account.  Somewhat to my 
surprise, it worked -- without touching the computer (XP) or router 
settings.  And kept working the whole weekend.  So there is a way to tag 
update packets so they can be reliably separated into two streams (and vice 
versa).  Solipsis should be able to do the same.

In your case, it's the internal address that originated the connection--
so the router can distinguish the streams:

(int1, port1)-(ext_host, port0)
maps to (router_ext, port2)-(ext_host, port0)

(int2, port3)-(ext_host, port0)
maps to (router_ext, port4)-(ext_host, port0)

Every TCP/UDP packet includes srcip, srcport, dstip, dstport, so an
internal dictionary makes the translations to and fro (the router
changes the srcip, srcport whenever a packet passes through).  The
internal computer knows not that the router mangled the packets, and the
external computer knows nothing about the internal computer address.

However, if both of your internal computers listen to port 6000 for
example, there is no easy way for the router to know to which one it
should forward an *incoming* request for connection to port 6000-- all
it knows is that some external computer connected to its external
interface ip address at some specific port.  In this case, *typically*
you would map port (router_ext, 6000) to (int1, 6000) and (router_ext,
6001) to (int2, 6000).  The internal computers would both think that
some computer is doing a connect at their port 6000.
-- 
TZOTZIOY, I speak England very best.
Be strict when sending and tolerant when receiving. (from RFC1958)
I really should keep that in mind when talking with people, actually...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-13 Thread Jp Calderone
7On Sat, 14 May 2005 02:28:57 +0300, Christos TZOTZIOY Georgiou [EMAIL 
PROTECTED] wrote:
On Wed, 11 May 2005 22:48:31 -0400, rumours say that Terry Reedy
[EMAIL PROTECTED] might have written:

  and what if both computers
 wanted to participate on the port 6000 fun?

Recently, I had one family member use my purchased account to logon to and
play an online action game, which sends a constant stream of update info.
Then, curious what would happen, I logged on, from a different computer but
through the same router, with a temporary guest account.  Somewhat to my
surprise, it worked -- without touching the computer (XP) or router
settings.  And kept working the whole weekend.  So there is a way to tag
update packets so they can be reliably separated into two streams (and vice
versa).  Solipsis should be able to do the same.

In your case, it's the internal address that originated the connection--
so the router can distinguish the streams:

(int1, port1)-(ext_host, port0)
maps to (router_ext, port2)-(ext_host, port0)

(int2, port3)-(ext_host, port0)
maps to (router_ext, port4)-(ext_host, port0)

Every TCP/UDP packet includes srcip, srcport, dstip, dstport, so an
internal dictionary makes the translations to and fro (the router
changes the srcip, srcport whenever a packet passes through).  The
internal computer knows not that the router mangled the packets, and the
external computer knows nothing about the internal computer address.

However, if both of your internal computers listen to port 6000 for
example, there is no easy way for the router to know to which one it
should forward an *incoming* request for connection to port 6000-- all
it knows is that some external computer connected to its external
interface ip address at some specific port.  In this case, *typically*
you would map port (router_ext, 6000) to (int1, 6000) and (router_ext,
6001) to (int2, 6000).  The internal computers would both think that
some computer is doing a connect at their port 6000.

  Combinations of marginally smart routers and non-broken protocols can deal 
with even this situation automatically, without user configuration or 
intervention.

  Traffic to (router_ext, N) from (ext, M) can be switched to (int1, N) or 
(int2, N) by simply noticing which of int1 or int2 has recently sent traffic 
from N to (ext, M).  If both have, you can still generally figure it out, by 
rewriting the source port automatically on the router.  Many routers support 
the former of these, and a sizable portion support the latter.

  Of course, if your protocol includes port numbers in the application areas of 
the packets it sends, the router usually can't properly rewrite the packet, so 
things go pear shaped.

  Jp
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Ville Vainio
 Paul == Paul McNett [EMAIL PROTECTED] writes:

Paul Only, I couldn't hear what they said back to me because I
Paul don't have UDP port 6000 open on my firewall and forwarding
Paul to my laptop (and don't want to do that either).

Paul It is a shame: peer to peer has the potential to enable
Paul really cool, imaginative multiuser worlds, but how many
Paul people are connecting directly to the internet these days?

FWIW, In Finland all home *DSL and Cable internet connections (that I
know of) are connected directly to the internet (in the sense that
all ports are open). Blocking is reserved for the modem, just the way
it should be...

-- 
Ville Vainio   http://tinyurl.com/2prnb
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Heiko Wundram
On Wednesday 11 May 2005 08:02, Ville Vainio wrote:
 FWIW, In Finland all home *DSL and Cable internet connections (that I
 know of) are connected directly to the internet (in the sense that
 all ports are open). Blocking is reserved for the modem, just the way
 it should be...

Same here, and I'd be the first to protest when a provider I pay even remotely 
thinks of blocking a port. That's none of their business; a firewall should 
always be mine...!

--- Heiko.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Paul McNett
Ville Vainio wrote:
Paul == Paul McNett [EMAIL PROTECTED] writes:
 
 
 Paul Only, I couldn't hear what they said back to me because I
 Paul don't have UDP port 6000 open on my firewall and forwarding
 Paul to my laptop (and don't want to do that either).
 
 Paul It is a shame: peer to peer has the potential to enable
 Paul really cool, imaginative multiuser worlds, but how many
 Paul people are connecting directly to the internet these days?
 
 FWIW, In Finland all home *DSL and Cable internet connections (that I
 know of) are connected directly to the internet (in the sense that
 all ports are open). Blocking is reserved for the modem, just the way
 it should be...

Sure, that's how it is here in the US too. You have a modem/router
supplied by the cable or DSL company that provides DHCP and NAT for
outbound traffic. The fact that the internal computers have private
addresses (eg 192.168.1.5) keeps them from being accessed directly from
the outside. The modem still gets access to all ports[1], and most have
ways to set up simple port forwarding to, say, listen for UDP traffic
on port 6000 and forward it on to 192.168.1.20.

The problem is, that last step required setup by the user of one of the 
computers in the LAN. Sure, this is a home so there is likely only one 
or two computers in the LAN, but it is still a painful thing to ask 
normal users to configure their firewall, and what if both computers 
wanted to participate on the port 6000 fun?

[1] Although, some ISP's are taking it upon themselves to drop or reject 
port 25 traffic. A wrong but understandable stopgap solution to the 
problem of peoples toy machines getting infected by malware - at least 
those machines won't be able to send mailbombs anywhere else.

-- 
pkm ~ http://paulmcnett.com


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Aahz
In article [EMAIL PROTECTED],
Paul McNett  [EMAIL PROTECTED] wrote:
Ville Vainio wrote:

 FWIW, In Finland all home *DSL and Cable internet connections (that I
 know of) are connected directly to the internet (in the sense that
 all ports are open). Blocking is reserved for the modem, just the way
 it should be...

Sure, that's how it is here in the US too. 

  [...]

[1] Although, some ISP's are taking it upon themselves to drop or reject 
port 25 traffic. A wrong but understandable stopgap solution to the 
problem of peoples toy machines getting infected by malware - at least 
those machines won't be able to send mailbombs anywhere else.

I've heard of other kinds of port-blocking, too, making it difficult or
impossible to set up VPNs, for example.
-- 
Aahz ([EMAIL PROTECTED])   * http://www.pythoncraft.com/

And if that makes me an elitist...I couldn't be happier.  --JMS
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Paul McNett
Aahz wrote:
 In article [EMAIL PROTECTED],
 Paul McNett  [EMAIL PROTECTED] wrote:
 
[1] Although, some ISP's are taking it upon themselves to drop or reject 
port 25 traffic. A wrong but understandable stopgap solution to the 
problem of peoples toy machines getting infected by malware - at least 
those machines won't be able to send mailbombs anywhere else.
 
 
 I've heard of other kinds of port-blocking, too, making it difficult or
 impossible to set up VPNs, for example.

See, they *are* out there, trying to take away my freedom! :) The 
logical extension of this is that cable/dsl providers will only allow 
destinations of port 80 and 25, because those two services are what the 
Internet is to 80% of the ISP's customers. Actually, you can scratch 
port 25 because more and more people are using webmail (ick!), but you 
probably need to add 443. So what the Internet is becomes set in stone 
instead of what it naturally wants to do: evolve.

-- 
pkm ~ http://paulmcnett.com

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-11 Thread Terry Reedy

Paul McNett [EMAIL PROTECTED] wrote in message 
news:[EMAIL PROTECTED]
 Sure, that's how it is here in the US too. You have a modem/router
 supplied by the cable or DSL company that provides DHCP and NAT for
 outbound traffic.

Comcast supplied me with a DHCP cable modem that comverts whatever the 
cable uses for transport to standard ethernet signals.  I supplied the 
4-port NAT ethernet router which seems to block at least some uninvited 
inbound traffic.

  and what if both computers
 wanted to participate on the port 6000 fun?

Recently, I had one family member use my purchased account to logon to and 
play an online action game, which sends a constant stream of update info. 
Then, curious what would happen, I logged on, from a different computer but 
through the same router, with a temporary guest account.  Somewhat to my 
surprise, it worked -- without touching the computer (XP) or router 
settings.  And kept working the whole weekend.  So there is a way to tag 
update packets so they can be reliably separated into two streams (and vice 
versa).  Solipsis should be able to do the same.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list


Solipsis: Python-powered Metaverse

2005-05-10 Thread Terry Reedy
Today I followed a link to an interesting Python application I have not 
seen mentioned here before:  http://solipsis.netofpeers.net/wiki/HomePage/.

A peer-to-peer system for a massively multi-participant virtual world 

It is a France Telecom RD project, LGPL licenced, still in alpha, built on 
Python, Twisted, WxPthon, PIL, and probably other components actual or 
considered.  The new Node software, rewritten with Twisted, was released 
yesterday.

Terry J. Reedy





-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-10 Thread Joseph Garvin
Terry Reedy wrote:

Today I followed a link to an interesting Python application I have not 
seen mentioned here before:  http://solipsis.netofpeers.net/wiki/HomePage/.

A peer-to-peer system for a massively multi-participant virtual world 

It is a France Telecom RD project, LGPL licenced, still in alpha, built on 
Python, Twisted, WxPthon, PIL, and probably other components actual or 
considered.  The new Node software, rewritten with Twisted, was released 
yesterday.

Terry J. Reedy

  


I was looking at this earlier today because I was curious how they were
going to handle performance concerns (both due to Python and bandwidth).
I'm having trouble understanding all of the details -- what is the
significance of the use of a torus for the world space? Does this
somehow help in the computation of the convex hull?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-10 Thread Terry Reedy

Joseph Garvin [EMAIL PROTECTED] wrote in message 
news:[EMAIL PROTECTED]
 Terry Reedy wrote:

Today I followed a link to an interesting Python application I have not
seen mentioned here before: 
http://solipsis.netofpeers.net/wiki/HomePage/.

 I was looking at this earlier today because I was curious how they were
 going to handle performance concerns (both due to Python and bandwidth).
 I'm having trouble understanding all of the details -- what is the
 significance of the use of a torus for the world space? Does this
 somehow help in the computation of the convex hull?

I can only guess alone with you, but it certainly makes the distance 
calculation needed to identify people in your local area, or a neighbor's 
local area, both simple and uniform (the usual Euclidean formula).  In 
other words, a large torus make everyplace locally flat with normal 
orthogonal coordinates.  On a sphere, you have problems near the poles. 
Several game worlds have had the same double-wraparound topography.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Solipsis: Python-powered Metaverse

2005-05-10 Thread Jp Calderone
On Tue, 10 May 2005 19:27:00 -0700, Paul McNett [EMAIL PROTECTED] wrote:
Joseph Garvin wrote:
 I was looking at this earlier today because I was curious how they were
 going to handle performance concerns (both due to Python and bandwidth).
 I'm having trouble understanding all of the details -- what is the
 significance of the use of a torus for the world space? Does this
 somehow help in the computation of the convex hull?

I'm having trouble understanding how they are going to make this work
server-less, pure peer-to-peer. I just tried it out and it was cool: I
could move around in the world, get near other avatars and say hey.
Only, I couldn't hear what they said back to me because I don't have UDP
port 6000 open on my firewall and forwarding to my laptop (and don't
want to do that either).

It is a shame: peer to peer has the potential to enable really cool,
imaginative multiuser worlds, but how many people are connecting
directly to the internet these days?


  This can be dealt with, fortunately.  I plan to poke the Solipsis folks about 
it the moment I get a couple adjacent free minutes. :)  It should be an easy 
change to make, since their protocol code is orthogonal to their transport code 
(and defeating NATs and firewalls is a transport issue).

  Jp
-- 
http://mail.python.org/mailman/listinfo/python-list