5G-MAG / rt-5gms-media-stream-handler

5G Media Streaming - Media Stream Handler
https://www.5g-mag.com/streaming
Other
5 stars 4 forks source link

QoE Metrics Reporting - Support for HttpList metric #35

Closed dsilhavy closed 6 months ago

dsilhavy commented 1 year ago

Feature description

HTTP List entries should be captured by the ExoPlayerListener class and included in the QoE metrics report.

Relevant specifications and corresponding clauses

Example

<QoeMetric>
    <HttpList>
        <HttpListEntry type="MPD" url="http://www.example.com/content/content.mpd" trequest="2011-02-16T08:59:30"
                       tresponse="2011-02-16T08:59:31" interval="50">
            <Trace s="2011-02-16T08:59:30Z" d="171" b="2367 1990 2463 1254"/>
        </HttpListEntry>
    </HttpList>
</QoeMetric>
dsilhavy commented 1 year ago

Basic functionality is implemented.

In general, and this is also true for the other metrics, the XML serialization is pretty painful. I am currently using org.simpleframework.xml.core.Persister with annotations in the corresponding model classes, for instance:

data class HttpList(
    @field:ElementList(name = "HttpList") val entries: ArrayList<HttpListEntry>
)

@Root(name = "HttpListEntry")
data class HttpListEntry(
    @field:Attribute(name = "tcpid")
    @param:Attribute(name = "tcpid")
    val tcpid: Int = -1,

    @field:Attribute(name = "type")
    @param:Attribute(name = "type")
    val type: String = HttpListEntryType.OTHER.value,

    @field:Attribute(name = "url")
    @param:Attribute(name = "url")
    val url: String = "",

    @field:Attribute(name = "actualurl")
    @param:Attribute(name = "actualurl")
    val actualurl: String = "",

    @field:Attribute(name = "range")
    @param:Attribute(name = "range")
    val range: String = "",

    @field:Attribute(name = "trequest")
    @param:Attribute(name = "trequest")
    val trequest: Long = -1,

    @field:Attribute(name = "tresponse")
    @param:Attribute(name = "tresponse")
    val tresponse: Long = -1,

    @field:Attribute(name = "responsecode")
    @param:Attribute(name = "responsecode")
    val responsecode: Int = -1,

    @field:Attribute(name = "interval")
    @param:Attribute(name = "interval")
    val interval: Int = -1,

    @field:ElementList(name = "Trace") val entries: ArrayList<Trace>
)

@Root(name = "TraceEntry")
data class Trace(
    @field:Attribute(name = "s")
    @param:Attribute(name = "s")
    val s: Long = -1,

    @field:Attribute(name = "d")
    @param:Attribute(name = "d")
    val d: Long = -1,

    @field:Attribute(name = "b")
    @param:Attribute(name = "b")
    val b: Int = -1,
)

enum class HttpListEntryType(val value : String) {
    MPD("MPD"),
    XLINK_EXPANSION("Xlink expansion"),
    INITIALIZATION_SEGMENT("Initialization Segment"),
    INDEX_SEGMENT("Index Segment"),
    MEDIA_SEGMENT("Media Segment"),
    BITSTREAM_SWITCHING_SEGMENT("Bitstream Switching Segment"),
    REMOTE_XLINK_ELEMENT("Remote xlink element"),
    MPD_PATCH("MPD patch"),
    OTHER("other")
}

Unfortunately the output is not always as expected, for instance a <httpList> element is added for reasons I don't understand at this point. As an example:

<httpList>
   <HttpList>
      <HttpListEntry actualurl="https://livesim.dashif.org/livesim/sts_1687272968/sid_c3592d4a/testpic_2s/A48/843636490.m4s" interval="187" range="" responsecode="200" tcpid="-1" trequest="1687272982207" tresponse="1687272982207" type="Media Segment" url="https://livesim.dashif.org/livesim/sts_1687272968/sid_c3592d4a/testpic_2s/A48/843636490.m4s">
         <Trace>
            <TraceEntry b="13294" d="187" s="1687272982207"/>
         </Trace>
      </HttpListEntry>
  </HttpList>
