Subj : FidoNews 31:04 [03/08]: Ftsc Information To : All From : FidoNews Robot Date : Mon Jan 27 2014 03:42:01 ================================================================= FTSC INFORMATION ================================================================= Publication: FTS-5000 Revision: 5 Title: The Distribution Nodelist Author(s): FTSC Members, Administrator and Honoured Guests Date: 2014-01-23 ====================================================================== Status of this document ----------------------- This document is a Fidonet Technical Standard (FTS) - it specifies the current technical requirements and recommendations for FTN software developers, coordinators and sysops of the Fidonet network and other networks using FTN technology. This document is released to the public domain, and may be used, copied or modified for any purpose whatever. Abstract -------- Current practice for Fidonet Technology Networks (FTN) is to maintain a nodelist used to store the details of the nodes in the network, and the network structure. Contents -------- 1. Introduction 2. Supersessions 3. Purpose 4. Publication and Distribution 5. Content 5.1 Comment Lines 5.2 Special Header 5.3 Data lines 6. Nodediffs 7. Segments A. References B. History ====================================================================== 1. Introduction --------------- Fidonet is a peer-to-peer network utilising multiple different, and often incompatible, communication technologies that are independent of Fidonet itself, and is organised into a particular hierarchy for both technical and management purposes. For direct communication, it is necessary that the originating node knows in advance the exact method and capabilities of the destina- tion node in order to determine if, when, and how a direct Fidonet mail session can be established. For routing and management, the stated hierarchy must also be known. All this information is collected into a file called the "nodelist". While nodelists of various flavours and completeness are in use, the "Distribution Nodelist" is the official record of all Fidonet nodes, their operators, their capabilities and their relation to each other in the network hierarchy. In essence, the nodelist defines Fidonet. 2. Supersessions ---------------- FTS-0005 superseded and replaced the documents known under the names of FSC-0002, and FTS-0002. This document supersedes and replaces FTS-0005. 3. Purpose ---------- Along with the companion technical standard (FTS-5001) this document defines the format and content of Fidonet's distribution nodelist. Unlike most FTSC documents, the nodelist standards are not only aimed at developers, but also at maintainers of Fidonet (and other Fidonet Technology Networks) nodelist segments. While nodelist segment maintainers should try to be quite strict in their adherence to this document, it is recommended that software developers be prepared to accept deviations from this standard, especially with regard to field and line size. It is assumed you're already familiar with Fidonet structure and addressing terminology. 4. Publication and Distribution ------------------------------- The Distribution Nodelist uses the filename NODELIST.nnn, where nnn is the day-of-year of publication, starting at 001 for the first day of January. Partial and/or alternate nodelists must use some other base filename (i.e. in place of NODELIST). For actual distribution, NODELIST.nnn is packed into an archive file named NODELIST.Pnn, where nn are the last two digits of day-of-year and P is the compression format used as listed below: A = .arc J = .arj L = .lzh R = .rar Z = .zip The ZIP format is presently the official Fidonet standard, although others may be distributed in addition. 5. Content ---------- The nodelist is a flat text file containing any number of lines, using only the ASCII (7 bit) character set. For the remainder of this document, characters in the range 00h to 1Fh, plus 7Fh, shall be called "control characters," and characters in the range 20h to 7Eh shall be called "printable ASCII." Every line must be terminated with a carriage return (^M, 0Dh) and a line feed (^J, 0Ah), in that order. The file itself must be terminated with a single EOF character (^Z, 1Ah), and no other data following. Future implementations should accept nodelists with the EOF (^Z) character omitted. No other control characters are permitted anywhere in the nodelist. Where the operating system uses a different format for text files software that reads the nodelist should also be able to handle nodelists stored in that format. Where CRCs are to be calculated (see section 5.2) the calculations must be done as if the nodelist has the exact binary format described above. For compatibility with certain broken segment processors, nodelist maintainers should limit all lines to at most 157 characters (plus terminator). It is very likely this limitation will be removed in the future, therefore future software implementations should be able to process lines of up to 1024 characters, and individual fields of up to 255 characters (unless otherwise specified). 5.1. Comment Lines ------------------ Comment lines begin with a semicolon (3Bh) in the first character position followed by zero or more alphabetic characters called "interest flags." A program which processes the nodelist may use comment interest flags to determine the disposition of a comment line. The remainder of a comment line (with one exception, treated below) is free-form ASCII text. There are five interest flags defined as follows: ;S This comment is of particular interest to Sysops. ;U This comment is of particular interest to BBS users. ;F This comment should appear in any formatted "Fido List." ;A This comment is of general interest (shorthand for ;SUF). ;E This comment is an error message inserted by a nodelist generating program. ; This comment may be ignored by a nodelist processor. 5.2. Special Header ------------------- The first line of a nodelist is a special comment line containing identification data for the particular edition of the nodelist. The following is an example of the first line of a nodelist: ;A FidoNet Nodelist for Friday, July 3, 1987 -- Day number 184 : 15943 Please note that the above line has been split in the sole interest of readability. It should appear on just one line. This line contains the general interest flag, the week day, full date, the 3-digit publication date (described in section 4), and ends with a 5-digit decimal check value. The publication date and check value are padded to length with leading zeros, if necessary. The check value is derived as follows: Beginning with the first character of the second line, a 16-bit cyclic redundancy check (CRC) is calculated for the entire file, including carriage return and line feed characters, but not including the terminating EOF character. The check polynomial used is the same one used for many file transfer protocols: 2**16 + 2**12 + 2**5 + 2**0 The CRC may be used to verify that the file has not been edited. The importance of this will become evident in the discussion of NODEDIFF below. CRC calculation techniques are well documented in the literature, and will not be treated further here. The first line will certainly be different from the above in the case of nodelist segments for individual zones, regions, networks or hubs; it will also be different for other Fidonet Technology Networks. Except for the day number and the CRC, developers shouldn't make any assumption on the format of this line. The suggested parsing algorithm is to find the last colon in the line, and then scan backwards to get the day of issue. 5.3. Data lines ---------------- A nodelist data line contains no less than seven (7) variable length fields separated by commas (2Ch), defined below. Each data line is a record/entry for an individual Fidonet node. Printable ASCII characters except for commas and spaces are allowed in all string fields unless specified otherwise. Underscores (5Fh) are always used in place of spaces (20h). Field 1: Keyword Type: string; Length: 1 to 6. The keyword field defines the type of node, and will either be empty or contain exactly one of the keywords defined below, grouped by functional class. No other keywords are valid in the distribution nodelist at this time, but private nodelist distributions may include other node types by marking them appropriately in this field. One common example is the "Point" keyword. See FTS-5002 for the pointlist specification. It is recommended that future implementations allow for keywords of up to 32 characters, and gracefully handle entries using unrecognized keywords. Full/Member Nodes -- these are the system numbers of individual Fidonet members. See [Policy] for details on Fidonet membership. Defines a normal node entry. Pvt This keyword defines a Private node (see Policy v4.07, Section 2.1.9) - i.e. a node that is operational, but not publicly available for direct contact. When this keyword is used, field six should contain the string "-Unpublished-". In case the coordinator's nodelist processing software does not allow the use of "-Unpublished-" without the Pvt keyword, this keyword may also be used to list an internet only node. In either case, if the originating node cannot contact the destination node, mail may instead be routed via its Hub or Host. Pvt entries are only allowed as members of local networks. Hold Defines a node which is operational but cannot be publicly contacted. This is expected to be a temporary condition. Mail may be sent to such nodes, routed via its Hub, Host or Coordinator, or held locally by the originating node until the Hold keyword is removed. Down Defines a node which is not operational. This is expected to be (semi-)permanent. Mail may NOT be sent or routed to it. Administrative Nodes -- these nodes indicate the beginning of a branch in the Fidonet addressing/management hierarchy. Each branch may contain one or more administrative nodes of lower tier, or any of the above member node types unless stated otherwise. Since the nodelist is a flat file, a branch is simply terminated at the next administrative node of equal or higher tier (or EOF). Member nodes are always part of an administrative branch, and may never appear at the top level of the nodelist. In order from highest to lowest: Zone Begins the definition of a geographic zone and defines its coordinator. A zone is also a logical region AND net. Normal nodes immediately below a Zone node, and before any other administrative nodes, are Zone Independent Nodes. Region Begins the definition of a geographic region and defines its coordinator. A region is also a logical net. Normal nodes immediately below a Region node, and before any other administrative nodes, are Region Independent Nodes. Host Begins the definition of a local network (net) and normally defines its coordinator (see FTS-5001 for the override flag). Hub Begins the definition of a routing subunit within a multilevel local network. Field 2: Node number Type: integer; Range: 1 to 32767; Length: 1 to 5. For member nodes and Hubs (which are treated as member nodes as far as addressing goes), this number is the node number, and must be unique within their local network. For a Zone entry, this number is the zone number. A region and net number of equal value is implied, and the node number is zero. Zone numbers must be unique across the entire network. For a Region entry, this number is the region number. A net number of equal value is implied, and the node number is zero. Region numbers must be unique within each zone, but it is recommended future Region numbers be unique across the entire network for better 2D compatibility. For a Host entry, this number is the net number, and the node number is zero. As with Region numbers, net numbers must be unique within each zone, but should be fully unique if possible. Because the node number zero is reserved for Zone, Region and Host entries, the value "0" is strictly forbidden in this field. Field 3: Node name Type: string. This is the name by which the system is known. Alternatively, this field may be used by IP nodes for a host name, static IP address or E-Mail address for email tunnelling programs. NOTE: There may be formatting limitations on this field for IP capable systems; consult the section on IP flags in FTS-5001. Field 4: Location Type: string. This is the physical location of the node. Generally, this is expressed as the primary local area (town, suburb, city, etc.) and where applicable, an underscore followed by the abbreviation of the regional geopolitical administrative district (state, province, department, county, etc.). Field 5: Sysop name Type: string; Length: 1 to 36. This is the name of the Fidonet member responsible for the node. Field 6: Phone number (PSTN or ISDN) Type: string; Length: 3 to 29 (theoretically); Characters: digits and dashes, or the exact string "-Unpublished-" This field contains two or more numeric subfields separated by dashes (2Dh). The first field is the country code. The rest of the phone number should be formatted according to local practise. The various parts of the phone number are frequently used to derive cost and routing information, as well as what number is to be dialled. A typical example of the data in a phone number field is 1-800-555-0100, corresponding to country 1 (USA), area 800 (area code), exchange 555, and number 0100. Alternatively, this field may contain the string "-Unpublished-" if the node has no conventional phone number. Software must recognize this string as an indicator to never attempt to dial this node by PSTN/ISDN. This field may also contain the static IPv4 address of an IP-only node in decimal format with periods replaced with dashes, and prefixed with a country code of 000. This method should only be --- Azure/NewsPrep 3.0 * Origin: Home of the Fidonews (2:2/2.0) .