La comprensione dei contratti.

In genere riesco a percepire quanto “informatico” sia un individuo non tanto facendo domande sull’ultima tecnologia di cui si legge ovunque, o della quale si puo’ avere letto un manuale il giorno prima, bensi’ facendo un passo indietro e semplicemente basandomi su concetti di base. Perche’ una persona che lavora su alcune cose, i concetti di base li ha presenti di continuo. Se andate da un biologo mostrando un animale, per forza di cose si chiede in che ambiente viva , che posto occupi nella catena alimentare e nella tassonomia, cosa che normalmente l’appassionato non fa: egli probabilmente sa tutto dell’animale, ma se lo osservate non si pone per prima cosa le prime domande. Lo stesso capita quando si parla di informatica, come nei post ove si discute di peering.

Per fare un esempio, ho parlato di ADSL con tanta gente che avendo letto Wired sapeva taaante cose interessanti. Allora chiedi: ma Atm fa commutazione di pacchetto o di circuito? E puf: l’informatico wired non lo sa. Questo e’ importante, perche’ se dovessero DAVVERO disegnare una rete ATM switching, quell’informazione sarebbe VITALE. 

Allo stesso modo, il discorso del peering ha scatenato tutta una serie di discussioni che mostrano una GROSSA confusione, una confusione che e’ drammatica perche’ si tratta di non sapere di preciso che genere di CONTRATTO si sia firmato.

Prendiamo l’esempio di un contratto telefonico,diciamo un contratto per una SIM. Allora voi andate nel vostro negozio e chiedete: ma zia vive in Grecia e ha un numero +30123456789 . Potro’ chiamarla?

Il tipo vi mostrera’ allora che sul contratto le chiamate internazionali sono permesse, e quindi a quel prezzo che c’e’ sul contratto si, la rete vi consentira’ di telefonare alla vostra zia Penelope.

Allo stesso modo, sulla rete mobile, quando siete senza soldi potete ancora ACCEDERE alla rete, e potete anche ricevere messaggi e chiamate. Ma non potete FARNE. Insomma, nella rete mobile quello che avete firmato e’ un contratto di TRASPORTO vero e proprio. Avete messo nero su bianco che potrete trasportare voce (~4K di banda) in ogni dispositivo connesso, a parte i guasti conclamati.Nel contratto COMMERCIALE c’e’ quel TRASPORTO che potete fare, e la rete fara’ quel che c’e’ scritto nel contratto commerciale.

In termini molto “high level” e’ perche’ la rete telefonica e’ stata progettata ed ideata con l’intelligenza nella RETE ed i terminali molto stupidi. Non per nulla i primi telefoni erano elettromeccanici: intelligenza zero, la rete era intelligente.

In termini militari, la rete telefonica e’ molto sensibile proprio per questo: se colpisci la rete, colpisci TUTTA l’intelligenza di trasporto,e  non c’e’ nulla che i terminali possano fare.  Internet, che era una rete MILITARE, nasce con l’idea che il trasporto e la sua intelligenza si trovino, il piu’ possibile, su terminali intelligenti quali i computer. Lo stack e’ sul computer, e due computer possono collegarsi tra loro con un semplice hub, perche’ (per fare un esempio che renda l’idea) ARP e’ sul computer stesso e non nella rete, mentre per risalire all’ IMSI partendo dall’ MSISDN dovete fare una query MAP all’ HLR (o VLR, etc etc).

Ma non solo: mentre in Internet io posso “pingare” direttamente la mia controparte, nella rete telefonica io faccio una query che mi dice “Absent Subscriber”, se siete fuori rete, Unknown Subscriber o Unidentified Subscriber se non avete un contratto, etc etc. Ma la query NON la fate alla controparte, ma ancora alla rete.

Adesso andiamo quindi a vedere cosa COMPRATE quando accedete ad internet. Andiamo dal nostro ISP e diciamo: “ma zia vive in Grecia e ha un indirizzo IP 123.124.125.126  . Potro’ chiamarla con skype? Dove e’ scritto sul contratto?”

Vedrete che l’ ISP non sa rispondervi. Mentre la telco vi ha detto che si, potete telefonare in grecia, il vostro ISP vi dice che “in linea teorica”, dovreste avere abbastanza banda da farlo, ma NO, non ve lo scriveranno sul contratto che potete usare Skype verso la Grecia.

Nel caso della telco, se vi scrive nel contratto che avete chiamate internazionali e poi non ve le da (1) , e’ inadempiente. Se non riuscite a usare Skype con la zia penelope per via della congestione tra Italia e Grecia, potete cambiare provider, ma NON accusare il vostro ISP.

In questo senso, la telco che vi vende una SIM sta offrendo un contratto DI TRASPORTO, mentre l’ ISP vi sa offrendo un contratto DI ACCESSO.
La cosa e’ piu’ chiara se pensate a come si comporta la vostra SIM se non avete credito.Potete ricevere telefonate ma non farne. Ora, alla rete in termini di risorse informatiche la chiamata costa sia che voi la originiate sia che la terminiate.  Perche’ questa differenza, se di fatto e’ la stessa quantita’ di dati che fa lo stesso percorso?(2)

Ma il CONTRATTO DI TRASPORTO di chi vi chiama contiene la garanzia che LUI potra’ chiamarvi se ha soldi. Quindi, voi ricevete la SUA chiamata. Ma il VOSTRO contratto di trasporto dice che non potete chiamare LUI se non avete soldi. Quindi la rete NON trasporta la VOSTRA chiamata. E questo e’ perche’ con la telco avete effettivamente un contratto di trasporto: DA qui A qui.