</httpList>

This needs further investigation to find the right format. It is always possible to manipulate the final string afterwards, similar to what I did for removing <object> tags here: https://github.com/5G-MAG/rt-5gms-media-stream-handler/blob/51053fe3ab50b7f49d1fec5189fce8f45839d000/app/src/main/java/com/fivegmag/a5gmsmediastreamhandler/qoeMetrics/threeGPP/QoEMetricsExoPlayer.kt#L64

dsilhavy commented 1 year ago

Moved to Jackson for conversion from data classes to XML. Seems to work much better than the framework that I used before.

Example of a (work in progress) metric report as being received by the MediaSessionHandler at this moment:

<?xml version="1.0"?>
<ReceptionReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    contentURI="https://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd"
    xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
    xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport DASH-QoE-Report.xsd">
    <QoeReport periodID="-1" reportPeriod="-1" reportTime="-1">
        <QoeMetric>
            <BufferLevel>
                <BufferLevelEntry level="3994" t="1688933137353" />
            </BufferLevel>
        </QoeMetric>
        <QoeMetric>
            <HttpList>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/Manifest.mpd"
                    interval="933" range="" responsecode="200" tcpid="-1" trequest="1688933135347"
                    tresponse="1688933135347" type="MPD"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/Manifest.mpd">
                    <Trace b="1955" d="933" s="1688933135347" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/init.mp4"
                    interval="128" range="" responsecode="200" tcpid="-1" trequest="1688933136362"
                    tresponse="1688933136362" type="Initialization Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/init.mp4">
                    <Trace b="715" d="128" s="1688933136362" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/844466553.m4s"
                    interval="240" range="" responsecode="200" tcpid="-1" trequest="1688933136500"
                    tresponse="1688933136500" type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/844466553.m4s">
                    <Trace b="39424" d="240" s="1688933136500" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/init.mp4"
                    interval="676" range="" responsecode="200" tcpid="-1" trequest="1688933136363"
                    tresponse="1688933136363" type="Initialization Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/init.mp4">
                    <Trace b="651" d="676" s="1688933136363" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/844466553.m4s"
                    interval="123" range="" responsecode="200" tcpid="-1" trequest="1688933137040"
                    tresponse="1688933137040" type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/844466553.m4s">
                    <Trace b="13237" d="123" s="1688933137040" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/844466554.m4s"
                    interval="232" range="" responsecode="200" tcpid="-1" trequest="1688933137043"
                    tresponse="1688933137043" type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/V300/844466554.m4s">
                    <Trace b="38429" d="232" s="1688933137043" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/844466554.m4s"
                    interval="120" range="" responsecode="200" tcpid="-1" trequest="1688933137165"
                    tresponse="1688933137165" type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1688933135/sid_209688d2/testpic_2s/A48/844466554.m4s">
                    <Trace b="13286" d="120" s="1688933137165" />
                </HttpListEntry>
            </HttpList>
        </QoeMetric>
        <QoeMetric>
            <RepSwitchList>
                <RepSwitchEvent mt="270000" t="1688933136505" to="V300" />
                <RepSwitchEvent mt="270000" t="1688933137050" to="A48" />
            </RepSwitchList>
        </QoeMetric>
    </QoeReport>
</ReceptionReport>
rjb1000 commented 1 year ago

I put that through the XML schema for urn:3gpp:metadata:2011:HSD:receptionreport and found:

Example:

<?xml version="1.0"?>
<ReceptionReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
    xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
    xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport receptionreport.xsd"
    contentURI="https://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd">
    <QoeReport periodID="period1" reportTime="2023-07-10T09:00:00Z" reportPeriod="120000">
        <QoeMetric>
            <BufferLevel>
                <BufferLevelEntry level="3994" t="2023-07-10T09:00:00Z" />
            </BufferLevel>
        </QoeMetric>
        <QoeMetric>
            <RepSwitchList>
                <RepSwitchEvent mt="PT75H" t="2023-07-10T09:00:00Z" to="V300" />
                <RepSwitchEvent mt="PT75H" t="2023-07-10T09:00:00Z" to="A48" />
            </RepSwitchList>
        </QoeMetric>
        <sv:delimiter>0</sv:delimiter>
    </QoeReport>
  </ReceptionReport>
dsilhavy commented 1 year ago

Thanks @rjb1000 this is very useful. Some of the errors should be fixed with my latest commit. Can you point me to the .xsd file you used for the validation? I see the definition in 10.6.2 but I am not sure where to find the corresponding .xsd file.

rjb1000 commented 1 year ago

I extracted the XSD from the paper specification manually and "fixed" a couple of things to make it valid.

I don't believe it is available from any other source. It isn't even a separate file in the specification zip archive.

I'll send you a copy.

dsilhavy commented 1 year ago

Update with a current reporting example. I still need to validate against the xsd provided by @rjb1000 .

<?xml version="1.0"?>
<ReceptionReport xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    contentURI="https://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd"
    xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
    xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport DASH-QoE-Report.xsd">
    <QoeReport periodID="p0" reportPeriod="10000" reportTime="2023-07-10T15:52:41.139Z">
        <QoeMetric>
            <BufferLevel>
                <BufferLevelEntry level="0" t="2023-07-10T15:52:37.269Z" />
                <BufferLevelEntry level="0" t="2023-07-10T15:52:39.047Z" />
                <BufferLevelEntry level="0" t="2023-07-10T15:52:40.024Z" />
                <BufferLevelEntry level="0" t="2023-07-10T15:52:40.411Z" />
                <BufferLevelEntry level="0" t="2023-07-10T15:52:40.450Z" />
                <BufferLevelEntry level="2000" t="2023-07-10T15:52:40.748Z" />
                <BufferLevelEntry level="2000" t="2023-07-10T15:52:40.783Z" />
                <BufferLevelEntry level="3962" t="2023-07-10T15:52:41.117Z" />
            </BufferLevel>
        </QoeMetric>
        <QoeMetric>
            <HttpList>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/Manifest.mpd"
                    interval="1742" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:37.280Z" tresponse="2023-07-10T15:52:37.293Z"
                    type="MPD"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/Manifest.mpd">
                    <Trace b="1955" d="1742" s="2023-07-10T15:52:37.293Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/init.mp4"
                    interval="194" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:39.809Z" tresponse="2023-07-10T15:52:39.820Z"
                    type="Initialization Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/init.mp4">
                    <Trace b="715" d="194" s="2023-07-10T15:52:39.820Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/844502164.m4s"
                    interval="327" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:40.063Z" tresponse="2023-07-10T15:52:40.073Z"
                    type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/844502164.m4s">
                    <Trace b="40241" d="327" s="2023-07-10T15:52:40.073Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/init.mp4"
                    interval="577" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:39.859Z" tresponse="2023-07-10T15:52:39.867Z"
                    type="Initialization Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/init.mp4">
                    <Trace b="651" d="577" s="2023-07-10T15:52:39.867Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/844502164.m4s"
                    interval="323" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:40.406Z" tresponse="2023-07-10T15:52:40.415Z"
                    type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/844502164.m4s">
                    <Trace b="13267" d="323" s="2023-07-10T15:52:40.415Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/844502165.m4s"
                    interval="325" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:40.440Z" tresponse="2023-07-10T15:52:40.450Z"
                    type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/V300/844502165.m4s">
                    <Trace b="39931" d="325" s="2023-07-10T15:52:40.450Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/844502165.m4s"
                    interval="270" range="" responsecode="200" tcpid="-1"
                    trequest="2023-07-10T15:52:40.828Z" tresponse="2023-07-10T15:52:40.837Z"
                    type="Media Segment"
                    url="https://livesim.dashif.org/livesim/sts_1689004357/sid_48c87c39/testpic_2s/A48/844502165.m4s">
                    <Trace b="13256" d="270" s="2023-07-10T15:52:40.837Z" />
                </HttpListEntry>
            </HttpList>
        </QoeMetric>
        <QoeMetric>
            <RepSwitchList>
                <RepSwitchEvent mt="270000" t="2023-07-10T15:52:40.047Z" to="V300" />
                <RepSwitchEvent mt="270000" t="2023-07-10T15:52:40.476Z" to="A48" />
            </RepSwitchList>
        </QoeMetric>
    </QoeReport>
