Skip to content

INET 4.1.0 (January 29, 2019)

Compare
Choose a tag to compare
@rhornig rhornig released this 29 Jan 09:18
· 6594 commits to master since this release

This is a new minor stable release of the INET 4.x branch. It comes with some
backward incompatible changes, a few new features, a number of smaller improvements,
and many bug fixes. This version requires OMNeT++ 5.4.1 or later.

The backward incompatible changes are the following:

  1. The module initialization stages have been refactored. All stages with numbers
    in their names (e.g. INITSTAGE_LINK_LAYER_2) have been removed, because their
    intended purpose was not clear, and they were often misused. Several new stages
    have been added to replace the removed stages. The new stages have names which
    express better the specific purposes they are used for (e.g. INITSTAGE_POWER,
    INITSTAGE_GROUP_MOBILITY, INITSTAGE_NETWORK_INTERFACE_CONFIGURATION).

    This change most likely results in compilation errors in simulation models
    which use the affected initialization stages. It may also cause runtime errors
    if the stage name has not been changed but its usage is slightly modified.

  2. Individual protocol specific data structure fields of InterfaceEntry (e.g. the
    ipv4Data field with type Ipv4InterfaceData stores IP address and netmask) have
    been removed and replaced with a generic API. The new API allows storing any
    number of arbitrary protocol specific data structures in the network interface
    similarly to packet tags. All affected protocols have been updated.

    This change always results in compilation errors in affected simulation models.

  3. The old ExtInterface module (used for emulation) has been split into several
    modules. There are separate modules for using simulated network interfaces from
    the host OS, and also for using host OS network interfaces from the simulation.
    The new external interfaces no longer rely on PCAP, they rather use host OS
    raw sockets and TUN/TAP interfaces. Besides ethernet, the new version also
    provides IEEE 802.11 network interface emulation. A new external UDP protocol
    module is also added, which allows INET applications to be tested unmodified
    on real networks using the UDP protocol of the host OS.

    This change results in runtime errors in simulations which use the modified
    models. Configuration of affected simulations have to be updated.

  4. Replaced EulerAngles with Quaternion to represent orientation (and angular
    velocity, and angular acceleration) in mobility models to avoid gimbal lock
    and ambigous state representation. Euler angles are easy for human consumption
    but they are generally considered a bad idea for representing 3D orientation.

    This change always results in compilation errors in affected simulation models.

  5. Moved MAC address parameters from MAC modules to the corresponding network
    interface modules (e.g. EtherMac -> EthernetInterface). The reason is that
    MAC address really belongs to the network interface and often management or
    other network interface submodules need access to it.

    This change results in runtime errors in simulations which use the modified
    parameters. Configuration of affected simulations have to be updated.

The backward compatible changes are the following:

  1. Many applications have been extended with support for lifecycle operations.
    Applications can be started, stopped, and crashed individually using the same
    ScenarioManager script which is also used to control the lifecycle operations
    of network nodes. These applications also subclass from a common ApplicationBase.
    Similarly to applications, network interfaces also support lifecycle operations,
    they can be brought down and up using the ScenarioManager.

  2. Two new protocol groups (for UDP and TCP) have been added which allow the
    identification of application protocols based on port numbers. The application
    protocols may not even be implemented in INET, yet they can still be identified
    (e.g. when using emulation) and displayed in the Qtenv packet log window.

  3. The PacketPrinter has been extended with a new type column which contains
    the protocol specific packet type (e.g. ECHO_REQUEST for ICMPv4). The packet
    type is contributed by the protocol specific packet printer. This feature helps
    understanding packet logs in Qtenv. With the new version, the printer is also
    capable of providing a reasonably good enough packet name for packets received
    from external sources (e.g. an external network interface during emulation).

  4. Modules that provide emulation support have been extended with a new host OS
    network namespace parameter. This feature allows, for example, running multiple
    linux BABEL daemons in their own network namespaces (with their own routing
    tables etc.) and connecting each one to the same simulation which provides
    mobility and wireless connectivity. For another example, it allows connecting
    multiple docker containers running in separate network namespaces again to
    the same simulation. Unfortunately, the network namespace feature is only
    available on Linux at the moment.

  5. Added two new socket classes, EthernetSocket and Ieee8022LlcSocket, which
    allow applications to directly use the link layer protocols on a particular
    network interface. For example, an application can send and receive ethernet
    frames directly, bypassing network and transport layer protocols.

  6. Added IEEE 802.1Q VLAN tag (C tag and S tag) support to ethernet interfaces.
    Virtual ethernet networks can be statically configured using ethernet interface
    parameters of switches and hosts. Additionally, all network nodes can have
    any number of virtual network interfaces which can be configured to request
    VLAN tagging. This feature allows using multiple different virtual networks
    on the same physical network on a per application basis.

  7. Raphael Riebl contributed support for ether type discrimantion for IEEE 802.11p
    networks in the 5.9 GHz band. The new modules provide both IEEE 802.11 EPD and
    IEEE 802.11 LPD as required by the standard. The LLC module is automatically
    selected based on the opMode and band parameters.

  8. Mani Amoozadeh contributed several new features and fixed quite a few bugs
    in BGP and OSPF wired routing protocols. Among others, BGP has been updated
    related to split horizon, multi-hop EGBP, network interface mode parameters,
    packet checksum calculation, packet serialization, and multiple additional
    parameters to turn on/off individual protocol features. Similarly, OSPF has
    also been updated related to BDR promotion, network interface mode parameters,
    packet checksum calculation, and packet serialization. He also validated the
    INET models by comparing simulation runs with the CISCO packet tracer tool
    for many important use cases.

  9. Other notable changes:

  • Updated a few mobility models to provide better parameterization for 3D.
  • Added ClnsAddress and ClnsAddressType from ANSA project.
  • Added a new antenna model for rotationally symmetric antenna lobes.
  • Added linear and logarithmic antenna lobe visualization.
  • Extended IPv4 network configuration with support for configuring isolated networks.
  • Fixed several smaller issues related to 802.11 block acknowledgement and QoS recovery procedures.
  • Numerous other bug fixes and small improvements.