E cosi’ siamo al punto. Il contratto col vostro ISP riguardo ad internet e’ un contratto di ACCESSO. Se pagate siete dentro, e potete fare “qualcosa” che mediamente funziona, ma NON e’ garantito contrattualmente. Se NON pagate siete FUORI, e non potete fare NULLA.

Quando invece fatte un contratto per un telefono, fate un contratto che parla del TRASPORTO. Se pagate X potete fare Y, e il trasporto ha dei costi chiari (si spera) a seconda delle distanze e delle condizioni (roaming, nazione, operatore, etc).

E questa e’ la reale differenza tra le due reti. Se TCP/IP e’ banale rispetto ad SS7 c’e’ una ragione, che e’ proprio questa: la rete telefonica si deve comportare secondo un contratto che specifica il trasporto sino a destinazione (la persona che chiamate) e le relative condizioni. Mentre la rete TCP/IP e’ cosi’ banale come stack perche’ il contratto che avete con l’ ISP NON comprende il trasporto.

Il punto e’ che molti pensano che il trasporto NON sia specificato nel contratto con l’ ISP perche’ e’ “scontato”, mentre il fatto che il trasporto non e’ specificato nel contratto significa proprio l’ opposto: che NON fa parte del contratto , cioe’ non e’ garantito.
Ovviamente, se un ISP non vi permette di raggiungere google potete cambiare ISP, ma non potete accusare l’ ISP di inadempienza, mentre se avete un contratto che permette le chiamate internazionali ma la rete non ve le lascia fare, potete accusare di inadempienza. E’ scritto nel contratto.

Ovviamente, si potrebbe inserire il trasporto nel contratto. Cosi’ sapreste che il traffico verso siti americani vi costa X (proprio come lo sapete per le telefonate) , cosi’ google costa X e facebook costa Y, e ovviamente potreste a quel punto lasciare  un ISP perche’ il traffico verso facebook costa di piu’ o il traffico verso siti web che so io brasiliani costa troppo.

Questa e’ la ragione per la quale normalmente chiudo bruscamente i discorsi di gente che arriva sul forum dicendo un gran blablabla perche’ loro “programmano applicazioni cloud”(3): se non avete nemmeno idea di quale sia il contratto che firmate con l’ ISP, come potete discutere della loro profittabilita’?

Potete farmi tutti i discorsi di CDN e tutto quanto che volete (basta che poi sappiate distinguere i carrier dalla rete di accesso, tanto per dire, che sarebbe l’ ABC per poter discutere) , ma tanto non avete capito il contratto che avete con l’ ISP, e non riuscite a distinguere una rete con un contratto di accesso da una con un contratto di trasporto: ha davvero senso per voi atteggiarvi ad esperti, se non sapete neanche cosa diavolo state pagando al vostro ISP. Credete basti  aver letto qualche cosa su Wired? Forse basta in alcuni salotti.

Einstein pensava che la falsa conoscenza sia piu’ pericolosa della non conoscenza. Per certi versi aveva ragione, ed e’ questo di cui dovete essere coscienti: non potete iniziare a dire “dal momento che X”, senza avere davvero dei fatti forti con cui giustificare X. Venire a dire “dal momento che io pago l’ IDP per il trasporto”, quando lo pagate per l’accesso, e’ grave. Significa non sapere per cosa paghiate l’ ISP, ma costruire un ragionamento (che non portera’ a nulla dal momento che parte da ipotesi sbagliate) su una assunzione forte richiede che sia verificata.

Non pretendo un metodo “ab initio” su qualsiasi cosa si dica o scriva. Le approssimazioni sono comode. Ma se si tratta di qualcosa dal quale dipende TUTTO un discorso, dovete per prima cosa chiedervi quali fatti forti abbiate sottomano. Se dite che pagate l’ ISP per il trasporto, potete leggere se sul vostro contratto il trasporto sia menzionato: se non lo e’ (mentre lo e’ nel contratto di telefonia, che vi dice chi potete chiamare ed a quanto) , non e’ questo cio’ per cui pagate, e la vostra opinione a riguardo vale MENO dello scritto sul contratto. Per questo si fanno contratti scritti.

Ripeto: sono dispostissimo a parlare di qualsiasi cosa, e se non vi e’ chiaro tentare disperatamente di renderla comprensibile con esempi, ma non accetto l’atteggiamento grillino: “io sono la gente e penso che sia cosi’, e quindi quel che dicono i tecnici che sono della kasta pagata dalle lobby non conta”.

Che tengo un blog per piacere, e se ci sono questi elementi, non e’ piu’ un piacere.

Uriel

(1) Non tutte le telco del mondo vi danno le internazionali nel contratto, e’ usanza europea, ma non universale. Chiedete agli amici sudamericani se non mi credete.

(2) Ok, la dinamica e’ leggermente diversa, ma anche nel caso di TCP/IP SYN e SYN/ACK sono due cose diverse.

(3) tecnologicamente parlando i cloud non fanno nulla di piu’ di un mainframe di 20 anni fa, se non offrire all’utilizzatore un’interfaccia per il provisioning collegata all’ hypervisor. Tutte le altre tecnologie (per esempio, le API AWS) erano gia’ presenti, almeno concettualmente e ovviamente con implementazioni diverse (DB2 invece di ElasticDB, etc) ,sin dai primi hypervisor/OS dei mainframes IBM. Scoprire oggi come programmare in questi ambienti e considerarla una novita’ e’, dal mio punto di vista, una palese manifestazione di incompetenza. Se la pensate diversamente, ho una nuovISSIMA tecnologia da mostrarvi, che chiamero’ UniCOSJ++  SkyJ++ , che vi permette di assegnare CPU virtuali e di aggregare macchine sui vostri mainframe cloud. Cacciate la lira, pls, e vi regalero’ questa vecchia nuovissima tecnologia : piu’ che Cloud, Sky!