In QoE we store information about sessions and different type of media streams, but how many of these do we store for a conference scenario?

 

Let me answer that question by using the following scenario:

  • July 11, 2013 tu14@contoso.dk drags tu26@contoso.dk and tu29@contoso.dk into a conference and they both accepts it
  • tu14 adds audio to the conference
  • Later tu14 adds application sharing to the conference
  • tu14 stops application sharing
  • tu14 adds video to the conference all tu26 and tu29 accepts and joins with their video started
  • The conference ends

 

How many sessions do this scenario generate in the QoE database? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:

 

SELECT s.ConferenceDateTime

,s.ConferenceKey

,CallerUser.URI as Caller

,CalleeUser.URI as Callee

FROM [QoEMetrics].[dbo].[Session] s WITH (NOLOCK)

        INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON

            CallerUser.UserKey = s.CallerURI

        INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON

            CalleeUser.UserKey = s.CalleeURI

WHERE s.ConferenceDateTime > '2013-07-11'

 

The select statement joins information from the Session and User tables. The result of this query is shown below. It shows 6 sessions: 1 session from each three participants to the AV MCU (conferencing server for audio and video) and 1 session from each three participants to the AS MCU (conferencing server for application sharing).

 

 

So how many audio streams do we have? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:

 

SELECT s.ConferenceDateTime

,s.ConferenceKey

,CallerUser.URI as Caller

,CalleeUser.URI as Callee

     ,a.SenderIsCallerPAI

FROM [QoEMetrics].[dbo].[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) ON

            a.MediaLineLabel = m.MediaLineLabel

            and a.ConferenceDateTime = m.ConferenceDateTime

            and a.SessionSeq = m.SessionSeq            

        INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON

            CallerUser.UserKey = s.CallerURI

        INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON

            CalleeUser.UserKey = s.CalleeURI

WHERE s.ConferenceDateTime > '2013-07-11'

 

The select statement joins information from the Session, MediaLine and AudioStream tables to give me the result shown below. It shows 6 audio streams. Two audio streams between each participant and the AV MCU: one from the user to the AV MCU and one from the AV MCU to the user (SendIsCallerPAI shows the direction).

 

 

How many application sharing streams do we have? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:

 

SELECT s.ConferenceDateTime

,s.ConferenceKey

,CallerUser.URI as Caller

,CalleeUser.URI as Callee

     ,ap.SenderIsCallerPAI

FROM [QoEMetrics].[dbo].[Session] s WITH (NOLOCK)

        INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON

            m.ConferenceDateTime = s.ConferenceDateTime

            AND m.SessionSeq = s.SessionSeq            

        INNER JOIN [AppSharingStream] AS ap WITH (NOLOCK) ON

            ap.MediaLineLabel = m.MediaLineLabel

            and ap.ConferenceDateTime = m.ConferenceDateTime

            and ap.SessionSeq = m.SessionSeq            

        INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON

            CallerUser.UserKey = s.CallerURI

        INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON

            CalleeUser.UserKey = s.CalleeURI

WHERE s.ConferenceDateTime > '2013-07-11'

 

The select statement joins information from the Session, MediaLine and AppSharingStream tables to give me the result shown below. It shows 6 app sharing streams. Two app sharing streams between each participant and the AS MCU: one from the user to the AS MCU and one from the AS MCU to the user (SendIsCallerPAI shows the direction).

 

 

How many video streams do we see? To answer the question I use following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store would show it:

 

SELECT s.ConferenceDateTime

,s.ConferenceKey

,CallerUser.URI as Caller

,CalleeUser.URI as Callee

    ,v.SenderIsCallerPAI

FROM [QoEMetrics].[dbo].[Session] s WITH (NOLOCK)

        INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON

            m.ConferenceDateTime = s.ConferenceDateTime

            AND m.SessionSeq = s.SessionSeq            

        INNER JOIN [VideoStream] AS v WITH (NOLOCK) ON

            v.MediaLineLabel = m.MediaLineLabel

            and v.ConferenceDateTime = m.ConferenceDateTime

            and v.SessionSeq = m.SessionSeq            

        INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON

            CallerUser.UserKey = s.CallerURI

        INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON

            CalleeUser.UserKey = s.CalleeURI

WHERE s.ConferenceDateTime > '2013-07-11'

 

The select statement joins information from the Session, MediaLine and VideoStream tables to give me the result shown below. It shows 9 video streams. Three video streams between each participant and the AV MCU: one from the user to the AV MCU and one per conference attendee in the gallery view from the AV MCU to the user. In my case there was 2 attendees in the gallery view.

 

ConferenceDateTime

ConferenceKey

Caller

Callee

SenderIsCallerPAI

2013-07-11 07:50:25.387

1041

sip:tu26@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

1

2013-07-11 07:50:25.387

1041

sip:tu26@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

2013-07-11 07:50:25.387

1041

sip:tu26@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

2013-07-11 07:50:48.207

1041

sip:tu29@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

1

2013-07-11 07:50:48.207

1041

sip:tu29@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

2013-07-11 07:50:48.207

1041

sip:tu29@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

2013-07-11 07:50:50.640

1041

sip:tu14@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

2013-07-11 07:50:50.640

1041

sip:tu14@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

1

2013-07-11 07:50:50.640

1041

sip:tu14@contoso.dk

sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB

0

 

 

Conclusion

In a conference there is a session from each participant to each media conferencing server being used (IM is not a real media conferencing server and therefore it is not generating a session). For each session there will be two or more media streams. For audio and application sharing you will always have two, but for video you can have more due to gallery view in Lync 2013 with up to five video streams and the panorama view video stream (for more information about the video streams see this post by Jeff Schertz).