DML is used by both Java SSFNet and DaSSFNet to build and configure the network model. It's possible that you want to translate DML models to other formats used by other network simulators. This section is intended to lay out possible steps in doing so, which we feel necessary. We don't have much experience in transforming DML for the use of other simulators.
We have an open-source C++ implementation of the DML parser. Originally, it was part of the DaSSF distribution. We made it a separate library for interested researchers. The parser is used as a library, which provides functions that comply with the DML API. The parser implements all DML functionalities except schema checking. Moreover, the parser offers additional methods for retrieving attributes from the DML tree.
The parser library (a.k.a. libdml) can be obtained from ftp://ftp.cs.dartmouth.edu/pub/jasonliu/ssf/. Be sure to use the latest version. Please note that we made the software publicly available to all researcher without any restriction. You can use it, copy it, modify it, or redistribute it. However, you should understand that we don't provide warranty and we assume no liability whatsoever.
The libdml distribution comes with two examples. The one called dump-dml you may find useful, which is used to dump the DML file (after expanding _find and _extends attributes).
Note that there are two other Java implementations of the DML parser from Renesys Corporation, which can be found here. One of two is a full implementation of the DML API. Unfortunately, the source code is not available to the public.
DML uses NHI addressing scheme. This corresponds to how the network is expressed in the DML file. In DML, network is defined in a hierarchical fashion. The top-level Net attribute may contain other Net attributes, which may contain even more sub-networks. Each network interface card is identified by a sequence of network ids, then a host/router id, and at last the interface id (i.e. N:N:...:N:H:I).
In DaSSFNet, the DML file is first read and parsed, which is transformed into internal tree representation. After that, an algorithm is used to allocate IP addresses to all the NICs defined in the network from their NHI addresses. The algorithm is based on the following ideas:
The SSFNet DML Reference Manual has an excellent description of the NHI addressing scheme. It also has a detailed discussion about the algorithm for IP address allocation.
Different network simulator may all implement the same set of network protocols, such as TCP, UDP, etc, although their implementation details may differ. This might not be true for the application protocols. In SSFNet, there are a bunch of application protocols designed to generate proper network traffic. There are test TCP server and TCP client, UDP stream server and UDP stream client, as well as HTTP server and HTTP client. These protocols are implemented as the drivers behind the network model.
Other network simulators may have totally different applications. One who wants to use the DML models for SSFNet may have to create their own application protocols that mimic the same behaviors. While this is not difficult to do, one may want to check with the specific implementation to get everything right.