V. Tables in the NCP
We envision that the bulk of the NCP's data base is in associative tables. By "associative" we mean that there is some lookup routine which is presented with a key and either returns successfully with a pointer to the corresponding entry, or fails if no entry corresponds to the key. The major tables are as follows:
1. The Rendezvous Table
This table holds the attributes of a connection. The table is accessed by the local socket, but other tables may have pointers to existing entries.
The components of an entry are:
- (a) Local Socket
- (b) Foreign Socket
- (c) Link
- (d) Connection State
- (e) Flow State
- (f) Data Queue
- (g) Call Queue
- (h) Port Pointer
- (i) Their Buffer Size (only needed on the send side)
- (j) Error State
An entry is created when either a CONNECT or a LISTEN system call is executed or when a request for connection is received. Various fields remain unused until after the connection is established.
2. The Input Link Table
The input interpreter uses the concatenation of the foreign host and link as a key into the input table. The table is used in processing a user-destined message on an incoming link by providing a pointer into the rendezvous table.
3. The Output Link Table
The input interpreter uses the output link table to access the flow state as RFNM's return from transmitted messages. The output link table is keyed by host and link and provides a pointer into the rendezvous table.
4. The Port Table
The system call interpreter uses the concatenation of the process identification and the port identification as a key to obtain a pointer into the rendezvous table.
5. The Output Control Command Table
The system call interpreter and the input interpreter use this table to make entries in the appropriate output control command queues. Commands are queued in separate table entries corresponding to foreign hosts. Before output the contents of the queue are concatenated into a large control message. The components of an entry are:
- (a) Host
- (b) Output Control Command Queue
6. The Output Request Queue
This queue contains an entry for each connection which has data requiring transmission to the net. There is only one entry per connection, which is deleted when the last packet of data is transmitted and is entered whenever a user makes a system request for data transmission.
The entry is re-inserted if transmission is not completed (message too long) or is prevented by the flow control mechanism. The only component of an entry is a local socket.
7. The Host Live Table
This is a simple table listing the hosts which are alive. This table is checked before establishing a connection and before sending any data to ensure that the destination host actually exists. At present the protocol does not define the procedure to be followed for the Host up/Host down conditions. See NWG/RFC#57.
8. The Link Assignment Table
Link numbers are assigned by the receiver. This table records which links are free and can, therefore, be assigned.