Introduction Architecture Experiments Appendix
Skype P2P Protocol Bolesaw Kulbabi nski According to "An - - PowerPoint PPT Presentation
Skype P2P Protocol Bolesaw Kulbabi nski According to "An - - PowerPoint PPT Presentation
Introduction Architecture Experiments Appendix Skype P2P Protocol Bolesaw Kulbabi nski According to "An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol", S.A.Baset, H.Schulzrinne, 2004 Introduction
Introduction Architecture Experiments Appendix
Introduction
The paper presents a reverse-engineering process that leads to some conclusions about Skype architecture and protocol. Many claims are highly probable guesses but cannot be guaranteed
- r proven.
Introduction Architecture Experiments Appendix
Architecture
Three types of entities
- Ordinary Node
- Super Peer
- Skype Login Server
Introduction Architecture Experiments Appendix
Node types
- Ordinary node - must connect to a super peer. These are
stored in Host Cache.
- Super peer - anyone with public IP
, enough bandwidth, CPU and RAM can become a super peer.
- Skype login server - ensures name uniqueness.
Introduction Architecture Experiments Appendix
Node types
- Ordinary node - must connect to a super peer. These are
stored in Host Cache.
- Super peer - anyone with public IP
, enough bandwidth, CPU and RAM can become a super peer.
- Skype login server - ensures name uniqueness.
Introduction Architecture Experiments Appendix
Node types
- Ordinary node - must connect to a super peer. These are
stored in Host Cache.
- Super peer - anyone with public IP
, enough bandwidth, CPU and RAM can become a super peer.
- Skype login server - ensures name uniqueness.
Introduction Architecture Experiments Appendix
Node types
- Ordinary node - must connect to a super peer. These are
stored in Host Cache.
- Super peer - anyone with public IP
, enough bandwidth, CPU and RAM can become a super peer.
- Skype login server - ensures name uniqueness.
Introduction Architecture Experiments Appendix
Components
- Ports - listening on 80 (HTTP), 443 (HTTPS) and random
ports for TCP and UDP .
- Host Cache - list of IP:port addresses of Super Peers. Min.
1, max. 200 entries, regularly refreshed.
- Codecs - iLBS, iSAC from GlobalIPSound + one unknown.
- Buddy list - encrypted and stored only locally.
Introduction Architecture Experiments Appendix
Components
- Ports - listening on 80 (HTTP), 443 (HTTPS) and random
ports for TCP and UDP .
- Host Cache - list of IP:port addresses of Super Peers. Min.
1, max. 200 entries, regularly refreshed.
- Codecs - iLBS, iSAC from GlobalIPSound + one unknown.
- Buddy list - encrypted and stored only locally.
Introduction Architecture Experiments Appendix
Components
- Ports - listening on 80 (HTTP), 443 (HTTPS) and random
ports for TCP and UDP .
- Host Cache - list of IP:port addresses of Super Peers. Min.
1, max. 200 entries, regularly refreshed.
- Codecs - iLBS, iSAC from GlobalIPSound + one unknown.
- Buddy list - encrypted and stored only locally.
Introduction Architecture Experiments Appendix
Components
- Ports - listening on 80 (HTTP), 443 (HTTPS) and random
ports for TCP and UDP .
- Host Cache - list of IP:port addresses of Super Peers. Min.
1, max. 200 entries, regularly refreshed.
- Codecs - iLBS, iSAC from GlobalIPSound + one unknown.
- Buddy list - encrypted and stored only locally.
Introduction Architecture Experiments Appendix
Components
- Ports - listening on 80 (HTTP), 443 (HTTPS) and random
ports for TCP and UDP .
- Host Cache - list of IP:port addresses of Super Peers. Min.
1, max. 200 entries, regularly refreshed.
- Codecs - iLBS, iSAC from GlobalIPSound + one unknown.
- Buddy list - encrypted and stored only locally.
Introduction Architecture Experiments Appendix
Components
- Encryption - 256-bit AES negotiated using 2048-bit RSA.
User public keys are certified at login.
- NAT and Firewall traversal - probably some variation of
STUN or TURN is used. Info refreshed periodically.
- User Search - Skype guarantees finding users that logged
in during last 72 hours.
Introduction Architecture Experiments Appendix
Components
- Encryption - 256-bit AES negotiated using 2048-bit RSA.
User public keys are certified at login.
- NAT and Firewall traversal - probably some variation of
STUN or TURN is used. Info refreshed periodically.
- User Search - Skype guarantees finding users that logged
in during last 72 hours.
Introduction Architecture Experiments Appendix
Components
- Encryption - 256-bit AES negotiated using 2048-bit RSA.
User public keys are certified at login.
- NAT and Firewall traversal - probably some variation of
STUN or TURN is used. Info refreshed periodically.
- User Search - Skype guarantees finding users that logged
in during last 72 hours.
Introduction Architecture Experiments Appendix
Components
- Encryption - 256-bit AES negotiated using 2048-bit RSA.
User public keys are certified at login.
- NAT and Firewall traversal - probably some variation of
STUN or TURN is used. Info refreshed periodically.
- User Search - Skype guarantees finding users that logged
in during last 72 hours.
Introduction Architecture Experiments Appendix
Setup
Three configurations
- 1. Two machines with public IPs.
- 2. One public, one behind port-restricted NAT.
- 3. Both behind port-restricted NAT and UDP-restricted
firewall.
Introduction Architecture Experiments Appendix
Setup
Three configurations
- 1. Two machines with public IPs.
- 2. One public, one behind port-restricted NAT.
- 3. Both behind port-restricted NAT and UDP-restricted
firewall.
Introduction Architecture Experiments Appendix
Setup
Three configurations
- 1. Two machines with public IPs.
- 2. One public, one behind port-restricted NAT.
- 3. Both behind port-restricted NAT and UDP-restricted
firewall.
Introduction Architecture Experiments Appendix
Setup
Three configurations
- 1. Two machines with public IPs.
- 2. One public, one behind port-restricted NAT.
- 3. Both behind port-restricted NAT and UDP-restricted
firewall.
Introduction Architecture Experiments Appendix
Startup
First run
Message to skype.com with keyword "installed".
Subsequent runs
Message to skype.com with keyword "getlatestversion".
Introduction Architecture Experiments Appendix
Startup
First run
Message to skype.com with keyword "installed".
Subsequent runs
Message to skype.com with keyword "getlatestversion".
Introduction Architecture Experiments Appendix
Login process
Login process
- 1. Network connection (needs at least one valid Host Cache
entry that can be reached via TCP)
- 2. Authentication with Skype server (80.160.91.11,
ns14.inet.tele.dk)
Introduction Architecture Experiments Appendix
Login process
Login process
- 1. Network connection (needs at least one valid Host Cache
entry that can be reached via TCP)
- 2. Authentication with Skype server (80.160.91.11,
ns14.inet.tele.dk)
Introduction Architecture Experiments Appendix
Login process
Login process
- 1. Network connection (needs at least one valid Host Cache
entry that can be reached via TCP)
- 2. Authentication with Skype server (80.160.91.11,
ns14.inet.tele.dk)
Introduction Architecture Experiments Appendix
Bootstrap nodes
During first login attempt Host Cache is always filled with at least these peers:
- 1. 66.235.180.9:33033 (sls-cb10p6.dca2.superb.net)
- 2. 66.235.181.9:33033 (ip9.181.susc.suscom.net)
- 3. 80.161.91.25:33033
(0x50a15b19.boanxx15.adsl-dhcp.tele.dk)
- 4. 80.160.91.12:33033
(0x50a15b0c.albnxx9.adsl-dhcp.tele.dk)
- 5. 64.246.49.60:33033 (rs-64-246-49-60.ev1.net)
- 6. 64.246.49.61:33033 (rs-64-246-49-61.ev1.net)
- 7. 64.246.48.23:33033 (ns2.ev1.net)
Introduction Architecture Experiments Appendix
Network Connection
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Skype Client tries to reach many nodes via UDP but
maintains TCP connections with only a few of them (at least one).
- After connecting to another node, Skype Client exchanged
messages with login server.
- After some time, the Client tried to reach some nodes not
from the bootstrap list (probably got their addresses from bootstrap peers).
- The Client not always updated the host cache with nodes it
exchanged messages with.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Skype Client tries to reach many nodes via UDP but
maintains TCP connections with only a few of them (at least one).
- After connecting to another node, Skype Client exchanged
messages with login server.
- After some time, the Client tried to reach some nodes not
from the bootstrap list (probably got their addresses from bootstrap peers).
- The Client not always updated the host cache with nodes it
exchanged messages with.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Skype Client tries to reach many nodes via UDP but
maintains TCP connections with only a few of them (at least one).
- After connecting to another node, Skype Client exchanged
messages with login server.
- After some time, the Client tried to reach some nodes not
from the bootstrap list (probably got their addresses from bootstrap peers).
- The Client not always updated the host cache with nodes it
exchanged messages with.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Skype Client tries to reach many nodes via UDP but
maintains TCP connections with only a few of them (at least one).
- After connecting to another node, Skype Client exchanged
messages with login server.
- After some time, the Client tried to reach some nodes not
from the bootstrap list (probably got their addresses from bootstrap peers).
- The Client not always updated the host cache with nodes it
exchanged messages with.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Skype Client tries to reach many nodes via UDP but
maintains TCP connections with only a few of them (at least one).
- After connecting to another node, Skype Client exchanged
messages with login server.
- After some time, the Client tried to reach some nodes not
from the bootstrap list (probably got their addresses from bootstrap peers).
- The Client not always updated the host cache with nodes it
exchanged messages with.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 (firewall) was not able to receive
UDP datagrams but it was still able to connect via TCP .
- Login process takes about 3-7 second in configurations 1
and 2.
- Login process takes about 34 second in configuration 3.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 (firewall) was not able to receive
UDP datagrams but it was still able to connect via TCP .
- Login process takes about 3-7 second in configurations 1
and 2.
- Login process takes about 34 second in configuration 3.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 (firewall) was not able to receive
UDP datagrams but it was still able to connect via TCP .
- Login process takes about 3-7 second in configurations 1
and 2.
- Login process takes about 34 second in configuration 3.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 (firewall) was not able to receive
UDP datagrams but it was still able to connect via TCP .
- Login process takes about 3-7 second in configurations 1
and 2.
- Login process takes about 34 second in configuration 3.
Introduction Architecture Experiments Appendix
User Search
Global Index
- Skype claims it is able to find any user that logged in
during last 72 hours.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Network Data Flow
Configurations 1 and 2
- 1. Contact Super Node via TCP
.
- 2. Contact 4 unknown nodes via UDP
.
- 3. Contact 8 more unknown nodes via UDP (iterate).
- 4. After 3-4 second find the user or say that it is unknown.
Configuration 3 (UDP firewall)
- 1. Contact Super Node via TCP
.
- 2. After 7-8 second find the user or say that it is unknown.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 probably knew about the firewall
it is behind as it did not send any UDP datagrams.
- Search results are probably cached in nodes as repeated
search attempts (from clean Skype Clients) gave better results.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 probably knew about the firewall
it is behind as it did not send any UDP datagrams.
- Search results are probably cached in nodes as repeated
search attempts (from clean Skype Clients) gave better results.
Introduction Architecture Experiments Appendix
Observations
It was observed that:
- Machine in configuration 3 probably knew about the firewall
it is behind as it did not send any UDP datagrams.
- Search results are probably cached in nodes as repeated
search attempts (from clean Skype Clients) gave better results.
Introduction Architecture Experiments Appendix
Calling
General observations
- Calling users that are not on the Buddy List is equal to
search and call.
- Calling is always initiated and ended via TCP
.
Introduction Architecture Experiments Appendix
Calling
General observations
- Calling users that are not on the Buddy List is equal to
search and call.
- Calling is always initiated and ended via TCP
.
Introduction Architecture Experiments Appendix
Calling
General observations
- Calling users that are not on the Buddy List is equal to
search and call.
- Calling is always initiated and ended via TCP
.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Configuration 1
- Direct communication via UDP
.
Configuration 2
- Super Node routing both TCP and then UDP voice packets
directly to callee.
Configuration 3
- Both sides contacted only their super nodes.
Introduction Architecture Experiments Appendix
Calling
Observations
- Call used approximately 5 kB/s (Skype claims 3-16 kB/s).
- At least 2 kB/s was required for reasonable voice quality.
- No silence suppression was observed.
- While on hold, 3 packets per second were sent.
Introduction Architecture Experiments Appendix
Calling
Observations
- Call used approximately 5 kB/s (Skype claims 3-16 kB/s).
- At least 2 kB/s was required for reasonable voice quality.
- No silence suppression was observed.
- While on hold, 3 packets per second were sent.
Introduction Architecture Experiments Appendix
Calling
Observations
- Call used approximately 5 kB/s (Skype claims 3-16 kB/s).
- At least 2 kB/s was required for reasonable voice quality.
- No silence suppression was observed.
- While on hold, 3 packets per second were sent.
Introduction Architecture Experiments Appendix
Calling
Observations
- Call used approximately 5 kB/s (Skype claims 3-16 kB/s).
- At least 2 kB/s was required for reasonable voice quality.
- No silence suppression was observed.
- While on hold, 3 packets per second were sent.
Introduction Architecture Experiments Appendix
Calling
Observations
- Call used approximately 5 kB/s (Skype claims 3-16 kB/s).
- At least 2 kB/s was required for reasonable voice quality.
- No silence suppression was observed.
- While on hold, 3 packets per second were sent.
Introduction Architecture Experiments Appendix
Conference
Most powerful machine acts as a mixer.
Introduction Architecture Experiments Appendix
Other
Multiple login
- User sees incoming call on every machine.
- After picking up, the call is immediately cancelled on other
machines.
Super Node selection
- It is impossible to manually select super node by putting it
into host cache.
Introduction Architecture Experiments Appendix
Other
Multiple login
- User sees incoming call on every machine.
- After picking up, the call is immediately cancelled on other
machines.
Super Node selection
- It is impossible to manually select super node by putting it
into host cache.
Introduction Architecture Experiments Appendix
Other
Multiple login
- User sees incoming call on every machine.
- After picking up, the call is immediately cancelled on other
machines.
Super Node selection
- It is impossible to manually select super node by putting it
into host cache.
Introduction Architecture Experiments Appendix
Other
Multiple login
- User sees incoming call on every machine.
- After picking up, the call is immediately cancelled on other
machines.
Super Node selection
- It is impossible to manually select super node by putting it
into host cache.
Introduction Architecture Experiments Appendix
Other
Multiple login
- User sees incoming call on every machine.
- After picking up, the call is immediately cancelled on other
machines.
Super Node selection
- It is impossible to manually select super node by putting it
into host cache.
Introduction Architecture Experiments Appendix
Questions?
Introduction Architecture Experiments Appendix
NAT Types
Introduction Architecture Experiments Appendix
STUN
Introduction Architecture Experiments Appendix
STUN
Introduction Architecture Experiments Appendix