In a communication system, a communication network is provided, which can link together two end-point apparatuses or devices so that the end-point devices can send information to each other in a call or other communication event. The information may comprise speech, text, images or video and one or both of the devices may comprise a user terminal such as a personal computer or mobile phone.
Communication systems operable over the internet include voice over internet protocol (“VoIP”) systems, which comprise the routing of voice in conversations over the internet or through any other IP-based communication network. Such systems are beneficial for the user as they are often of significantly lower cost than conventional fixed line or mobile telecommunication networks. This may particularly be the case for long-distance communication. To use a VoIP system, a user installs and executes client software of their device (i.e. user terminal). The client software sets up the VoIP connections as well as providing other functions, such as registration and authentication. In addition to voice communication, the client may also set up connections for other communication media such as video calling, instant messaging (IM), SMS messaging, file transfer and voicemail.
One type of communication system for packet-based communication uses a peer-to-peer (“P2P”) topology. To enable access to a peer-to-peer system, a user must execute P2P client software provided by a P2P software provider on their device, and register with the P2P system. When the user registers with the P2P system, the client software is provided with a digital certificate from a server. Once the client software has been provided with the certificate, then calls or other communication connections can subsequently be set up and routed between users of the P2P system without the further use of a server in the set-up. Instead, the client looks up the required IP addresses from information distributed amongst the P2P client software on end users' devices within the P2P system. That is, the address look-up list is distributed amongst the peers themselves. Once the IP address of a callee's terminal has thus been determined, the caller's P2P client software then exchanges certificates with the callee's P2P client software. The exchange of the digital certificates (or “user identity certificates”, “UIC”) between users provides proof of the users' identities and that they are suitably authorized and authenticated in the P2P system. Therefore, the presentation of digital certificates provides trust in the identity of the users.
It is therefore a characteristic of peer-to-peer communication that, once registered, the users can set up their own communication routes through the P2P system in an at least partially decentralized manner based on distributed address look-up and/or the exchange of one or more digital certificates, without using a server for those purposes. Further details of an example P2P system can be found in WO 2005/009019. VoIP or other packet-based communications can also be implemented using non-P2P systems that do use centralized call set-up and/or authentication, e.g. via a server or mobile telecommunications network.
Modern communication systems are based on the transmission of digital signals between end-points, such as user terminals, across a packet-based communication network, such as the internet. Analogue information such as speech may be input into an analogue-to-digital converter at a transmitter of one terminal and converted into a digital signal. The digital signal is then encoded and placed in data packets for transmission over a channel via the packet-based network to the receiver of another terminal.
Such packet-based communication systems are subject to factors which may adversely affect the quality of a call or other communication event between two end-points. As the growth of the internet increases and users demand new applications and better performance, the rise in data volume generates problems such as long delays in delivery of packets, lost and dropped packets, oscillations and synchronization problems. These troubles are due to congestion, which happens when there are too many sources sending too much data too fast for the network to handle.
Data packets sent from a sending end-point typically pass through one or more routers in the internet before arriving at a receiving end-point. An internet router typically maintains a set of queues, with one queue per interface that holds packets scheduled to go out on that interface. These queues often use a drop-tail discipline, in which a packet is put into the queue if the queue is shorter than its maximum size. When the queue is filled to its maximum capacity, newly arriving packets are dropped until the queue has enough room to accept incoming traffic. Drop-tail queues have a tendency to penalize bursty flows, and to cause global synchronization between flows. Each packet is treated in the same way by a drop-tail queue. Often packets from multiple connections are dropped, causing all involved senders in the connections to enter a “slow-start” state, in which all the senders reduce their data sending rate for a certain period of time. Often all the senders use the same time delay before increasing their sending rates again. Thus, when these delays expire at the same time, all of the senders begin to send additional packets, and the routers queues again overflow causing more packets to be dropped. As a result, the senders again reduce their data sending rate for the fixed delay period. This is an inefficient use of bandwidth, since available bandwidth is often not used and, due to the large number of dropped packets, available bandwidth is used in re-transmission of missing packets.
The performance of network congestion control can be improved if the routers in the internet run Active Queue Management (AQM) and feed back information to end-points of connections using Explicit Congestion Notification (ECN) markings AQM is a technique that consists of dropping or ECN-marking a packet before the queue for which it is bound is full. Typically, these routers operate by maintaining one or more probabilities, and probabilistically dropping or marking packets even when a queue is short. When ECN is used, a router is able to set a flag in a header of a packet, instead of dropping the packet, in order to signal to a downstream receiver the level of congestion. The flag comprises two bits in the header. The receiver echoes the congestion indication to the sender of the packet, which then reacts as though a packet drop was detected. By dropping packets probabilistically, AQM disciplines typically avoid penalizing bursty flows. Also, by providing the end-points (e.g. user terminals) of a connection with congestion indications before a queue is full, AQM disciplines are typically able to maintain a shorter queue length than drop-tail disciplines, which reduces network latency (“ping time”). Early detection and notification of impending congestion helps to avoid global synchronization.
Internet congestion control is carried out in the transport layer at the sources (end-points) and has two parts: the end-to-end protocol TCP (transmission control protocol), and the AQM scheme implemented in routers. The most common AQM objectives are: efficient queue utilization (i.e. to minimize the occurrences of queue overflow and underflow, thus reducing packet loss and maximizing link utilization), small queuing delay (i.e. to minimize the time required for a data packet to be serviced by the routing queue) and robustness (i.e. to maintain closed-loop performance in spite of changing conditions).
Different algorithms for AQM schemes have been proposed, such as RED (Random Early Detection) and its variants, PI, REM, Blue, AVQ, etc. RED monitors an average queue size at a router and drops (or marks, when used in conjunction with ECN) packets based on statistical probabilities. If the queue is empty or almost empty, all incoming packets are accepted. As the queue length grows, the probability for marking or dropping incoming packets grows too. When the buffer is full, the incoming packets are dropped. As the proportion of marked packets increases, a rate controller at the source of the packets (i.e. an end-point of the connection that passes through the router) reactively reduces the sending rate of packets.