Frame relay is a "multiplexed interface to a packet switched network." Doesn't that sound impressive? It's from the FAQ. What it means is that Frame Relay provides the user's computer (or DTE) with the illusion of many different connections to different machines when there is in fact only one physical link.
Frame Relay sets up a bunch of PVCs (Permanent Virtual Circuits) or SVCs (Switched Virtual Circuits), which are somewhat similar to the association of address & port numbers for client server interaction. Virtuals circuits define paths thourough the networks, but don't give those paths space on the wires until information of some sort is passed along them. But, in a PVC the addresses are the addresses of the specific machines on either side of the Frame Relay network, and instead of port numbers, each virtual circuit has something called a DLCI (Data Link Connection Identifier) assigned to it. A DLCI is a number that uniquely identifies each virtual circuit. So, it's kind of like a port number, except that the assignment of virtual circuits is done on the machine level, rather than the process level, and virtual circuits are resolved in hardware, not software. SVCs assign DCLIs as needed, which saves on memory overhead, but requires a sort of dial-up procedure as each process starts talking to someone else.
The big advantage of Frame Relay is that no resources are used whent there is no information to be sent.
Now, all communication over a Frame Relay network is indirect. Your computer talks to a switch, which may then talk to another switch or another computer on the network (a computer on the same network is commonly called a peer). One thing this can lead to is unnecessary slowdown of your process. The links between the switches are shared with (potentially) every other computer on the network, so there is sometimes line congestion. You and your partner computer can be slowed down by a completely different conversation over the network.
This congestion is taken care of under the protocol. Whenever there is congestion on a line, the switches in charge of that line change a bit in the Frame Relay frame: this bit is called FECN (Forward Explicit Congestion Notification) if the frame actually experienced congestion, or BECN (Backwards...) if the frame just passed by a congested spot. I'm sure there are intelligent routing protocols that make use of this information to avoid trouble spots. However, when a network becomes too congested, it's bad and results in lost packets.
There are two variants of Frame Relay networks: frame switching and cell swqitching. Frame switching networks keep the frames intact as they are passed from switch to switch. Cell switching networks bereak the frames up into a certain fixed size information packet, called a cell. When the cells reach their destination, they are reassembled into the original packet.
So, a computer on a Frame Relay network only needs a link to a switch to get hooked up, and a Frame Relay network to hook on to. It can then have seemingly direct access to any other computer on that network. All in all, it seems a good idea, but the basic net infrastructure is completely hidden in this account. For good performance, there should be a mesh like toplogy, which requires quite a lot of cable links and switches. So there are higher costs associated with this protocol than are implied in my account.