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 zero to five (0 - 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-codec
tog722
. 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."