Patent Description:
Voice-over-Internet Protocol (usually referred to as "Voice over IP", "VoIP" or "IP telephony") relates to the delivery of voice and other audio communications (and also to multimedia sessions including an audio component) over Internet Protocol (IP) networks such as the Internet, rather than being provided simply via a public switched telephone network (PSTN).

While some of the steps and concepts involved in relation to VoIP sessions are generally similar to traditional digital telephony and involve signalling, channel set-up, digitisation of analogue voice signals, and encoding, with VoIP sessions, instead of the digital signals being transmitted over a circuit-switched network such as the PSTN, the digital information is instead packetised, and the transmission then involves IP packets being transmitted over a packet-switched network such as the Internet. The IP packets effectively transport audio streams using media delivery protocols that encode audio data (and video data, where applicable) with audio codecs (and/or video codecs, where applicable), an audio (and/or video) codec being a device or computer program for encoding and/or decoding a digital stream of audio (and/or video) data.

VolP plays a significant and increasing role in audio (and multimedia) communication services provided by Internet and Telecommunications Service Providers to their customers. Many VoIP services are supplied over private networks, whose parameters can be carefully controlled to ensure that call quality is maintained in line with expected demand. Nowadays, however, many VoIP services involve providing access over the Internet, enabling customers to use publicly-available networks or low-cost broadband connections.

VoIP is therefore a real-time IP layer service, and as such, the quality of a VoIP call (or "session") may be determined or at least affected by a number of factors such as IP packet loss as well as variations in arrival time of packets known as jitter. There are a variety of techniques for computing a representation of the perceived quality of the call known as the Mean Opinion Score (MOS). VoIP applications typically measure key parameters such as packet loss and jitter, and compute a MOS during the call. The results may be used to mitigate performance issues (e.g. using packet loss concealment) and report on the quality. Some services may request a post-call rating of quality from the user while others may provide some form of real-time indication of the current quality of the call. There are a number of potential causes of IP packet loss and jitter, including IP network congestion, WiFi connectivity or the quality of the broadband connection, for example.

The majority of the broadband access network in the UK and many other countries uses a variant of Digital Subscriber Line (DSL) technology such as ADSL or VDSL (generally referred to as "xDSL"). An ADSL service runs over the access network between a telephone exchange and customer premise, while a VDSL service, also known as Fibre to the Cabinet (FTTC), passes the VDSL signal between the street cabinet and the customer premise. The performance of the DSL network can be susceptible to factors/conditions such as radio interference and poor line connectivity. These conditions can result in brief or longer periods of line errors at the DSL layer which in turn can cause packet loss and jitter at the IP service layer. The DSL link is often considered to be the most likely cause of broadband performance problems and therefore a customer report of problems with IP telephony is likely to be interpreted and initially investigated as a (possible/probable) broadband fault.

VoIP has become a key service, and a customer's perception of the quality of that service is likely to be adversely affected if problems are experienced, even for brief periods, during a VoIP call or meeting, or other such VoIP-based session. This can result in customer-reported faults which may be difficult to resolve with current diagnostic capabilities.

Referring to various prior disclosures, a paper entitled "<NPL>. ) discusses how impulse noise has a severe impact on the whole family of xDSL technologies. The paper focuses on an analysis of impulse noise that is present on subscriber lines and describes three basic impulse noise models, known as "REIN" (Repetitive Electrical Impulse Noise), "SHINE" (Single High Impulse Noise) and "PEIN" (Prolonged Electrical Impulse Noise).

Referring now to prior patent documents, United States patent <CIT>"), entitled "Instantaneous User Initiation Voice Quality Feedback", relates to data networks, and specifically to voice communications over distributed processing networks.

United States application <CIT>") entitled "Distributed System and Method for Diagnosing Network Problems" relates to network monitoring systems and methods. In particular, it relates to a distributed system and method for diagnosing problems in a signal at an endpoint in a network system, wherein the capabilities of a conventional network probe or analyser may be replicated as virtual functions.