</ReceptionReport>
dsilhavy commented 1 year ago

Fixed some additional issues:

<?xml version="1.0"?>
<ReceptionReport xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    contentURI="https://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd"
    xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
    xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport DASH-QoE-Report.xsd">
    <QoeReport periodID="p0" reportPeriod="10000" reportTime="2023-07-10T16:38:09.671Z">
        <QoeMetric>
            <BufferLevel>
                <BufferLevelEntry level="0" t="2023-07-10T16:38:05.880Z" />
                <BufferLevelEntry level="0" t="2023-07-10T16:38:07.539Z" />
                <BufferLevelEntry level="0" t="2023-07-10T16:38:08.538Z" />
                <BufferLevelEntry level="0" t="2023-07-10T16:38:08.933Z" />
                <BufferLevelEntry level="0" t="2023-07-10T16:38:08.960Z" />
                <BufferLevelEntry level="2000" t="2023-07-10T16:38:09.257Z" />
                <BufferLevelEntry level="2000" t="2023-07-10T16:38:09.287Z" />
                <BufferLevelEntry level="3972" t="2023-07-10T16:38:09.623Z" />
                <BufferLevelEntry level="3930" t="2023-07-10T16:38:09.659Z" />
            </BufferLevel>
        </QoeMetric>
        <QoeMetric>
            <HttpList>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/Manifest.mpd"
                    interval="1630" range="" responsecode="200" trequest="2023-07-10T16:38:05.886Z"
                    tresponse="2023-07-10T16:38:05.898Z" type="MPD"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/Manifest.mpd">
                    <Trace b="1955" d="1630" s="2023-07-10T16:38:05.898Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/init.mp4"
                    interval="229" range="" responsecode="200" trequest="2023-07-10T16:38:08.288Z"
                    tresponse="2023-07-10T16:38:08.298Z" type="InitializationSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/init.mp4">
                    <Trace b="715" d="229" s="2023-07-10T16:38:08.298Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503528.m4s"
                    interval="325" range="" responsecode="200" trequest="2023-07-10T16:38:08.591Z"
                    tresponse="2023-07-10T16:38:08.601Z" type="MediaSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503528.m4s">
                    <Trace b="37793" d="325" s="2023-07-10T16:38:08.601Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/init.mp4"
                    interval="592" range="" responsecode="200" trequest="2023-07-10T16:38:08.355Z"
                    tresponse="2023-07-10T16:38:08.361Z" type="InitializationSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/init.mp4">
                    <Trace b="651" d="592" s="2023-07-10T16:38:08.361Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/844503528.m4s"
                    interval="325" range="" responsecode="200" trequest="2023-07-10T16:38:08.899Z"
                    tresponse="2023-07-10T16:38:08.921Z" type="MediaSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/844503528.m4s">
                    <Trace b="13261" d="325" s="2023-07-10T16:38:08.921Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503529.m4s"
                    interval="324" range="" responsecode="200" trequest="2023-07-10T16:38:08.948Z"
                    tresponse="2023-07-10T16:38:08.955Z" type="MediaSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503529.m4s">
                    <Trace b="40219" d="324" s="2023-07-10T16:38:08.955Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/844503529.m4s"
                    interval="284" range="" responsecode="200" trequest="2023-07-10T16:38:09.323Z"
                    tresponse="2023-07-10T16:38:09.331Z" type="MediaSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/A48/844503529.m4s">
                    <Trace b="13284" d="284" s="2023-07-10T16:38:09.331Z" />
                </HttpListEntry>
                <HttpListEntry
                    actualurl="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503530.m4s"
                    interval="301" range="" responsecode="200" trequest="2023-07-10T16:38:09.342Z"
                    tresponse="2023-07-10T16:38:09.349Z" type="MediaSegment"
                    url="https://livesim.dashif.org/livesim/sts_1689007086/sid_5f9c16fa/testpic_2s/V300/844503530.m4s">
                    <Trace b="39290" d="301" s="2023-07-10T16:38:09.349Z" />
                </HttpListEntry>
            </HttpList>
        </QoeMetric>
        <QoeMetric>
            <RepSwitchList>
                <RepSwitchEvent mt="P0Y0DT0H4M30S" t="2023-07-10T16:38:08.559Z" to="V300" />
                <RepSwitchEvent mt="P0Y0DT0H4M28S" t="2023-07-10T16:38:08.979Z" to="A48" />
            </RepSwitchList>
        </QoeMetric>
    </QoeReport>
