In questo post ho deciso di trattare uno dei problemi più comuni che si possono riscontare in un setup di Lync: L’impossibilità di stabilire sessioni Audio/Video tra un client interno ed uno esterno.

Prima di addentarci nel problema specifico, vorrei accennare brevemente quello che si intende per Media e Signaling e quello che sono gli scenario più comuni.

Con il termine Signaling si intende il traffico SIP che serve a “controllare” la chiamata.
Il Media, invece, è il flusso audio video stabilito tra due endpoints.

Due Client Interni
In questo scenario, i due clients eseguono il setup della chiamata e il traffico Media è diretto tra i due Endpoints.Il traffico di Signaling è sempre veicolato sul FE il quale ha il compito di tenere attiva la chiamata.

clip_image002

Due Client Interni senza connessione diretta
In questo scenario, i due clients eseguono il setup della chiamata, ma non essendoci connessione diretta tra i due client, il traffico Media è diretto verso l’interfaccia interna dell’Edge server il quale permetterà l’avvio del traffico Media tra i due Endpoints. Il traffico di Signaling è sempre veicolato sul FE.

clip_image004

Client Interno e Client Esterno
In questo scenario, i due clients eseguono il setup della chiamata tramite L’Edge Server.
L’Edge si preoccuperà di inoltrare il traffico SIP al FE server e di “proxare” il flusso Audio/Video tra il client interno e quello esterno.

clip_image006

Addentriamoci ora in quello che sono i principali errori di configurazione che possono provocare problemi di comunicazione tra client interni e client esterni.

Errore nella Topologia
Uno degli errori più comuni è sicuramente la configurazione della topologia in presenza di NAT.
Quando si implementa un Edge dietro NAT, è necessario specificare all’interno della topologia l’indirizzo pubblico dell’Edge. Se si ha più di una interfaccia configurata sull’Edge server, questo può creare confusione.

Supponiamo di avere la seguente configurazione: Un Edge server con tre IP pubblici dietro NAT.
Quello è necessario inserire all’interno del campo NAT-Enable public IPv4 address deve essere l’indirizzo IP pubblico della parte A/V. Nel caso specifico dovrà essere l’indirizzo IP pubblico di av.test.it.

clip_image008

Firewall Issue MRAS
Affinché un client possa instaurare una sessione con l’Edge server, è necessario che il client ottenga un ticket, detto MRAS.
Se il client non ottiene questo ticket la comunicazione tra Edge e Client non verrà instaurata.
Il client interno esegue una richiesta al server FE e quest’ultimo contatta l’Edge server sulla porta 5062 al fine di ottenere username e password per la sessione.
Risulta quindi necessario che il FE server possano comunicare con l’Edge (internal interface) sulla porta 5062. Queste richieste sono visibili abilitando il logging sul client Lync (in 2013 è abilitato di default).

clip_image010

<credentialsResponse credentialsRequestID="441877560">

<credentials> <username>AgAAJPamU9QBzpHt422cDQ63tBMlJRVBIYSEOgH8pRIAAAAAXzGxzFmyCnDYulOwARHc6TkORTQ=</username>

<password>g/uhPvLCTZIfELDBmTqwtE25VDo=</password>

<duration>480</duration>

</credentials>

<mediaRelayList>

<mediaRelay>

<location>intranet</location> à Client Location (intranet or internet)

<hostName>EDGE INTERFACE</hostName> à Internal or External Edge FQDN

<udpPort>3478</udpPort>

<tcpPort>443</tcpPort>

</mediaRelay>

</mediaRelayList>

</credentialsResponse>

</response>

Se la porta 5062 risulta chiusa la richiesta fallirà con un TimeOut.

Se il client è connesso tramite Edge, la richiesta verrà veicolata tramite l’Access Edge.

Firewall Issue SDP Candidates

Altro problema che si può verificare è che L’Edge server non venga inserito nei Cadidates inviati dal client interno.

How Communicator Uses SDP and ICE To Establish a Media Channel
http://blogs.technet.com/b/nexthop/archive/2009/04/22/how-communicator-uses-sdp-and-ice-to-establish-a-media-channel.aspx

I client interni devono poter contattare l’interfaccia interna dell’Edge Server sulla porta 443 TCP e 3478 UDP.
Un semplice metodo per testare la comunicazione, è quello di eseguire un telnet sull’interfaccia interna dell’Edge sulla porta 443.
In alternativa, catturando una traccia di rete, è possibile verificare che il Three-way handshake (SYN,SYN-ACK,ACK) venga stabilito correttamente.
In presenza di proxy, è consigliabile aggiungere l’exclusion per l’interfaccia interna dell’Edge.

Questi sono i problemi più comuni che possono causare la mancata comunicazione tra client interni ed esterni.

HTH

/Stefano