ing B have traversed different paths and therefore might have experienced different delays. Virtual Circuits Virtual circuits behave more like circuit switching. Routing decisions are made based on the header of the packet that will be routed and on the previous packets that traversed the router. The source, prior to any data transmission, sends a virtual-circuit estab- lishment request to the network. The network then routes the packet con- taining the request towards the destination and assigns a virtual-circuit identifier to the path. Upon reception, the destination confirms the estab- lishment of the virtual circuit by sending an acknowledgement packet to the source. Once the virtual circuit is established, all the packets carrying the data that will be transmitted will be routed through the same path. Figure 2-3 Network using datagrams. Destination: B ROUTER ROUTER ROUTER ROUTER ROUTER ROUTER ROUTER Destination: B Chapter 2 Packet headers on the path incorporate the virtual-circuit identifier that was assigned previously, and routers forward packets accordingly. Figure 2-4 shows a network based on virtual circuits forwarding packets from A to B. All packets follow the path of the first packet. Differences Between Datagrams and Virtual Circuits Perhaps the most important difference between datagrams and virtual circuits is the state that each requires the network to store. Datagram routing requires no state information (besides routing tables) inside the network. Networks handling datagrams are stateless in the sense that once a routing decision is made, the router does not store the result in order to make subsequent decisions. Conversely, networks dealing with virtual circuits must store the state of virtual circuits and identifiers to match incoming packets to the proper vitual circuit. Therefore, virtual-circuit networks implement more intelligence in the network than datagram networks. Each of these approaches to packet routing presents advantages and dis- advantages. Datagrams do not require any establi