Le Due Funzioni P2P Principali di Skype: Scoperta Peer e Trasporto Media
L'architettura originale di Skype (pre-migrazione cloud Microsoft) si basava su un overlay peer-to-peer (P2P) decentralizzato per due attività critiche:
1. Stabilire Connessioni Peer Dirette (Segnalazione e Traversamento NAT)
- Distributed Hash Table (DHT): Ogni client Skype agiva come nodo in una DHT in stile Kademlia, memorizzando mappature
(SkypeID → IP:porta)per utenti online. - Supernodi: Client con alta banda e senza firewall venivano promossi a supernodi per indicizzare segmenti DHT e assistere il traversamento NAT.
- Logica tipo ICE/STUN/TURN: Una volta che i peer si localizzavano tramite DHT, tentavano l'UDP hole-punching per percorsi media diretti. Se NAT simmetrici bloccavano l'UDP diretto, i media venivano inoltrati tramite supernodi (agendo come relè TURN).
- Risultato: Voce/video a bassa latenza e alta qualità senza server media centrali.
2. Trasporto Multimediale in Tempo Reale (Audio/Video/Dati)
- Codec proprietari: SILK (audio, poi Opus), VP7/VP8 (video) ottimizzati per bitrate variabili e perdita di pacchetti.
- Stream P2P cifrati: I media fluivano cifrati AES-256 direttamente tra endpoint (o tramite relè supernodo), riducendo carico e costi dell'infrastruttura centrale.
- Bitrate adattivo: Stima continua della larghezza di banda regolava bitrate del codec/FEC in tempo reale.
- Trasferimento file e condivisione schermo: Viaggiavano anch'essi sugli stessi canali P2P cifrati.
Spostamento Architettonico (Post-2012)
Microsoft spostò gradualmente la segnalazione su servizi cloud dedicati di Azure (Skype Cloud) e i media su cluster di relè (Media Processors) per una migliore durata della batteria mobile, compliance normativa (intercettazione legale) e velocità delle funzionalità. I client Skype moderni usano ancora P2P per alcuni canali dati peer-to-peer, ma i media core sono prevalentemente inoltrati via cloud.
Capire il design P2P classico spiega la prima scalabilità di Skype—milioni di utenti concorrenti con minimo capex di server.