Prior techniques relating to real-time services such as VoIP tend to focus on mitigating issues such as packet loss and jitter at the IP layer rather than attempting to establish and deal with the underlying cause of any IP layer performance problems. Similarly, prior techniques to do with DSL performance problems (particularly issues such as the impact of impulse noise and other radio frequency interferers) tend to focus on mitigating the effects.

<CIT>, <CIT>, <CIT>, <CIT>, and <NPL> all describe background art.

An example implementation will now be described with reference to the appended drawings, in which:.

With reference to the accompanying figures, example methods and apparatus will be described.

<FIG> illustrates a simplified diagram of an IP-based network that can be used to deliver a Voice over IP (VoIP) service (or, more generally, an IP multimedia service) to a customer's user device <NUM> which, in this example, is located in a local area network (LAN) <NUM>. The user device <NUM> can be a dedicated consumer device such as a VoIP phone or may be a general purpose computing device (e.g. a smart-phone or a laptop) running a client application.

In this example, a VoIP client <NUM> is incorporated into and is running on a general purpose user device <NUM>, communicating with a LAN gateway device <NUM> via a LAN interface <NUM>. The VoIP client may however be incorporated into the gateway device <NUM> itself.

A generally IP-based network carries VoIP traffic between the user device <NUM> and one or more remote third party devices, represented in this case by a remote user device 11a in a remote LAN 10a connected via its own LAN gateway device 12a (the sub-components of which are not shown, but which may be the same as or similar to those of LAN gateway device <NUM>) to a DSLAM 14a. Remote user device 11a has a VoIP client 115a incorporated therein, allowing it to be involved in a VoIP call or multimedia session with user device <NUM>.

