Mean opinion score calculation and logging in performance SLA health checks
The mean opinion score (MOS) is a method of measuring voice quality using a formula that takes latency, jitter, packet loss, and the codec into account to produce a score from one to five (1 - 5). The G.711, G.729, and G.722 codecs can be selected in the health check configurations, and an MOS threshold can be entered to indicate the minimum MOS score for the SLA to pass. The maximum MOS score will depend on which codec is used, since each codec has a theoretical maximum limit.
config system sdwan
config health-check
edit <name>
set mos-codec {g711 | g729 | g722}
config sla
edit <id>
set link-cost-factor {latency jitter packet-loss mos}
set mos-threshold <value>
next
end
next
end
end
|
mos-codec {g711 | g729 | g722} |
Set the VoIP codec to use for the MOS calculation (default = g711). |
|
link-cost-factor {latency jitter packet-loss mos} |
Set the criteria to base the link selection on. |
|
mos-threshold <value> |
Set the minimum MOS for the SLA to be marked as pass (1.0 - 5.0, default = 3.6). |
To configure a health check to calculate the MOS:
config system sdwan
set status enable
config zone
edit "virtual-wan-link"
next
end
config members
edit 1
set interface "dmz"
set gateway 172.16.208.2
next
edit 2
set interface "port15"
set gateway 172.16.209.2
next
end
config health-check
edit "Test_MOS"
set server "2.2.2.2"
set sla-fail-log-period 30
set sla-pass-log-period 30
set members 0
set mos-codec g729
config sla
edit 1
set link-cost-factor mos
set mos-threshold "4.0"
next
end
next
end
end
To use an MOS SLA to steer traffic in an SD-WAN rule:
config system sdwan
config service
edit 1
set name "MOS_traffic_steering"
set mode sla
set dst "HQ_LAN"
set src "Branch_LAN"
config sla
edit "Test_MOS"
set id 1
next
end
set priority-members 0
next
end
end
|
|
The MOS currently cannot be used to steer traffic when the |
To verify the MOS calculation results:
- Verify the health check diagnostics:
# diagnose sys sdwan health-check Health Check(Test_MOS): Seq(1 dmz): state(alive), packet-loss(0.000%) latency(0.114), jitter(0.026), mos(4.123), bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1 Seq(2 port15): state(alive), packet-loss(0.000%) latency(0.100), jitter(0.008), mos(4.123), bandwidth-up(999999), bandwidth-dw(999999), bandwidth-bi(1999998) sla_map=0x1
# diagnose sys sdwan sla-log Test_MOS 1 Timestamp: Tue Jan 4 11:23:06 2022, vdom root, health-check Test_MOS, interface: dmz, status: up, latency: 0.151, jitter: 0.040, packet loss: 0.000%, mos: 4.123. Timestamp: Tue Jan 4 11:23:07 2022, vdom root, health-check Test_MOS, interface: dmz, status: up, latency: 0.149, jitter: 0.041, packet loss: 0.000%, mos: 4.123.
# diagnose sys sdwan sla-log Test_MOS 2 Timestamp: Tue Jan 4 11:25:09 2022, vdom root, health-check Test_MOS, interface: port15, status: up, latency: 0.097, jitter: 0.009, packet loss: 0.000%, mos: 4.123. Timestamp: Tue Jan 4 11:25:10 2022, vdom root, health-check Test_MOS, interface: port15, status: up, latency: 0.097, jitter: 0.008, packet loss: 0.000%, mos: 4.123.
- Change the
mos-codectog722. The diagnostics will now display different MOS values:# diagnose sys sdwan health-check Health Check(Test_MOS): Seq(1 dmz): state(alive), packet-loss(0.000%) latency(0.150), jitter(0.031), mos(4.453), bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1 Seq(2 port15): state(alive), packet-loss(0.000%) latency(0.104), jitter(0.008), mos(4.453), bandwidth-up(999999), bandwidth-dw(999999), bandwidth-bi(1999998) sla_map=0x1
- Increase the latency on the link in port15. The calculated MOS value will decrease accordingly. In this example, port15 is out of SLA since its MOS value is now less than the 4.0 minimum:
# diagnose sys sdwan health-check Health Check(Test_MOS): Seq(1 dmz): state(alive), packet-loss(0.000%) latency(0.106), jitter(0.022), mos(4.453), bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1 Seq(2 port15): state(alive), packet-loss(0.000%) latency(300.119), jitter(0.012), mos(3.905), bandwidth-up(999999), bandwidth-dw(999999), bandwidth-bi(1999998) sla_map=0x0
Sample logs
date=2022-01-04 time=11:57:54 eventtime=1641326274876828300 tz="-0800" logid="0113022933" type="event" subtype="sdwan" level="notice" vd="root" logdesc="SDWAN SLA notification" eventtype="SLA" healthcheck="Test_MOS" slatargetid=1 interface="port15" status="up" latency="300.118" jitter="0.013" packetloss="0.000" mos="3.905" inbandwidthavailable="1000.00Mbps" outbandwidthavailable="1000.00Mbps" bibandwidthavailable="2.00Gbps" inbandwidthused="0kbps" outbandwidthused="0kbps" bibandwidthused="0kbps" slamap="0x0" metric="mos" msg="Health Check SLA status. SLA failed due to being over the performance metric threshold."
date=2022-01-04 time=11:57:24 eventtime=1641326244286635920 tz="-0800" logid="0113022923" type="event" subtype="sdwan" level="notice" vd="root" logdesc="SDWAN status" eventtype="Health Check" healthcheck="Test_MOS" slatargetid=1 oldvalue="2" newvalue="1" msg="Number of pass member changed."
date=2022-01-04 time=11:57:24 eventtime=1641326244286627260 tz="-0800" logid="0113022923" type="event" subtype="sdwan" level="notice" vd="root" logdesc="SDWAN status" eventtype="Health Check" healthcheck="Test_MOS" slatargetid=1 member="2" msg="Member status changed. Member out-of-sla."
date=2022-01-04 time=11:57:02 eventtime=1641326222516756500 tz="-0800" logid="0113022925" type="event" subtype="sdwan" level="information" vd="root" logdesc="SDWAN SLA information" eventtype="SLA" healthcheck="Test_MOS" slatargetid=1 interface="port15" status="up" latency="0.106" jitter="0.007" packetloss="0.000" mos="4.453" inbandwidthavailable="1000.00Mbps" outbandwidthavailable="1000.00Mbps" bibandwidthavailable="2.00Gbps" inbandwidthused="0kbps" outbandwidthused="0kbps" bibandwidthused="0kbps" slamap="0x1" msg="Health Check SLA status."