Cigale is a simple packet switching network that makes up the data
transmission layer of the Cyclades network and provides users with a datagram
service. Essentially, Cigale is a "black box similar to a XEROX
copier. It takes an image of a source packet, and after some delay
delivers a copy to the specified destination." [Pouzin 1982, p26]
In building it, the aim was to keep it simple to avoid
duplication of function between the various layers of the network.
Therefore, Cigale maximizes the speed of packet transfer by transferring
end-to-end control to hosts. For
example, hosts implement functions such as fragmentation and reassembly.
By enforcing ideas such as layered architecture and the independence of
these layers Cigale provides a simple host to host communication facility.
Central to Cigale’s internal architecture is a kernel that provides a
simple packet communication facility between entities located both outside and
inside Cigale. This facility is the
foundation for mechanisms such as: remote monitoring of nodes from a control
center; adaptive routing; congestion control; and run-time measurements that are
performed in parallel with measurement processes that send information using
regular packets to the measurement center. [Pouzin 1977]
PDU's at the data transmission level are referred to as
common term today). In Cigale, there is only one packet format, for all
purposes. This makes basic packet handling very simple and stable because
packets do not have to be parsed for a variety of formats.
Packet sizes in Cigale can vary from 0 to 2040 bits. A maximum packet size was set so to simplify that the interconnection
with different packet-switching networks: 2040 bits is long enough to accept
packets from the other existing networks, including the British Post-Office
The packet header is 96 bits in length, and contains the following:
header format (4 bits), header length (4 bits), text length (8 bits), packet
identification (16 bits), accounting facilities (16 bits), destination network
(8 bits), source network (8 bits), destination host (16 bits), and source host
(16 bits). The header structure favors octet machines
because they made up the majority of the market at design time. Also, the
designers chose a header length of 96 bits to accommodate computers with 6, 8,
12, 16, 24 or 32 bit word sizes. Cigale does not process or alter the identification field but leaves
them for users to identify their packets. Host level protocols also use these fields to report anomalies and other
Packet Header [Pouzin
At this layer, addresses are referred to as name spaces. The “Routing Updates” section of this document discusses how Cigale
uses this name space. Cigale’s addressing system
consists of a
combination of logical, hierarchical and general addressing. Logical
addressing applies to transport stations (TS). TS’s are designated by
logical names that do not contain references to physical components (ie. a node
or a line). Routing tables keep track of relationships between logical
names and physical locations.
Cigale implements an abstract name space independent from the physical
components. Thus, there is no constraint on naming hosts. Similar to the
American telephone numbering system, host names have region name prefixes. Therefore, any given node only needs to
list local hosts and other regions. Cigale organizes addressing and
routing on host name within a region, and on region names across
regions. [Pouzin 1974]
Address Space [Pouzin
Cigale does not fragment or reassemble messages- it only receives packets.
"Since fragmentation and reassembly of data items are
to be necessary functions of subscriber protocols, no further
fragmentation appears to be desirable at PSN level. However, each PSN is
entirely free to do so, if it wishes, as long as it delivers unaltered
messages to the next PSN." [Pouzin
Since routing tables can become too large to maintain in large networks,
Cigale uses a hierarchical namespace made up of networks, regions and local
To accommodate the small number of cases where regional names is
unacceptable, Cigale allows the use of general addresses (addresses that do not
refer to any specific region).
Routing in Cigale is similar to Arpanet in that routing
information propagates continuously throughout Cigale. First, Cigale switches packets
towards other networks unless the network address is Cigale itself. Then packet
switching occurs on a regional level, unless the packets are already in the final
destination region. Finally Cigale switches
packets towards the local destination. One difference from Arpanet is the
fact that packets never flow backwards. If Cigale cannot find a path, it
drops the packet. [Pouzin
At this level, there is no connection setup and/or
handshaking- it is connectionless.
There is no error detection in Cigale. There are
several reasons why designers chose not to include error detection at this
level. First, since there can exist multiple links between a host and
CIGALE, there really isn't a "pair" at network level. Secondly,
protocols that use CIGALE should already include message error control.
Since there is error control in the transport layer, error detection at this
level is redundant. [Pouzin 1974]
No Error Recovery at this level.
At the time of design very little was known about traffic
control other than the fact that congestion could build up in packet
networks. Evidence from other networks, however, showed that traffic did
not build up quickly. For example, real traffic in ARPANET was below
potential capacity even after several years of operation.
The initial method of preventing congestion in Cigale
consisted of packet dropping. Although this was a simple solution, it was
effective. Each output queue has a maximum number of packet buffers and
when this maximum is reached, nodes start dropping incoming packets.
As time progressed, it became clear that Cigale needed a
better method of traffic control. After looking at previous research,
designers discovered that the problem lay with not having enough
bandwidth. Therefore, Cigale engineers implemented a traffic control
scheme named Channel Load Limiter (CLL). Basically, CLL controlled link
loads and sent choke packets to sources causing congestion. When a
host received a choke packet, it reduced its traffic to the congested
No security features at this level.