The overall IP-based network comprises a copper and/or aluminium access network (which, in the case of the LAN <NUM>, comprises a PSTN line <NUM> or "local loop" acting as a Digital Subscriber Line (xDSL, sometimes simply referred to as a DSL) connection extending between an xDSL modem <NUM> of the LAN Gateway Device <NUM> and a Digital Subscriber Line Access Multiplexer (DSLAM) <NUM> (or alternatively a Multi-service Access Node (MSAN), which would generally by operated by the network service provider), and a core network <NUM> (which in this example, comprises an IP network <NUM>, and incorporates an IP Multimedia Subsystem (IMS) <NUM>). The IMS is a standards-based architectural framework for delivering multimedia communications services such as voice, video and text messaging over IP networks.

The performance of the digital subscriber line over the DSL connection <NUM> (i.e. between the modem <NUM> of the LAN Gateway Device <NUM> and the DSLAM <NUM>) is continuously monitored, with performance data being collected at intervals, in respect of performance of the connection at different times. Performance metrics are collected at the DSLAM <NUM> and/or at the Gateway Device <NUM>, and may be sent to an Element Manager/Data Storage system <NUM>. This line performance data is usually used by a Dynamic Line Management (DLM) system <NUM> to optimise the performance of the line for speed and stability.

The principle of operation will be described with reference to an example shown in <FIG>.

In the process shown in <FIG>, step s200 indicates that prior to initiation or identification of a VoIP call or other such communication between a first device (e.g. the user device <NUM> in the LAN <NUM>, in <FIG>) and another device (e.g. remote user device 11a), ongoing monitoring of DSL parameters is happening at a default sampling rate in respect of the network connection (e.g. the LAN's DSL connection, running over PSTN line <NUM>). This may involve DSL network layer performance parameters (e.g. counts of code violations (CV), Errored Seconds (ES), Severely Errored Seconds (SES), etc.) being sampled at regular but low-resolution intervals such as every <NUM> minutes, or every two hours, for example, with the data being collected at entities at one or both ends of the DSL connection (such as the DSLAM <NUM> and/or the modem <NUM>), and passed to the Element Manager/Data Storage system <NUM> as set out above.

On identification (step s205) of a new communication such as VoIP call between user devices that is carried via the DSL network connection for at last a part of the end-to-end path between the end-devices (i.e. user devices <NUM> and 11a), performance metrics (e.g. VoIP performance metrics such as packet loss measures, measures of delay, measures of jitter, calculation of a mean opinion score, etc.) are obtained in respect of the (VoIP) communication (step s210).

These (VoIP) performance metrics for the VoIP communication are compared (step s215) with a threshold level and a determination is made as to whether there may be a possible VoIP performance issue (step s220). If not, the process proceeds on the basis that the threshold for investigating possible VoIP performance issues is currently set too low, and the threshold is thus raised (step s260) in order to reduce the likelihood of further false positives before proceeding to step s270 (discussed below).

If it is determined at step s220 that there may in fact be a possible VoIP performance issue, the process proceeds to step s225 at which a provisional alert may be raised (or the process may simply proceed to step s230).

At step s230, the sampling rate for the monitoring of the DSL network layer performance parameters is increased to a more frequent ("high-resolution") sampling rate (every second, or every few seconds, for example). Other parameters not normally sampled may be sampled, alternatively or additionally to those normally sampled.

At step s235, performance metrics are again obtained in respect of the (VoIP) communication.

At step s240, the performance metrics for the VoIP communication are compared with the "high-resolution" network connection data for the period in question, and it is determined at step s245 whether there is a correlation between performance in respect of the VoIP communication between the user devices and the performance of the DSL connection. If not, the process may proceed to step s270 via s260, with the threshold (NB a VoIP performance threshold) for triggering "high-resolution" monitoring of DSL network connection data being raised (step s260) in order to reduce the likelihood of further false positives.

If it is found at step s245 that there is a correlation, it is concluded that DSL issues are the likely cause of VoIP performance problems. An alert may be raised, and action may be initiate to resolve any network connection issues (step s250). The VoIP performance threshold for triggering "high-resolution" monitoring of DSL network connection data may be reduced (step s255) on the basis that the triggering was not a false-positive (indicating that a lower threshold may in fact be applicable), and the process proceeds to step s270.

At step s270, it is determined of the VoIP communication is still in progress or has ended. If it is still in progress, the process returns to step s210. If not, the process proceeds to step s275, at which the VoIP performance threshold may be updated for use in subsequent calls (e.g. to a few "default" level) or reset to a standard level for the beginning of a new call before returning to step s200.

A further example is shown in <FIG> (which is divided into two parts, shown as <FIG> and <FIG>, with bridging points marked as "A", "B" and "C" between the two parts).

When a VoIP call commences (step s300), key parameters at the VoIP client application (e.g. the VoIP client <NUM>, in the example shown in <FIG>), including packet loss (PL), jitter and MOS (Mean Opinion Score), with timestamp, are recorded in real-time at regular intervals e.g. per second throughout the call (step s302). At the end of a call, details of the call, including quality parameters are logged. Under normal conditions, the quality of the VoIP call and the supporting xDSL circuit performance will fall within thresholds for acceptable performance. However, under fault conditions, which may be intermittent in nature, there may be brief or longer periods during a call where the quality of the VoIP session falls below the acceptable threshold. If the supporting DSL circuit has a physical connectivity defect, which may be intermittent in nature, the circuit may be susceptible to radio interference or even brief periods of high signal attenuation which result in line errors e.g. code violations which may be the cause of the poor quality of the VoIP call.

The perceived quality of a VoIP call at any instant is represented in this example by the MOS value. Call quality can be reduced by loss of IP packets and by excessive jitter or delay in packet arrival. Depending on how MOS is calculated by the VoIP client application, packets lost during quiet (no speech) periods may be disregarded in the MOS calculation as the effect will not be audible.

One or more thresholds for poor VoIP quality for a given line are stored on the client CPE device (e.g. the LAN Gateway Device <NUM> in the example shown in <FIG>) (although it is possible that they may be stored on a separate device or by a device such as user device <NUM> in <FIG>). These thresholds are dynamically updated, in this example following calls as described below, though an absolute service quality threshold may also be defined, and in examples such as that described with reference to <FIG>, they may (also) be updated during calls. During the call the VoIP parameters for each sample are compared with the threshold(s) (step s304) and the sample is flagged as OK (step s308) or Poor (step s306) based on the result of the comparison. The sample is added to the VoIP call log (s310) and the sample marking (in this example an "OK" or "Poor" mark) is added to the VoIP FIFO buffer (s312). An algorithm, explained further in the section entitled `Quality Threshold Checking' below, is then used to analyse the markings of multiple VoIP samples in the FIFO buffer (s314) to determine whether VoIP call quality has been breached (s316). If so, a check is performed to determine if the call has already been flagged as poor (s318) and if not a VoIP Quality Flag is set to Poor (for this call) (step s320), therefore any subsequent Call Quality breaches, during the same VoIP session, will not result to any further changes to the call flag status. At the end of the call, if no breach has been detected, the call VoIP parameters are used to update the baseline (s362).

If the VoIP quality threshold is breached during the call (s316) and the Call Flag has not already been set (s318) then the VoIP Call Quality flag is set to Poor (s320) and high resolution sampling, e.g. per second, of key xDSL parameters is started (s322), which may include counts of code violations (CV), Errored Seconds (ES) and Severely Errored Seconds (SES), for example. Each xDSL line will have a characteristic behaviour in normal operation and so a dynamically updated baseline performance is stored in the client CPE device, including threshold(s) for poor performance. An absolute service quality threshold may also be defined. As samples are recorded (s326), the parameters are compared with the threshold(s) using an algorithm to determine whether xDSL performance has breached the poor performance threshold(s) (s330) and each sample is marked as OK (s334) or Poor (s332) based thereon. The xDSL sample is added to the xDSL call log (s336) and the xDSL sample marking, the OK or Poor value, is added to the xDSL FIFO buffer (s338). An algorithm is then used to analyse the markings for the multiple samples stored in the xDSL FIFO Buffer (s340) to determine whether xDSL poor quality has been breached (s342) and if so, an xDSL Line Quality Flag is set to Poor (for the current call) (s344).

At the end of the VoIP call (s346), the VoIP sampling, and the high resolution DSL sampling if enabled, are stopped (s348, s350). Data aggregation is applied to the samples in the VoIP Call Log and, if created, the xDSL Call Log (s355). These aggregations can be used, if applicable, for baseline and threshold updates. Further explanation given in `Dynamic Baselines and Thresholds' below. Several checks may then be performed before the final call summary details are added to the call log. Firstly, the VoIP Call Quality Flag is checked (s360). If this is OK, then the call VoIP parameters are used to update the baseline and poor quality thresholds (s362). If the VoIP Call Quality Flag is set to Poor, then the VoIP parameters are not used to update the baseline and the xDSL Line Quality Flag is checked (s364). If the xDSL Quality Flag is OK, then the xDSL baseline and quality threshold(s) are updated (s366). This results in the VoIP call being logged as "Poor", but not due to poor xDSL quality. If the xDSL Line Quality Flag is set to Poor, then a further check is performed to determine whether VoIP poor quality events - such as lost IP Packets - correlate with xDSL line quality breach events such as excessive CV or ES (s368, s370). If so, then the call can be logged as Poor due to poor quality xDSL performance (s375). Upon completion of these checks the VoIP Call Log is closed (s380) and is ready for submission to the central management system, further explained in `Client Reporting' below. This ends the process (s390).

A preferred feature of the algorithm used to detect poor quality is that it should generally avoid spurious triggering. One approach to this is to hold a rolling FIFO buffer of samples of defined length e.g. 'x' seconds, updated at the sample frequency e.g. per second. At each update, the FIFO buffer is checked for the existence of 'y' sequential Poor Quality Flags or 'z' Poor Quality Flags in the FIFO buffer. For example, the FIFO buffer length (x) may be set to <NUM> seconds. If 'y' is set to <NUM> and 'z' set to <NUM>, then at each buffer update, if the three most recent samples or any five samples in the <NUM>-second buffer period are rated as Poor, then the algorithm outcome is Poor. A count of breached samples throughout the call may also be recorded to provide a record of the pattern of disruption. This algorithm may be used for both the VoIP and xDSL quality checking.

Each customer circuit will have a unique characteristic behaviour for the xDSL line and VoIP call performance. While absolute thresholds may be set for service quality, a better quality of service experience is provided if each circuit can produce and dynamically update its own baseline and quality thresholds.

For VoIP call quality, key parameters include MOS, Packet Loss, jitter and delay. During a call, a MOS value is calculated for each sample, e.g. per second. At the end of the call, the median of the MOS values for all the samples is calculated, as is the median of the lowest x% of sample values. This provides a baseline for the normal and lowest level of call quality for this call.

Similarly, if Packet Loss is to be used, the value for packet loss in each sample is recorded. At the end of the call, the median of the Packet Loss values for all the samples is calculated, as is the median of the highest x% of sample values. This provides a baseline for this call for the normal and highest level of Packet Loss.

The baselines for normal and poorest VoIP performance for this circuit can then be updated using a rolling median algorithm. Note alternative techniques to median values for baselining could be used, such as mean values or calculating a standard deviation score for the difference between the normal and poorest quality values.

A similar baselining technique can be applied to the xDSL parameters, e.g. code violations. Where xDSL sampling has been enabled during a call, the median of the code violation count for each sample period and the median of the highest x% of the counts could be used to set a baseline for the call. A rolling median technique could then be used to set new baselines for the circuit. It is recognised that, due to the intermittent nature of disruptive events on the circuit, xDSL sampling may not be triggered until near the end of a VoIP call, and so a minimum number of samples for a call will be required to be acceptable for baselining. If this minimum is not reached, then no baseline updating is performed.

The description above has assumed that the client CPE device is performing all the sample evaluation, call summarisation and baseline updating as a real-time activity. However, the client will normally be reporting performance information back to a central management system at intervals and the call quality logs and baselines could be returned as part of this reporting process. It would also be possible to perform baseline updating centrally and push the updated thresholds to the client CPE device if a lower frequency of updating is preferred.

<FIG> is a block diagram of an example computer system=. A central processor unit (CPU) <NUM> is communicatively connected to a data store <NUM> and an input/output (I/O) interface <NUM> via a data bus <NUM>. The data store <NUM> can be any read/write storage device or combination of devices such as a random access memory (RAM) or a non-volatile storage device, and can be used for storing executable and/or non-executable data. Examples of non-volatile storage devices include disk or tape storage devices. The I/O interface <NUM> is an interface to devices for the input or output of data, or for both input and output of data. Examples of I/O devices connectable to I/O interface <NUM> include a keyboard, a mouse, a display (such as a monitor) and a network connection.

Claim 1:
A computer implemented method for monitoring a network connection (<NUM>) at a first sampling rate to generate monitoring data for the network connection for determining a performance issue in the network, the method comprising:
Identifying a communication occurring via the network connection; and
responsive to a trigger in respect of the communication, adapting the sampling rate to a second sampling rate greater than the first sampling rate so as to determine whether a performance degradation in the communication is attributable to the network connection; characterised in that:
performance metrics suitable for determining the performance issue in the network are available for the communication; and
the adapting of the sampling rate to a second sampling rate is triggered by comparison of one or more of the available performance metrics for the communication with one or more corresponding adjustable performance metric thresholds.