Re: Solipsis: Python-powered Metaverse
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
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
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
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
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
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
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
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
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
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
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
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
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
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