INET Framework
  • Download
  • Showcases
  • Tutorials
  • Documentation
    • Introduction
    • Installing INET
    • Getting Started
    • User's Guide
    • Developer's Guide
    • Showcases
    • Tutorials
    • Technical Presentations
    • NED Reference v4.x
    • NED Reference v3.x
    • Extensions
    • Model Catalog
    • 3rd Party Tutorials
    • Teaching Resources
  • Development
    • Repository
    • Bug Tracker
    • Mailing List
    • Coding Conventions
    • Documenting
    • Test Suite
    • Submitting Code
    • Plans
    • Progress
  • Contributing
    • Why Contribute
    • How Can You Help
    • Getting Started
    • Contribution Ideas
  • People
    • Contributors
    • Component Advisors
    • Community Coordinators
    • Core Team

INET-3.99.1 Development Release Available

November 17, 2017

This release is the second development snapshot of the upcoming INET-4.0 version.

The code is still work in progress, which means some details may change until the final 4.0 version is released. At the moment, it requires a modified version of OMNeT++ 5.1 or 5.2. The modification is distributed as a patch file in the ‘misc/patch’ folder.

The highlights of this release are:

  1. General
    • Dropped obsolete run scripts for individual simulations. The run scripts are replaced by a setenv script in the INET installation and separate inet scripts in the bin folder. Run ‘setenv’ once from the shell to setup the environment variables, and run ‘inet’, ‘inet_release’ or ‘inet_dbg’ from the simulation directory.
    • Removed compatibility macros required for OMNeT++ 4.x builds. This new INET version doesn’t build with OMNeT++ 4.x versions.
    • Renamed the byte and bit C++ units to B and b respectively. The new names were selected to be conformant with the IEC & IEEE unit conventions.
    • Fixed several memory leaks and other minor bugs.
  2. Shared pointer
    • Added aliases for std::shared_ptr, std::make_shared, std::dynamic_pointer_cast, etc. to support replacing the shared pointer implementation used by the new Packet API.
    • Added a new shared pointer implementation (from Boost) called IntrusivePtr. The new implementation uses only 1 counter (no weak counter) that is directly added to the shared object using inheritance (thus intrusive). This shared pointer is not thread safe, so it doesn’t use atomic operations to increment and decrement counters, but generally that isn’t a requirement for simulation. According to speed measurements (see tests/speed folder) the release builds run 5-10% faster.
  3. CRC handling
    • CRC insertion and validation code has been refactored and adapted to the new Packet API. This change affects UDP, TCP, IPv4, IPv6, ICMPv4, ICMPv6, Ethernet, and IEEE 802.11. The protocol modules have a parameter to control CRC handling. They support different CRC operation modes: disabled, declared, and computed. Either the disabled (if supported by the protocol) or the computed mode must be selected if packets are recorded in a PCAP file.
  4. Ethernet
    • Refactored physical layer packet representation and processing
    • Cleaned up MSG files defining ethernet PHY and MAC frames and headers.
  5. IEEE 802.2
    • Renamed the global C++ protocol variable to Protocol::ieee8022, and the global C++ protocol group variable to ProtocolGroup::ieee8022protocol.
    • Fixed handling incoming packets with bit errors.
  6. IEEE 802.11
    • Revived the FCS computation and verification. The FCS computation is optional, you can enable it using the ‘fcsMode’ parameter of the Ieee80211Mac.
    • Fixed rate selection mechanism for control response frames. They must be sent with a mandatory rate that is not faster than the rate of the packet for which they are a response. If the received packet was not sent with a mandatory rate, then they were sent with the highest mandatory rate.
    • Changed 802.11 OFDM error models with respect to the service field. The service field is part of the PHY header in terms of bits, but it’s sent in the data part in terms of symbols.
    • Fixed PHY header length in Ieee80211Radio. Added separate PHY chunks and PHY padding bits for completeness. This change doesn’t affect the signal duration, because it was alrady correctly computed.
    • Added descriptors for several parts for signals, transmissions, modes, bands, channels, etc. The new descriptors allow inspecting of the signal meta data in the runtime user interface.
    • Extended 802.11 layered error model for packet level simulation.
  7. CsmaCa
    • Added ‘fcsMode’ parameter and FCS computation and verification.
    • Changed headerLength and ackLength to the minimum value, any additional length specified is represented by a separate ByteCount chunk.
    • Fixed error caused by receiving an ACK frame with bit errors.
    • Fixed state machine when receiving unexpected frames while trying to transmit one.
  8. Netfilter
    • Refactored netfilter hooks so that the new interface functions only get the datagram as a parameter. Hook implementations should query and modify the packet and/or the attached tags. For example, setting the outgoing interface can be done by attaching an InterfaceReq tag.
  9. Network interface
    • Added the InterfaceEntry class used by InterfaceTable to the corresponding NIC modules, because they represent the same network interface. All network interface modules are required to have a @class(InterfaceEntry) property in their NED definition. This change also allows one to see the internal state of a network interface just by selecting its submodule in the runtime user interface.
  10. Radio
    • Extracted a separate IAntennaGain interface from the IAntenna interface. This change allows the transmissions to carry directional selectivity even if the transmitter radio gets destroyed during the propagation of the signal.
    • Changed transmitter lookup to use radio identifier instead of internal pointer to fix crashes when the condition described above occurs.
    • Separated simsignals for transmission/reception from radio signal departure/arrival. This allows differentiating signals at the receiver which are actually attempted to be received as opposed to simply arriving there.
  11. MANET routing
    • Adapted all MANET routing protocols (AODV, DYMO, and GPSR) to the refactored INetfilter hook interface. Routing protocols query and modify the packet and/or the attached tags as they need.
  12. TCP
    • Removed obsolete TCP socket ‘dataTransferMode’ parameter from all implementations. Applications don’t have to decide upfront between sending byte count based, field based, or raw bytes based packets. With the new API, applications can send any combination of the above over the same connection.
  13. Visualizer
    • Added a new set of integrated visualizer modules called IntegratedMultiVisualizer, IntegratedMultiCanvasVisualizer, and IntegratedMultiOsgVisualizer. These modules contain a submodule vector of all special purpose visualizers inside as opposed to a single instance. This change allows, for example, one to easily configure several visualizers to display various aspects of the simulation differently.

Read the what’s new file for more detail and download INET-3.99.1 now.

Related Pages

All News

  • Back to top
  • Twitter
  • GitHub
  • Mailing List
  • Improve This Website
  • Contact Us