/images/logo.png
A Network Blog by a Network Engineer

iPhone 4 and FaceTime Packet Capture

Well, got our new iPhones today – yes, our.  I ordered one for myself and one for the Mrs.  The reason for ordering her one was two fold.  1) Her old cell phone is either dead in her purse or on the counter at home charging.  2) FaceTime.  With my travel schedule, it is just a cool app for me to see and talk to the family.
So, that all being said – I was curious to how FaceTime worked with regards to network connectivity.  So, my neighbor being nice enough to let me use his wireless (I did set it up), I added my wife’s phone to his AP and my phone to my AP.  I then created a capture filter on my Cisco ASA and made a call. So, here is what I found:
1.  The call is first initiated via regular Celluar networks.  In the contact list you will see an icon called FaceTime.
FaceTime Icon
2.  The phones then communicate to a server at Apple (17.155.5.251 is what I saw).  Communication is sourced from port 16402 via UDP initially and then looks to dynamically allocate ports for communication (16385 and 16386 are what appeared on my end).
Packets 1 – 10
3. The phone then negotiates an HTTPS connection to the servers at Apple for the setup and communication. There also seems to be some communication to other servers (in this case i see RCN 208.59.216.10) – and they are my cable provider.
Packets 11 – 101
4. After Client (iPhone) and server negotiation you start to see Stun requests via the private IPs, after they fail you see them from the Public IP NAT ranges. They success via the Public peering at that point.
Packets 102 – 123
5. A SIP call is then initiated between the phones for the video portion of the call
Packets 124 – 160
So in the end, this is a Video SIP call 😉
Text file of the capture headers:
Capture file can be found here
Below is the raw capture:
My iPhone IP Private – 192.168.0.128
My iPhone IP NAT – 216.164.100.100
Other iPhone IP Private 192.168.2.106
Other iPhone IP NAT – 72.81.200.200
Note: NATs change to protect the guilty
Here is the packet capture, but it is very difficult to read. I suggest downloading the text file – DOWNLOAD

CCIE Rack vbs script for SecureCRT

Well I finally got around to writing a script in order log into all my lab routers.  Why?  I got tired of typing R1, then password, breaking out and going to the next.  When you connect to 8 routers for every lab, it takes time.
So, below is the script I use for my SecureCRT session.    Pretty simple, just did a record of the first two and then edited the rest of them in.
It can also be found here for easier reading:
http://pastebin.com/NUdBENdc

—————————————————————–
#$language = “VBScript”
#$interface = “1.0”
crt.Screen.Synchronous = True
Sub Main
 crt.Screen.Send “r1” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R1#”
 crt.Screen.Send chr(30) & “x2” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r2” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R2#”
 crt.Screen.Send chr(30) & “x3” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r3” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R3#”
 crt.Screen.Send chr(30) & “x4” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r4” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R4#”
 crt.Screen.Send chr(30) & “x5” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r5” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R5#”
 crt.Screen.Send chr(30) & “x6” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r6” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R6#”
 crt.Screen.Send chr(30) & “x7” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r7” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R7#”
 crt.Screen.Send chr(30) & “x8” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “r8” & chr(13)
 crt.Screen.WaitForString “Password: ”
 crt.Screen.Send “PassWord” & chr(13)
 crt.Screen.Send chr(13)
 crt.Screen.WaitForString “Rack1R8#”
 crt.Screen.Send chr(30) & “x9” & chr(13)
 crt.Screen.WaitForString “TS1#”
 
 crt.Screen.Send “1” & chr(13)
End Sub

WordPress for iPad installed

Well, WordPress for iPad has been installed. Hopefully I can keep this up now. I am hoping that I can blog my way through live this year. With the iPad and wordpress, should be much easier now. The laptop is too cumbersome during the event, let’s hope the ipad is up to the task.

CCIE SP

Well, back in May I had to recert my CCIE R&S and figured I would do the SP written exam.  The drive to learn MPLS is why I chose the SP written.  Since passing I figured I would give a go at the lab as well.
So as of today the lab is scheduled for October 2010. Time to hunker down and study!