• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Airport NAT behavior
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Airport NAT behavior


  • Subject: Re: Airport NAT behavior
  • From: email@hidden
  • Date: Tue, 28 Mar 2006 18:25:46 -0700

On Mar 27, 2006, at 10:05 PM, Tim Dorcey wrote:

Have you looked at STUN (RFC 3489)? It seems to solve some of these
problems, but it does require at least one end to have a

Yes, but it will also be stymied by NAT's which use a different port for
each connection. The core issue is this. A host can signal their NAT that
inbound traffic is desired from a certain remote (addr,port) simply by
sending a packet to that (addr,port). But, to do that, they must first know
where the inbound traffic will be coming from, which is impossible if the
NAT on the other end is choosing a new port for each connection. The only
way to learn the port is to receive a packet, and the only way to receive a
packet is to first know the port.

I have implemented something like STUN, without knowing what it was. Basically it's intuitive that once you get a public IP and port mapped, you can tell your friends about it. The only gotcha is that most NATs make you send outgoing packets to those external machines before you can get an answer back, so the 2 peers usually send junk packets to each other until they both ACK each other (after getting each other's external IP and port from a central tracker server on the net somewhere). Of course the only type of NAT this fails for this is symmetric NAT, since the peers will get different external ports than the central tracker got, meaning their packets won't make it through the NAT if they send to the port the tracker provided. (This is another way of saying the above paragraph).


So is there a firmware update or something to upgrade current airports to allow NAT-PMP? Does anyone know which models support it? If I can say "the following list of routers will allow our games to work, with the following firmware upgrades for these airports", that would be great.

P.S. Does somebody have a link for UPnP, like the kind used by Azureus (a java bittorrent client)? This has probably been answered before but I am thinking this thread is going to be searched on a lot someday. I would like to implement both methods for our games.

P.P.S. The NAT-PMP explained at:

http://files.dns-sd.org/draft-cheshire-nat-pmp.txt

and provided by Tim is quite easy to understand, and is almost trivial to implement for anyone who has used UDP. Each packet is just a couple of bytes, and the format is completely intuitive, even the nontrivial edge cases like what happens should the router reboot. It should honestly not take more than 15 minutes to set up a console app to demonstrate it, if you already have UDP sending and receiving programmed. OK multiply by 100 for the real world but you get the idea.

Thanx,

------------------------------------------------------------------------
Zack Morris              Z Sculpt Entertainment               This Space
email@hidden      http://www.zsculpt.com                 For Rent
------------------------------------------------------------------------
If the doors of perception were cleansed, everything would appear to man
  as it is, infinite. -William Blake, The Marriage of Heaven and Hell
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >RE: Airport NAT behavior (From: "Tim Dorcey" <email@hidden>)

  • Prev by Date: Re: kCFStreamPropertyHTTPAttemptPersistentConnection
  • Next by Date: Deleting/adding ARP entries
  • Previous by thread: RE: Airport NAT behavior
  • Next by thread: kCFStreamPropertyHTTPAttemptPersistentConnection
  • Index(es):
    • Date
    • Thread