PyDECnet is an implementation of the Digital Network Architecture (commonly called "DECnet") implemented as a pure Python module. It requires Python 3.3 or later. Python 3.7 or later is recommended; note that the Python team no longer supports versions older than 3.5, and with Python 3.6 certain features of PyDECnet are not available. Standards compliance PyDECnet implements the DECnet Phase IV architecture, from the specifications published by Digital. PyDECnet was implemented from the published specifications, as a pure Python module. It implements DECnet routing, both level 1 and level 2 (area) routing. It also implements other aspects of DNA, specifically the MOP (Maintenance Operations) protocols. It will interoperate with Phase IV as well as Phase III nodes, as required by the specifications. PyDECnet also interoperates with Phase II nodes. While this is not found in the Phase IV specifications, it is described in the Phase III specifications, and making it work was a straightforward extension. Phase II support includes the ability to provide "intercept" service. With this, a Phase II node that requests intercept (such as TOPS-20 V4.1) will be able to reach any node, not just adjacent nodes. In addition, PyDECnet can be configured to operate as a Phase III or a Phase II node, in the sense that it runs the routing and NSP protocols according to those versions. This is primarily a test tool. Supported datalinks Supported datalinks include Ethernet, DDCMP over TCP, UDP, asynchronous serial connections, or synchronous serial connections with the use of the USB connected DDCMP framer board, "Multinet" encapsulation of point to point datalink messages over UDP or TCP, and GRE encapsulation of Ethernet packets. Note that Multinet encapsulation over UDP is not recommended because it violates the DNA specification badly enough that it is extremely unreliable except in the most ideal circumstances. All the other data link types, including Multinet over TCP, are fine. Major components PyDECnet contains the following major components: - DNA layers: - Datalink - MOP - Routing - NSP - Session Control - Network Management ("show" and "loop" support only) - Application layer servers ("objects" in DECnet terminology) - File transfer listener - NML - EVL - Mirror - Passthrough ("Poor Man's Routing) - API for MOP and Session Control, using JSON over a Unix domain socket). Two types of "connectors" to wrap this API with a simple programming interface are also supplied. - HTTP(S) based monitoring interface - Applications: - File transfer (NFT) - Network management (NCP) - Sample MOP remote console client - Several other tools intended more as examples The API allows external processes to access protocol services in PyDECnet, via JSON carried over Unix domain sockets. Application features PyDECnet includes several standard DECnet application layer components, currently just those implementing network management services. These are all implemented as Python modules that run as part of the PyDECnet process (rather than as external application processes). The following are currently available: Mirror object (MIRROR, object 25, "node loopback") Event listener object (EVL, object 26) Network management listener (NML, object 19) Poor man's routing (PSTHRU, object 123) File access listener (FAL, object 17) Topology server (TOPOL, used by TOPS-20 V4.1) Multiple node support In typical use, a PyDECnet invocation starts a single DNA node. For testing, multiple systems (bridges or nodes) may be started by a single invocation. The main advantage of doing so is that there is a single logging stream, so the entire sequence of events in the test configuration will show up, in correct order, in that log. If this is done, the home page in the monitoring HTTP service will list the systems, and the pages for each system will have a URL argument of the form "?system=" appended, for example "/routing?system=NI1D". Documentation The following documents are currently provided. Note that documentation is very much a work in progress. Comments would be appreciated. 1. overview.txt - this document 2. install.txt - installing PyDECnet 3. run.txt - how to configure, run, and monitor PyDECnet 4. config.txt - detailed description of the configuration files 5. api.txt - programmer's documentation of the JSON API 6. internals.txt - overview of the design of PyDECnet