# Virtual circuit

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Virtual_circuit
> Markdown URL: https://mediated.wiki/source/Virtual_circuit.md
> Source: https://en.wikipedia.org/wiki/Virtual_circuit
> Source revision: 1343707652
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

A **virtual circuit** (**VC**) is a means of transporting data over a data network, based on [packet switching](/source/Packet_switching) and in which a connection is first established across the network between two endpoints. The network, rather than having a fixed data rate reservation per connection as in [circuit switching](/source/Circuit_switching), takes advantage of the [statistical multiplexing](/source/Statistical_multiplexing) on its transmission links, an intrinsic feature of packet switching.

The 1978 [X.25](/source/X.25) standardization of virtual circuits imposes per-connection [flow controls](/source/Flow_control_(data)) at all user-to-network and network-to-network interfaces. This permits participation in [congestion control](/source/Congestion_control) and reduces the likelihood of [packet loss](/source/Packet_loss) in a heavily loaded network.[1][2] Some circuit protocols provide [reliable communication service](/source/Reliability_(computer_networking)) through the use of data retransmissions invoked by [error detection](/source/Error_detection) and [automatic repeat request](/source/Automatic_repeat_request) (ARQ).

Before a virtual circuit may be used, it must be established between [network nodes](/source/Network_node) in the [call setup](/source/Call_setup) phase. Once established, a [bit stream](/source/Bit_stream) or [byte stream](/source/Byte_stream) may be exchanged between the nodes, providing abstraction from low-level division into [protocol data units](/source/Protocol_data_units), and enabling higher-level protocols to operate transparently.

An alternative to virtual-circuit networks are [datagram](/source/Datagram) networks.

## History