</ReceptionReport>
dsilhavy commented 1 year ago

As HttpList looks fine to me I am posting updates about the complete structure to this issue: #27

rjb1000 commented 1 year ago

Any thoughts on this, @dsilhavy?

Looking at TS 26.247 clause 10.4, I don't think QoEReport/QoeMetric/HttpList is in scope for QoE metrics reporting for DASH. (In fact, I can't find anything in that specification that uses this element, so I don't understand why it's even in the schema!)

dsilhavy commented 1 year ago

Any thoughts on this, @dsilhavy?

Looking at TS 26.247 clause 10.4, I don't think QoEReport/QoeMetric/HttpList is in scope for QoE metrics reporting for DASH. (In fact, I can't find anything in that specification that uses this element, so I don't understand why it's even in the schema!)

I would like to pick this up on Friday. As you pointed out HttpList is not listed in 26247 10.4 but it is defined in 23009-1 Annex D. Maybe @haudiobe can clarify this.

dsilhavy commented 1 year ago

I talked to @haudiobe and HttpList should be included as a metric. This should be fixed in 26.247

rjb1000 commented 1 year ago

Ah. OK. It would be helpful raise new new issue in the Standards repository to capture this deficiency in TS 26.247 and to track the fix.

rjb1000 commented 1 year ago

@dsilhavy, @haudiobe: I have done some archaeological digging on this one, and found that the HttpList metric was deliberately removed from TS 26.247 V14.0.0 by CR0093r1 (agreed at SA4#92 as S4-170227 and approved at SA#75 as SP-170027) with the following rationale:

Summary of change: Remove the HttpList metric from the QoE reporting. Reason for change: The HttpList metrics report includes the media URL used, which can be seen as sensitive information for the end-user. As the HttpList metric is not necessary for almost any QoE-related use-case, this privacy breach is not motivated. Consequences if not approved: Privacy breach, or possibly we need to add active end-user consent to (at least parts of) the QoE reporting concept.

This explains why TS 26.247 clause 10.2.2 is void from V14.1.0 onwards.

It looks like the CR forget to remove the HttpList element from the schema in clause 10.6.2, and it has remained there redundantly ever since despite no longer being in scope for DASH reporting in PSS (and, hence, in 5GMS).

This was an Ericsson-contributed Change Request under the IQoE work item. Maybe @gheikkila or @tlohmar can recall this from early 2017?

dsilhavy commented 1 year ago

Based on the discussion in the call I deactivated HTTPList by default. The metric will only be reported if enabled explicitly in the clientMetricsReportingConfigurations.metrics array

rjb1000 commented 1 year ago

@dsilhavy raised issue 5G-MAG/Standards#79 to try and get this fixed in TS 26.247.

dsilhavy commented 6 months ago

Implemented in #67. Not that this metric needs to be explicitly enabled via the metrics property in the ServiceAccessInformation as it is not included in TS 26.247 anymore