Post on 02-Jan-2016
Jens Trier RasmussenMicrosoft
NETW400 - You Sound Marvelous Part 2- A deep dive into the Lync Call Quality Methodology SQL Queries and Data
Introduction
41% of all support cases cite call quality issues
Microsoft and our biggest customers struggle to maintain call quality as they scale up
CQM was built to address this problem.
The Quality ProblemAfter CQM (5 months):
There is a complex set of dependencies from the endpoint to the access point to the core network to the server.
Degradation in any aspect lowers quality for the entire call or conference.
Why is Call Quality hard to achieve?
AV MCUCAS
CAA
Remote
Internal Internal
Mediation Server
PSTN Gateway
Guest
Call Leg
READ IT!! Lync 2013 Networking Guide
3. Network
Media stream quality between Lync servers – AV MCU, Mediation, Gateway
Media stream quality between endpoints and endpoints to servers
CQM looks at quality three ways
2. Endpoint
Endpoint factors including system, device, media transport and media path
1. ServersLync servers must be healthy and running without resource constraints
It is all in QoE
• All media endpoints send quality information to the Monitoring Database after each call• Collection of and purging of QoE
information controlled by CsQoEConfiguration• Global and Site scope• Set-CsQoEConfiguration -EnableQoE $True -EnablePurging $False
• SQL database QoEMetrics in the SQL Server and Instance pointed to by Monitoring Database• Get-CsService –MonitoringDatabase
Quality of Experience (QoE)
• Lync 2010 and Lync 2013 use different QoEMetrics instances• Co-existence challenge
• Different database schemas• 2013 - http://technet.microsoft.com/en-us/library/gg398687.aspx • 2010 - http://technet.microsoft.com/en-us/library/gg398687(v=ocs.14).
aspx
• Main differences• Support for video and application sharing media streams• Network connection• Subnet and IP addresses• ClassifiedPoorCall now on MediaLine and for all 3 modalities• New views including AudioStreamDetailView and
VideoStreamDetailView
Quality of Experience (QoE) information
• Only have 1 instance in your Lync deployment• Offload data from live QoE database to data
warehouse
Best Practices
QoE Database internals
Interesting TablesTable Name Usage
Session One row is a session
MediaLine One row is a media line for one of the 3 modalities
AudioStream One row is an audio stream
AppSharingStream One row is an application sharing stream
VideoStream One row is a video stream
UserAgentDef Contain definitions of different User Agent types
UserAgent Contain User Agents seen in the environment (type, version, name)
User Contains all SIP addresses seen in the environment (URI)
NetworkConnectionDetail Contains network connection types (wired, wireless)
IpAddress Contains IP Addresses and Subnets seen in the environment
Interesting ViewsTable Name Usage
AudioStreamDetailView One row is an audio stream
VideoStreamDetailView One row is a video stream
SessionView One row is a session
MediaLineView One row is a media line
NetworkConfigurationSettingsView One row is a subnet
Table structure and relationships
Relevant ColumnsMediaLineLabel Type of Media and Use
0 Audio
1 Video
2 Video - Panoramic from RoundTable
3 Application Sharing
4 Video - Gallery view
5 Video - Gallery view
6 Video - Gallery view
7 Video - Gallery view
8 Video - Gallery view
SenderIsCallerPAI
Explanation
0 Stream is from Callee to Caller
1 Stream is from Caller to Callee
Column Explanation
ConferenceDateTime
UTC time for when server received the first QoE report from caller or callee
SessionSeq Sequence number to differentiate sessions when they have the same ConferenceDateTime
CallerInsideCalleeInside
Explanation
0 Caller/Callee is signed in via Edge
1 Caller/Callee is signed in to pool
Row relationships
Session Type
# of Session rows # of MediaLine rows per Session
# of media stream rows per MediaLine
P2P 1 1 for audio1 for application sharing1 - 2 for video1
2 for audio1 - 2 for application sharing1 - 2 for video
Conference Equal to Number of participants (each has a session with the MCU)
1 for audio1 for application sharing1 - 7 for video
2 for audio1 - 2 for application sharing1 - 3 for video2
1) Normal video and panoramic video2) Lync 2013 sends both H.264 and RTVideo, if non Lync 2013 clients are in the conference
• In order to get audio stream information you need to join tables
SELECT *FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON m.ConferenceDateTime = s.ConferenceDateTime AND m.SessionSeq = s.SessionSeq
INNER JOIN [AudioStream] AS a WITH (NOLOCK) ONa.MediaLineLabel = m.MediaLineLabel ANDa.ConferenceDateTime = m.ConferenceDateTime ANDa.SessionSeq = m.SessionSeq
• Result of the SELECT is a row per stream and you have access to all columns in the joined tables
Joining
Session 1 MediaLine 1Stream 1 – caller to
calleeStream 2 – callee to
callerSession 1 MediaLine 1
Different JOIN needsWhat do you need to look at? Query base
Sessions SELECT…FROM [Session] s WITH (NOLOCK)
Sessions with network location SELECT..FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON m.ConferenceDateTime = s.ConferenceDateTime ANDm.SessionSeq = s.SessionSeq
Audio Sessions SELECT..FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON m.ConferenceDateTime = s.ConferenceDateTime ANDm.SessionSeq = s.SessionSeq
WHERE m.MediaLineLabel = 0
Audio Streams SELECT..FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON m.ConferenceDateTime = s.ConferenceDateTime ANDm.SessionSeq = s.SessionSeqINNER JOIN [AudioStream] AS a WITH (NOLOCK) ONa.MediaLineLabel = m.MediaLineLabel ANDa.ConferenceDateTime = m.ConferenceDateTime ANDa.SessionSeq = m.SessionSeq
Demo1: Row relationship
• Many columns in QoE tables do not contain the actual value, but a key to another table where the value can be found• Examples:
Foreign Key Relationship
Foreign Key Primary Key Value
Session.CallerURISession.CalleeURI
User.UserKey User.URI
MediaLine.CallerIPAddrMediaLine.CalleeIPAddr
IpAddress.IpAddressKey IpAddress.IpAddress
Demo2: Column relationship
INNER JOIN vs LEFT JOIN
Table 1 Table 2 Table 1 Table 2
INNER JOIN LEFT JOIN
NB: This type of join only give results where table 2 has a value, i.e. with NULL value in table 2 it means that the row will not be included in the result set
Demo3: JOIN
Query Foundation
Looks at different media paths There are a number of different paths media can travel in a Lync deployment
The queries looks at individual paths using Client or Server Location Connection Type
AV MCUCAS
CAA
Remote
Internal Internal
Mediation Server
PSTN Gateway
Guest
Call Leg
• User Agent specifies the version and type of endpoint• Types are defined in the UserAgentDef
table• Instances of User Agents are stored in
UserAgent table
Media Paths – Type of client and server
Foreign Key in Session Primary Key in UserAgent Value in UserAgent
CallerUserAgentCalleeUserAgent
UserAgentKey UserAgentUAType
Demo4: UserAgent table
• Is the caller or callee inside or outside of the Lync deployment?
Media Paths – Location
Source Column in MediaLine Explanation
CallerInsideCalleeInside
1: inside, 0: outside
• What type of network connection is used? Wired or Wireless• Different in Lync 2013 than Lync 2010• Lync 2010 way of testing on 0 for wired and 1 for wifi still works via
“hack”
Media Paths – Connection Type
Foreign Key in MediaLine Primary Key in NetworkConnectionDetail
Value in NetworkConnectionDetail
CallerNetworkConnectionTypeCalleeNetworkConnectionType
NetworkConnectionDetailKey NetworkConnectionDetail
Demo5: NetworkConnectionDetail Table
Media Paths – Putting it all togetherSELECT *FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON m.ConferenceDateTime = s.ConferenceDateTime ANDm.SessionSeq = s.SessionSeq
INNER JOIN [AudioStream] AS a WITH (NOLOCK) ONa.MediaLineLabel = m.MediaLineLabel ANDa.ConferenceDateTime = m.ConferenceDateTime ANDa.SessionSeq = m.SessionSeq
INNER JOIN [UserAgent] AS CallerUA WITH (NOLOCK) ONCallerUA.UserAgentKey = s.CallerUserAgent
INNER JOIN [UserAgent] AS CalleeUA WITH (NOLOCK) ONCalleeUA.UserAgentKey = s.CalleeUserAgent
INNER JOIN [NetworkConnectionDetail] AS CallerNcd WITH (NOLOCK) ON CallerNcd.NetworkConnectionDetailKey = m.CallerNetworkConnectionType
INNER JOIN [NetworkConnectionDetail] AS CalleeNcd WITH (NOLOCK) ON CalleeNcd.NetworkConnectionDetailKey = m.CalleeNetworkConnectionType
CQM Queries
• All about surfacing information found in QoE
CQM Queries
Query Area
Device Looks at quality aspect where the capture device has an impact
System Looks at quality aspect where the PC has an impact
Relay Looks at using relay on internal call
VPN Looks at media over VPN
Transport Looks at TCP as the media transport
LastMile (Wired/Wireless) Clients talking to AVMCU, MS or IP PSTN Gateway
Plant (AVMCU<->MS, MS<->IP PSTN Gateway)
Streams between servers
Trending (various media paths) Streams between different media endpoints
• Looking at network health over different media paths over time• Poor streams defined as audio streams with
one or both of these conditions true• PacketLossRate > 1%• PacketLossRateMax > 5%
Trending Queries
ReportDate AllStreams PoorStreams PoorStreamsRatio QueryType
01-07-2013 2648 6 0,226586103 Trend_1_AVMCU_Mediation
02-07-2013 3204 5 0,156054931 Trend_1_AVMCU_Mediation
03-07-2013 2316 2 0,086355786 Trend_1_AVMCU_Mediation
• Our conditions will surface infrastructure issues, not necessarily report on user experience• Most calls with 1 percent packet loss do not contain any noticeable degradation• However, the existence of such calls is a good indicator that there is a latent issue
that is either causing issues or will cause issues in the future
• Managed wired networks should provide streams below these values
Why these conditions?
• ClassifiedPoorCall flag looks at 5 conditions related to different scenarios• DegradationAvg, RoundTrip, PacketLossRate, JitterInterArrival,
RatioConcealedSamplesAvg
• You can change the queries to use other conditions than PacketLossRate, i.e. like RoundTrip or Jitter, to look at other scenarios
Why these conditions?
Trending Query Structure
• Get audio streams using relevant conditions• Filter streams of interest using Common
Table Expression (CTE) or views• Output standard set of columns:
Trending Query Structure
ReportDate AllStreams PoorStreams PoorStreamsRatio QueryType
01-07-2013 2648 6 0,226586103 Trend_1_AVMCU_Mediation
02-07-2013 3204 5 0,156054931 Trend_1_AVMCU_Mediation
03-07-2013 2316 2 0,086355786 Trend_1_AVMCU_Mediation
Demo6: Query Structure and Results
Take it to the next level
• The Endpoint_0_Device query looks at quality, where the capture device has an impact• Idea is to identify devices providing the
best quality• Challenge is the naming of a device• Localization• USB Port
Working with Devices
Demo7.1: Device naming challenge
• Created a PS script to extract actual device names and load them into a utility database• Use the utility database in the query
Solution Proposal
Demo7.2: Device naming solution
Working with Device Query Results
• Using CallerVPN/CalleeVPN flag in MediaLine• Based on client OS flagging the call as VPN• Challenge is that not all VPN software sets
the bit in the OS
Trend_7_VPN Query Challenge
• Specify a list of VPN subnets and use them as additional conditions in Trend_7_VPN query
Solution
Demo8: VPN Query
• You have discovered that:• A specific Office/Location complains about poor quality• A specific user complains about poor quality• Participants in a specific audio conference complains about poor quality
• You need to look at these specific audio streams
Surface More Data About Poor Quality
Demo9: Individual Audio Streams
Usage Examples
Poor Stream Overview
52
Poor Stream Distribution
Trending Charts
Tips and Tricks
• Performance is a problem with large data sets• Develop scripts using small date range• JOINs are expensive• Use as few as possible• Fine tune scripts to avoid JOIN, when you know what you are looking for
Tips & Tricks
Microsoft PavilionDemos, Speakers, Demos, Lync Room System, Experts, Demos, a Bar....and more Demos
ATTENDEE PARTYWednesday, February 19th
6:30pm-9:30pmHakkasan, MGM Grand
Brought to you by
When it comes to Vegas nightclubs, it doesn’t get any hotter than Hakkasan. And when it comes to opportunities to connect and reasons to party, no one does it better than Lync Conference! Our attendee party has a full lineup: an open bar, awesome food, and one of the best DJs that Vegas has to offer. Don’t miss out on the fun—stop by at 6:30pm and kick off and evening to remember. Come together.
HANDS-ON LABS
You can also access labs on MyLync!
3:00pm – 9:00pm10:30am – 9:00pm7:30am – 9:00pm8:00am –1:30pm
LOCATIONPinyon 3
Monday, February 17Tuesday, February 18Wednesday, February 19 Thursday, February 20
LRS
LOCATIONCopperleaf 12
Wednesday, February 198:30am – 9:45am10:15am – 11:30am1:00pm – 2:15pm2:45pm – 4:00pm4:30pm – 5:45pm
Thursday, February 209:00am – 10:15am10:45am – 12:15pm12:45pm – 2:00pm
MyLync allows you to create a custom experience and network with the Lync Community both online and in person.With MyLync, you can:• Build your own personalized calendar while browsing all available sessions• View breakout session material including PPTs and Videos within
48 hours of each session• Participate in the Community and find people in your social networks
who are attending and interact with speakers• Arrange meetings or social activities• Navigate the Exhibit Hall floor plan and learn more about our Sponsors• Fill out evaluations to win prizes
Log into MyLync at http://mylync.lyncconf.comFor MyLync support, please visit the Registration Desk.*
* Please note that adding a session to your calendar does not reserve a seat. Seating is on a first-come, first-served basis.
Birds of a FeatherBirds of a Feather flock together! Join daily breakfast discussions of relevant topics by sitting in the separately designated areas of the Meal Hall. Seating will be sorted in a different way for each Birds of a Feather breakfast:Wednesday, February 19:Where are you from? Asia/Pacific, Eastern & Central Europe, Latin America, Middle East & Africa, US (West, Central & East) and Canada, Western Europe
Thursday, February 20:What is your interest?Best Practices, Business Value, Clients & Mobility, Lync Meetings and Video, Lync Online, Networking, Platform, Server & Manageability, Voice
Fill out evaluations to win prizesFill out evaluations on MyLync or MyLync Mobile.Prizes awarded daily.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.