[Paul Baran](/source/Paul_Baran) introduced the concept of virtual circuits in 1962.[3] The [ARPANET](/source/ARPANET) was what would come to be called a virtual circuit network,[4] with the constraint that, for each connection, only one message may be in transit in the network, the sequential order of messages is preserved end-to-end.[5] In the early 1970s, the British Post Office developed the concept of "virtual calls" for its experimental EPSS network but the protocols were complex and limited.[6][7] [Rémi Després](/source/R%C3%A9mi_Despr%C3%A9s) formalized the concept of virtual circuits and validated it on the French [RCP](/source/RCP_(Packet_switching)) experimental network with his team at [CNET](/source/Centre_national_d'%C3%A9tudes_des_t%C3%A9l%C3%A9communications).[8] He and others submitted the [X.25 Recommendation](/source/X.25) to the [CCITT](/source/CCITT) (now ITU-T), which became the standard [communication protocol](/source/Communication_protocol) of worldwide [public data networks](/source/Public_data_network) in the 1970s–80s.[9][10]

## Comparison with circuit switching

Virtual circuit communication resembles [circuit switching](/source/Circuit_switching), since both are [connection oriented](/source/Connection_oriented), meaning that in both cases data is delivered in correct order, and signaling overhead is required during a connection establishment phase. However, circuit switching provides a constant bit rate and latency, while these may vary in a virtual circuit service due to factors such as:

- varying packet queue lengths in the network nodes,
- varying bit rate generated by the application,
- varying load from other users sharing the same network resources by means of [statistical multiplexing](/source/Statistical_multiplexing), etc.

## Virtual call capability

In [telecommunications](/source/Telecommunications), a **virtual call capability**, sometimes called a **virtual call facility**, is a [service feature](/source/Service_feature) in which:

- a [call](/source/Telephone_call) set-up procedure and a call disengagement procedure determine the period of communication between two [DTEs](/source/Data_terminal_equipment) in which [user](/source/User_(telecommunications)) data are transferred by a [packet switched](/source/Packet_switched) network
- end-to-end [transfer](/source/Call_transfer) control of packets within the network is required
- data may be delivered to the network by the [call originator](/source/Call_originator) before the call [access phase](/source/Access_phase) is completed, but the data are not delivered to the [call receiver](/source/Call_receiver) if the [call attempt](/source/Call_attempt) is unsuccessful
- the network delivers all the user data to the call receiver in the same sequence in which the data are received by the network
- multi-access DTEs may have several virtual calls in progress at the same time.

An alternative approach to virtual calls is [connectionless communication](/source/Connectionless_communication) using [datagrams](/source/Datagram).[11]

In the early 1970s, *virtual call* *capability* was developed by British Telecom for [EPSS](/source/Packet_switching#EPSS) (building on the work of [Donald Davies](/source/Donald_Davies) at the [National Physical Laboratory](/source/National_Physical_Laboratory_(United_Kingdom))). The concept was enhanced by [Rémi Després](/source/R%C3%A9mi_Despr%C3%A9s) as *virtual circuits* for the [RCP](/source/Packet_switching#RCP) experimental network of the French [PTT](/source/Postes,_T%C3%A9l%C3%A9graphes_et_T%C3%A9l%C3%A9phones).[12][13][14]

## Layer 4 virtual circuits

Connection oriented [transport layer](/source/Transport_layer) protocols such as [TCP](/source/Transmission_Control_Protocol)[15][16] may rely on a connectionless packet switching network layer protocol such as [IP](/source/Internet_Protocol), where different packets may be routed over different paths, and thus be delivered out of order. However, it is possible to use TCP as a virtual circuit,[16][17][18] since TCP includes segment numbering that allows reordering on the receiver side to accommodate out-of-order delivery.

## Layer 2/3 virtual circuits

[Data link layer](/source/Data_link_layer) and [network layer](/source/Network_layer) virtual circuit protocols are based on connection-oriented [packet switching](/source/Packet_switching), meaning that data is always delivered along the same network path, i.e., through the same nodes. Advantages of this over connectionless packet switching are:

- Bandwidth reservation during the connection establishment phase is supported, making guaranteed [quality of service](/source/Quality_of_service) (QoS) possible. For example, a [constant bit rate](/source/Constant_bit_rate) QoS class may be provided, resulting in emulation of [circuit switching](/source/Circuit_switching).
- Less overhead is required since the packets are not routed individually and complete addressing information is not provided in the header of each data packet. Only a small [virtual channel identifier](/source/Virtual_channel_identifier) (VCI) is required in each packet. Routing information is only transferred to the network nodes during the connection establishment phase.
- The network nodes are faster and have higher capacity in theory since they are switches that only perform routing during the connection establishment phase, while connectionless network nodes are routers that perform routing for each packet individually. Switching only involves looking up the virtual channel identifier in a table rather than analyzing a complete address. Switches can easily be implemented in [ASIC](/source/ASIC) hardware, while routing is more complex and requires software implementation. However, because of the large market of IP routers, and because advanced IP routers support [layer 3 switching](/source/Layer_3_switching), modern IP routers may today be faster than switches for connection-oriented protocols.

## Example protocols

Examples of transport layer protocols that provide a virtual circuit:

- [Transmission Control Protocol](/source/Transmission_Control_Protocol) (TCP), where a reliable virtual circuit is established on top of the underlying unreliable and connectionless IP protocol. The virtual circuit is identified by the source and destination [network socket](/source/Network_socket) address pair, i.e., the sender and receiver IP address and port number. Guaranteed QoS is not provided.
- [Stream Control Transmission Protocol](/source/Stream_Control_Transmission_Protocol) (SCTP), where a virtual circuit is established on top of the IP protocol.

Examples of network-layer and data-link-layer virtual circuit protocols, where data is always delivered over the same path:

- [X.25](/source/X.25), where the VC is identified by a [virtual channel identifier](/source/Virtual_channel_identifier) (VCI). X.25 provides reliable node-to-node communication and guaranteed QoS.
- [Frame Relay](/source/Frame_Relay), where the VC is identified by a DLCI. Frame Relay is unreliable, but may provide guaranteed QoS.
- [Asynchronous Transfer Mode](/source/Asynchronous_Transfer_Mode) (ATM), where the circuit is identified by a [virtual path identifier](/source/Virtual_path_identifier) (VPI) and [virtual channel identifier](/source/Virtual_channel_identifier) (VCI) pair. The [ATM layer](/source/Asynchronous_Transfer_Mode#Reference_model) provides unreliable virtual circuits, but the ATM protocol provides for reliability through the [ATM adaptation layer](/source/ATM_adaptation_layer) (AAL) Service Specific Convergence Sublayer (SSCS) (though it uses the terms *assured* and *non-assured* rather than *reliable* and *unreliable*).[19][20]
- [General Packet Radio Service](/source/General_Packet_Radio_Service) (GPRS)
- [Multiprotocol Label Switching](/source/Multiprotocol_Label_Switching) (MPLS), which can be used for IP over virtual circuits. Each circuit is identified by a label. MPLS is unreliable but provides eight different QoS classes.

## Permanent and switched virtual circuits in ATM, Frame Relay, and X.25

**Switched virtual circuits** (**SVCs**) are generally set up on a per-[call](/source/Telephone_call) basis and are disconnected when the call is terminated; however, a **permanent virtual circuit** (**PVC**) can be established as an option to provide a [dedicated circuit](/source/Dedicated_circuit) [link](/source/Data_link) between two facilities. PVC configuration is usually preconfigured by the service provider. Unlike SVCs, PVC are usually very seldom broken/disconnected.

A switched virtual circuit (SVC) is a virtual circuit that is dynamically established on demand and is torn down when transmission is complete, for example, after a phone call or a file download. SVCs are used in situations where data transmission is sporadic and/or not always between the same data terminal equipment ([DTE](/source/Data_terminal_equipment)) endpoints.

A permanent virtual circuit (PVC) is a virtual circuit established for repeated/continuous use between the same [DTE](/source/Data_terminal_equipment). In a PVC, the long-term association is identical to the data transfer phase of a [virtual call](/source/Virtual_call). Permanent virtual circuits eliminate the need for repeated call set-up and [clearing](/source/Clearing_(telecommunications)).

- Frame Relay is typically used to provide PVCs.
- [ATM](/source/Asynchronous_Transfer_Mode) provides both **switched virtual connections** and **permanent virtual connections**, as they are called in ATM terminology.
- [X.25](/source/X.25) provides both **virtual calls** and PVCs, although not all X.25 service providers or DTE implementations support PVCs, as their use was much less common than SVCs

## See also

- [Data link connection identifier](/source/Data_link_connection_identifier) (DLCI)
- [Label switching](/source/Label_switching)
- [Protocol Wars](/source/Protocol_Wars)
- [Traffic flow (computer networking)](/source/Traffic_flow_(computer_networking))

## References

1. ["X.25 - Interface between Data Terminal Equipment (DTE) and Data Circuit-terminating Equipment (DCE) for terminals operating in the packet mode and connected to public data networks by dedicated circuit"](https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-X.25-199610-I!!PDF-E&type=items). ITU-T. October 1976.

1. Rybczynski, A; Wessler, B; Després, R; Wedlake, J (1976-06-07). ["A new communication protocol for accessing data networks: The international packet-mode interface"](https://www.academia.edu/77340340). *Proceedings of the June 7-10, 1976, national computer conference and exposition on - AFIPS '76*. AFIPS (ed.). p. 477. [doi:10.1145/1499799.1499869](https://doi.org/10.1145/1499799.1499869). [S2CID 8790311](https://api.semanticscholar.org/CorpusID:8790311)

1. Baran, Paul (1962). ["RAND Paper P-2626"](http://www.rand.org/pubs/papers/P2626/)

1. ["An Interview with LOUIS POUZIN Conducted by Andrew L. Russell"](https://conservancy.umn.edu/bitstream/handle/11299/155666/oh416lp.pdf?sequence=3&isAllowed=y). April 2012. "Arpanet was virtual circuit." "essentially a virtual circuit service using internal datagram"

1. ["INTERFACE MESSAGE PROCESSOR Specifications for the Innterconnection of a Host"](http://www.bitsavers.org/pdf/bbn/imp/BBN1822_Jan1976.pdf). January 2014. "three parameters uniquely specify a connection between source and destination Hosts." "The destination IMP returns a positive acknowledgment for receipt of the message to the source IMP, which in turn passes this acknowledgment to the source Host." "Each link is unidirectional and is controlled by the network so that no more than one message at a time may be sent over it."

1. Smith, Ed; Miller, Chris; Norton, Jim (2017). ["Packet Switching: The first steps on the road to the information society"](https://www.npl.co.uk/getattachment/de2d9db5-999d-4a75-99ce-6730b8c204a6/UK-role-in-Packet-Switching-(1).pdf). *National Physical Laboratory*

1. Pelkey, James L. (May 27, 1988). ["Interview of Donald Davies"](http://archive.computerhistory.org/resources/access/text/2017/11/102738594-05-01-acc.pdf). *Computer History Museum*

1. Després, R. (1974). [*RCP, THE EXPERIMENTAL PACKET-SWITCHED DATA TRANSMISSION SERVICE OF THE FRENCH PTT*](https://web.archive.org/web/20131020142207/http://rogerdmoore.ca/PS/RCPDEP/RD.html). Proceedings of ICCC 74. pp. 171–85. Archived from [the original](http://rogerdmoore.ca/PS/RCPDEP/RD.html) on 2013-10-20. Retrieved 2013-08-30.

1. "X.25 Virtual Circuits - Transpac in France - Pre-Internet Data Networking". [Bibcode:2010IComM..48k..40S](https://ui.adsabs.harvard.edu/abs/2010IComM..48k..40S). [doi:10.1109/MCOM.2010.5621965](https://doi.org/10.1109/MCOM.2010.5621965). [S2CID 23639680](https://api.semanticscholar.org/CorpusID:23639680)

1. ["Discussion of Technical Choices made for Transpac"](https://www.dropbox.com/s/v43kuy5xwasg2l7/ISS%2076%20-%20Discussion%20of%20Technical%20Choices%20made%20for%20Transpac.pdf?dl=0)

1. Tanenbaum, Andrew S. & Wetherall, David J. (2011). *Computer Networks*. 5th international ed. Pearson. p. 361. ISBN 978-0-13-255317-9.

1. Smith, Ed; Miller, Chris; Norton, Jim (2017). ["Packet Switching: The first steps on the road to the information society"](https://www.npl.co.uk/getattachment/about-us/History/Famous-faces/Donald-Davies/UK-role-in-Packet-Switching-(1).pdf.aspx?lang=en-GB). *National Physical Laboratory*

1. ["RCP, The Experimental Packet-Switched Data Transmission Service of The French PTT"](http://www.rogerdmoore.ca/PS/RCPDEP/RD.html). 21 January 2022.

1. R. Despres, "A packet switching network with graceful saturated operation", in Computer Communications: Impacts and Implications, S. Winkler, Ed. Washington, D.C., 1972

1. RFC 793

1. RFC 1180

1. RFC 955

1. RFC 1644

1. ITU-T, *B-ISDN ATM Adaptation Layer specification: Type 3/4 AAL*, Recommendation I.363.3 (08/96), International Telecommunication Union, 1996, p5.

1. ITU-T, *B-ISDN ATM Adaptation Layer specification: Type 5 AAL*, Recommendation I.363.5 (08/96), International Telecommunication Union, 1996, p5.

---
Adapted from the Wikipedia article [Virtual circuit](https://en.wikipedia.org/wiki/Virtual_circuit) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Virtual_circuit?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
