Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Rudolf Hornig March 28, 2014
file 1527 lines (1144 sloc) 67.429 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526
Recent changes in the INET Framework

INET-2.3.0 (March 17, 2014)

This release contains several new protocols, and a lot of changes that were
backported from the current integration branch (destined to be INET 3.0).

Application startTime/stopTime fixes:

   - apps start sending at startTime, and send their last packet
     before stopTime
   - negative stopTime means sending forever
   - if startTime and stopTime are the same, the app sends a single
     packet only (except TCP apps)

DHCPServer and Client:

   - The whole implementation has been reviewed to bring it closer to
     the standards defined in RFC 2131 and 2132.

   - Major changes were made both in client's and server's state machines.
     It is now extended with new states (INIT-REBOOT, REBOOTING) and
     with new message types (DHCPNAK, DHCPDECLINE). The new states allow
     the user to model scenarios with lifecycle events.

   - The server's performance model has been removed.

   - The internal representation of the DHCP options were moved to the
     DHCPOptions INET message definition file.

   - Limitation: The client module currently does not support multiple
     DHCP servers and BOOTP relay agents.

SCTP improvements submitted by Irene Rungeler and Thomas Dreibholz:

   - added CMT support (Concurrent Multipath Transfer)
   - added SCTP NAT support
   - added support for using SCTP over IPv6

STP / RSTP support (802.1d) added to the EthernetSwitch:

   - STP: added IEEE 802.1D-1998 implementation of Spanning Tree Protocol.
     The source code is based on the ANSA (

   - RSTP: added IEEE 802.1D-2004 implementation of Spanning Tree Protocol.
     The source code is based on Juan Luis Garrote Molinero's implementation
     from INETMANET.

   - Interfaces can be configured using the new L2NetworkConfigurator module.
     This module allows one to configure network scenarios at Layer 2.

   - Replaced the EtherSwitch relay unit with a new, STP/RSTP capable one.
     The CPU and memory modelling are no longer supported in this relay unit.

Nodes automatically pick-up the network configuration on restart:

   - An IPv4NodeConfigurator module has been added to hosts, which is responsible
     for configuring the host on restart based on information stored in the
     IPv4NetworkConfigurator module.

INetFilter::IHook API:

   Modules can now hook into the IP module with the new 'NetFilter' API.
   Routing protocols can be implemented now without modifying the IP
   module's code. ManetRoutingBase, InternetCloud and ARP have been updated
   to use the new 'NetFilter' API.

Added new routing protocols:

   - RIP (networklayer/routing/rip)
   - GPSR (networklayer/routing/gpsr)
   - DYMO (networklayer/routing/dymo)
   These protocols use INetFilter::IHook, too.

Revised Mobility code:

   Split the 'models' directory into multiple directories:
   - contract - specifies the interface of mobility models
   - common - shared files among mobility models that are not complete
     mobility models
   - static - mobility models that actually don't move
   - single - mobility models controlling only one moving object
   - group - mobility models controlling multiple interlinked moving objects


    Added the Stanford University Interim radio propagation model contributed
    by Konrad Polys and Krzysztof Grochla.

Other, smaller changes:

  - Added ILifecycle support to most applications
  - Renamed AppBase to ApplicationBase and moved to 'common'.
  - UDP: added option to specify the source address of the sent datagram
  - UDPBasicBurst: added bool parameter: excludeLocalDestAddresses
  - UDPVideoStreamCli: use stages in initialize
  - UDPApp*: Added AppBase and subclassed UDP apps from it.
    Binds sockets at startTime and closes them at stopTime.
  - EtherApp* bugfixes
  - Added a command to set TCP queue length threshold. TCP will notify the
    application if it is ready to transmit more bytes.
  - registerSignal() calls were moved from initialize() to static
    variable declarations.
  - Added/fixed @signal declarations, fixed the type of emitted values.
  - httptools: removed the fileExists() function.
  - New logging mechanism + EV handling in preparation for the new OMNeT++ 5.0
    logging mechanism.
  - IPv4Route/IPv6Route: added administrative distance field
  - Added IPv6 header serializer (so ext interfaces can be used with IPv6, too)
  - Invalid access of message pointers fixed in: OSPF, SCTP, DHCP, PingApp
  - Battery: code review, small fixes.
  - Revised init stages in all modules
  - Many smaller fixes and improvements (see the ChangeLog files for further detail.)

INET-2.2.0 (August 22, 2013)

The main highlight of this release is the long-sought support for
simulating node shutdown/restart events for network nodes.

New features:

1. Lifecycle infrastructure.

   For node shutdown/crash/startup/etc, a LifecycleOperation (e.g.
   NodeShutdownOperation) is applied to the submodule tree of the node
   (host or router) by LifecycleController. Each module can decide how
   to handle the operation and how to store the resulting state (up/down,etc).
   Operations can be multi-stage, and don't need to complete immediately
   (i.e. they can take nonzero simulation time and multiple events to complete).

   Network nodes now also have a status submodule (type NodeStatus) with the sole
   purpose of storing the whole node's status (up/down) and displaying it
   via icons.

    - classes: ILifecycle, LifecycleOperation (NodeOperation, InterfaceOperation),
      LifecycleController, NodeStatus
    - NodeStatus module to store the network node's status (up or down)
    - added optional NodeStatus submodule to NodeBase
    - added a test for the basic Lifecycle infrastructure

   We also removed obsolete ways of shutdown/restart: FailureManager, PowerControl,

2. Static IP4 configuration:

   A new module, IPv4NodeConfigurator was added to IPv4NetworkLayer. This module
   is necessary because IPv4NetworkConfigurator cannot configure the node after
   a restart (see newly introduced node lifecycle operations above), since
   being a global module, it doesn't know about node lifecycle events. The new
   module listens to node lifecycle events, and configures the node's routing
   table and interfaces according to configuration computed by the network's
   global IPv4NetworkConfigurator module. Initialization-time node configuration
   is also carried out by the new module.

3. Added TCP Vegas and Westwood algorithms.

   The implementation is a slightly improved version of a 2013 workshop submission:
   "INET framework extensions for TCP Vegas and TCP Westwood", Maria Fernandez,
   Carlos Calafate, Juan-Carlos Cano and Pietro Manzoni. OMNeT++ Workshop, 2013.

4. Added IdealWirelessNic (IdealRadio + IdealWirelessMac) and IdealWirelessFrame msg.

   This is a highly abstracted wireless NIC that consists of a unit disk radio
   and a trivial MAC protocol. It offers simplicity for scenarios where Layer 1
   and Layer 2 effects can be completely ignored, for example testing the basic
   functionality of a wireless ad-hoc routing protocol.

   The most important parameter this model accepts is the transmission range.
   When a radio transmits a frame, all other radios within transmission range
   will receive the frame correctly, and radios out of range will not be
   affected at all. There are no collisions -- a radio can simultaneously
   receive any number of frames, and also transmit a single frame at the same time.

5. STCP received several new features (patches submitted by Irene Ruengeler):
   - 8 new strategies for SCTP stream scheduling
   - SCTP Stream Reset (RFC 6525)
   - SCTP Authentication (RFC 4895)
   - Add-IP feature for SCTP (RFC 5061)
   - NR_SACK feature to SCTP
   - Partial Reliability SCTP (RFC 3758)
   - SCTP packet drop feature (draft-stewart-sctp-pktdrprep-15.txt)
   - SCTP "sack immediately" feature (draft-ietf-tsvwg-sctp-sack-immediately)
   - several alternatives to send fast retransmissions on SCTP

6. Loopback interface added

   Loopback used to be a special case inside the IPv4/IPv6 modules, now it
   is handled completely like any other interface, with a separate Loopback

7. EtherSwitch, AccessPoint:

   Bare EtherMAC modules have been replaced with EthernetInterface, so that
   external queues can be used (useful for e.g. QoS).

8. InterfaceTable, NIC, NetworkLayer:

   Revert to earlier behavior of determining networkLayerGateIndex.
   Now the module connected to a NIC *must* have gate vectors called ifIn and ifOut.
   If it doesn't, the code decides that the NIC is *not* directly connected to
   a network layer, and leaves networkLayerGateIndex unfilled.

Other, smaller changes:

  - MANET protocols have been synchronized with the INETMANET project
  - NodeBase: added optional battery (off by default)
  - UDP: implemented ReuseAddress option (it's like SO_REUSEADDR socket
    option in Linux). If ReuseAddress is set to true on two sockets,
    then they can bind to the same local address/port.
  - PingApp and other apps: for the stopTime parameter, 'none' is now represented
    by -1, not 0. As this is the default setting, likely very few simulations
    (ini files) are affected.
  - IPv4NetworkConfigurator: added @groups to <interface> (ie. multicast groups
    can now be also specified in the <interface> element, not only in a separate
    <multicast-group> element)
  - in many simulation examples, .irt files were replaced by IPv4NetworkConfigurator XML.
  - EtherMACFullDuplex: wait IFG *after* frames, not before.
  - Ieee80211Mac: added signals declarations and statistics in the NED file
  - EthernetInterface: the encap submodule was made replaceable ("like IEtherEncap")
  - NED: Added InterfaceTable unconditionally to bridge devices, as it is currently
    required by IPv4NetworkConfigurator. Also added NotificationBoard required by
  - IPv4NetworkConfigurator: Changed to support mixed wired and wireless LANs
    for autoconfiguration.
  - Fixed IPv4NetworkConfigurator bug sometimes not being able to assign addresses.
    Changed to assign most constrained addresses first.
  - RTPHost was moved from src/transport to src/nodes/, and changed to be based
    on StandardHost
  - TurtleMobility: Fixed getting the position from a mobility signal listener
    during initialization. The script was resumed before initialize() finished,
    resulting in incorrect positioning.
  - StaticGridMobility: Added new parameters to specify the number of rows/columns
    and the horizontal/verical separation between the nodes. Note that the way
    the node positions are calculated has changed. You may need to update your
    INI files (see the NED file for more info.)
  - Many smaller fixes and improvements

INET-2.1.0 (Jan 31, 2013)


  - Added a new module to model an "internet cloud". The component can
    be configured to model packet delay, datarate and drop probability
    between each input-output interface pair. The parameter matrix
    is provided as an XML configuration file. See the README file
    in src/nodes/internetcloud for further details.
  - New SimpleVoIPReceiver/Sender applications that gather MOS (Mean
    Opinion Score) for measuring voice quality.
  - Added HNA support to the Batman protocol (MANET)


  - PingApp: Shows the configured destination address at the end of the
  - TCPBasicClientApp: bugfix #611: simulation generated an ASSERT if
    numRequestsPerSession parameter value larger than 1.
  - TcpApp: socket state is now shown on the GUI (in Echo, Sink and Session apps.)
  - VoipTool: was renamed to VoIPStream (The actual module names are

  - Transmission channel's 'disabled' parameter is now correctly handled in

  - Better parameter processing in MAC: error is thrown if an undefined value
    is specified for the opmode or autoBitrate parameters.
  - Added the Ieee80211Descriptor class to assign modulation speed
    and type for the different opModes.
  - Bugfix: Default bitrate for opMode 'p' was incorrectly set.

  - Minor optimizations
  - Bugfix: The text in specification "sets the ConnectRetryTimer to zero" means:
    restart this timer. The _connectRetryTime member now stores the timeout value.

  - updated documentation
  - replaced Uint128 with ManetNetworkAddress
  - removed:
      - unused ManetTimer and BatmanTimer class
      - unused static variables
      - isIpLocalAddress(), uses isLocalAddress()
      - convertAddressToString()
      - getXPos(), getYPos() functions, you should use getPosition()
  - redesigned coordinate and speed storage and access.
    replaced double x,y with a Coord. getDirection() now returns the
    speed vector (as a Coord)
  - getters returns UNSPECIFIED_ADDRESS if addrType==UNDEFINED
  - merged sendToIp() code into a common base function sendToIpOnIface()

  - AODV's hand-written descriptors were replaced with generated ones
    [with A.Varga]
  - aodv_msg_struct.h: added getter methods expected by the generated
    descriptors removed hand-written

  - Updated and expanded documentation
  - Updated the code to match the latest available "batmand" version.
  - Numerous optimizations
  - Fixed several memory leaks
  - Fixed routing table corruption and possible crash when multiple
    radios were used in a single host
  - Fixed decapsulation of incoming packets. Now it checks for the
    type of decapsulated packet.
  - Fix for a problem when aggregated batman packets were
    dropped erronously.
  - Added HNA support. Nodes can advertise external networks,
    so traffic towards those networks can be routed correctly.
    Use the announcedNetworks parameter to specify multiple connected
    external networks.
  - Added SourceModifier script to help the conversion from the original
    batmand code.
    - fixes spaces, tabs and empty lines
    - replaces some c-style structs to c++-style classes
    - replaces some batmand specified list manipulators with c++ code
    - replaces malloc/free with new/delete
    - removes prof_start()/prof_stop() calls

  - Added a new simulation with wired and wireless hosts exchanging UDP
    data via an AccessPoint. It shows how to use the IPv4NetworkConfigurator
    to mix wired and wireless networks.
  - Fixes for BGP examples.
  - New example to demonstrate HNA support in Batman.
  - Hostautoconf examample moved to the adhoc folder.

Other changes:
  - Uint128 class was removed. Use ManetNetworkAddress class instead.
  - Visual changes in StandardHost/NodeBase: utility module icons are
    now smaller and wlan[]/PingApp[] modules are displayed in a row.
  - NodeBase: it is possible to use mobility module even if numRadios = 0
  - Added check for detecting too small netmask parameter value in
  - PacketDump: TCP header option fix (dumped only in verbose mode.)
  - Bugfix #620. The module pointer returned by a ModuleAccess class is
    now cached only if get() was used. For get(module) no caching is done.
  - MACAddress: made the constructor explicit so we will not see
    unexpected implicit conversions in future
  - IPv6Address: removed Uint128 related functions and added an
    additional constructMask() method
  - headerserializers: compile fix for Visual C++ 10.0 and later
  - Pcap now records on ALL interfaces by default (including external IFs).
    Added Enter_Method for better error reporting if a packet cannot be
    serialized. Also added an icon for PcapRecorder.
  - Several TCP related fixes.

INET-2.0.0 (Aug 7, 2012)

If you are upgrading from an earlier INET version (i.e. INET 20111118),
expect to have to revise your existing omnetpp.ini files and possibly
NED/C++ files as well.

Changes since 1.99.5:

The DHCP protocol received several fixes. It is now possible to use DHCP
with both wired and wireless interfaces.

MANET routing protocols updated from INETMANET-2.0 @ 9a3dc7a
OLSR protocol received several patches allowing it to work with multiple
radios. It can work now on both wired and wireless interfaces.

  - bugfix: The latest version of INET (1.99.5) contained a bug where
    speed values for 11MBps and 12MBps were swapped.
  - A new "bitrate" parameter was added to the Ieee80211Nic module.
    The Radio and MAC module uses this bitrate to set thir own bitrate
    value. Its default value is 11Mbps for 802.11b, 27Mbps for 802.11p
    and 54Mbps for 802.11g and 802.11a. (i.e. the default bitrate depends
    on the opMode parameter) This can avoid potential configuration
    inconsitencies. UPDATE all your INI files accordingly.

The Ethernet module now throws an error message if two ethernet ports are
connected using an IdealChannel. Previously it just silently ignored the
connection that was definitely against the "least surprise" principle.

A new "Delayer" module has been added and DropsGenerator and DuplicatesGenerator
has been renamed to OrdinalBasedDropper and OrdinalBasedDuplicator respectively.
These modules implement the IHook module interface and can be installed inside
hosts to induce different packet errors. IHook modules can be inserted
between the network and link layer protocols.

The Ext-interface, TraCI, Mobility and Ping modules received some minor fixes.
See ChangeLogs in individual source folders for more information.

INET-1.99.5 (June 22, 2012)

This is the final testing version of the 1.99.x series leading to the 2.0
release. Requires OMNeT++ 4.2 (version 4.2.2 suggested).

Several OSPF fixes and changes in configuration (see the ChangeLog file
in the OSPF folder for details):
  - improved error detection in xml config files
  - replaced the ospfConfigFile string-type ned parameter with ospfConfig parameter (xml type)
  - uses IPvXAddressResolver for reading IP address and IP netmask values from xml
  - uses @name instead @id to identify the routers in the xml config
  - most attributes in xml config became optional, and default values
      come from ned the parameters of OSPFRouting (with same name)
  - modified xml schema: converted most subnodes to attributes
  - Added etc/OSPFold_to_OSPFnew.xsl for converting the old xml format to new, and
      converted all the ospf config files to the new format in the examples folder
      (after using the converter you must convert router@id to router@name by hand).
  - added @toward attribute to XML for easier interface specification
      old: interfaces were specified by their name (e.g. ifName="eth0").
      new: interfaces can be specified either by their name (e.g. ifName="eth0"),
      or by the name of a module the interface is connected to (e.g. toward="Area3.N9")
  - fixed OSPF.xsd schema

Queueing components:
  The networklayer/queue folder has moved to linklayer/queue folder as
  queues are mostly used in linklayer. This is a new framework that can be
  used to create more complex systems.
  Old queuing components has been removed:
   - DropTailQosQueue, REDQueue, WeightedFairQueue
   - IQoSClassifier (moved to linklayer/ieee80211/mac)
   - BasicDSCPClassifier
  Some of them can be substituted by compound modules composed of these newly
  added components:
   - FIFOQueue
   - REDDropper
   - ThresholdDropper
   - PriorityScheduler
   - WRRScheduler
  For example REDQueue is a combination of a REDDropper and a FIFOQueue,
  and DropTailQosQueue is a combination of some classifier, DropTailQueues,
  and a PriorityScheduler. Read the INET Manual (in doc folder) for more
  information about the usage of these modules.

Brand new Differentiated Services component (using the Queueing framework)
that is implementing the following standards:
  - RFC 2474: Definition of the Differentiated Services Field (DS Field) in
    the IPv4 and IPv6 Headers
  - RFC 2475: An Architecture for Differentiated Services
  - RFC 2597: Assured Forwarding PHB Group
  - RFC 2697: A Single Rate Three Color Marker
  - RFC 2698: A Two Rate Three Color Marker
  - RFC 3246: An Expedited Forwarding PHB (Per-Hop Behavior)
  - RFC 3290: An Informal Management Model for Diffserv Routers

New send method on UDPSocket now allows to specify on which interface
the packets should be sent out.

Added DHCP protocol implementation by Juan Carlos Maureira
taken over from INETMANET-2.0 @ 7fb431b. It can be deployed just
like any other UDP apps.

MANET routing protocols updated from INETMANET-2.0 @ 7fb431b
The whole manetrouting directory was taken over.

Mobility: Added two new mobility models:
  - TraCI + TraCIScenarioManager to connect with an external server
  - LinearNodeDistribution - static hosts in a single line in
    ANY direction

IPv4Route: removed the "type" attribute from the routing entries

VoIPTool: Now compiles with the latest version of ffmpeg libs

IGMPv2: external routers attached to the IGMP module are now
responsible for implementing the IGMP router logic (emitting queries
and processing group membership reports). In this case the IGMP
module passes all incoming IGMP messages to the external router.

Updated 802.11 model from INETMANET-2.0 @ 7fb431b (minor bugfixes)
All files are synced. The following features were omitted:
MULTIQUEUES, HWMP and MESH networking related code.
The default wireless NIC is now using the latest 802.11 code from
INETMANET. The Ieee80211NewNic was renamed to Ieee80211Nic. With
the new NIC it is now possible set the operating mode (a,b,g,p)
The original Ieee80211 implementation was removed to avoid confusion.

The ancient 802.11 implementation from the mobility framework was removed
(i.e. the mf80211 directory).

Added HostAutoConfigurator module (should be added inside a host)
This configurator is deprecated and should be used ONLY if the hosts are
dynamically created/deleted during the simulation. Otherwise please use the
new IPv4NetworkConfigurator.

IPv4NetworkConfigurator: Examples have been updated to use this configurator.
XML configuration format changes:
  - added @among attribute for interface and multicast-group entries:
    "among='X Y Z'" means "hosts='X Y Z' towards='X Y Z'"
  - added @metric attribute for interface entry in XML
  - added @id attribute for wireless entry
  - several smaller bugfixes and documentation changes (see ChangeLog
    in the directory)

IPv4 fix: subnet directed broadcast (e.g. works now:
When the datagram reaches the router of the subnet, it should
be forwarded as a link layer broadcast.

Changes in link layer
  - added INic moduleinterface, all other network interfaces should
    implement this
  - renamed the netwIn, netwOut gates to upperLayerIn, upperLayerOut

Small fixes in MACAddress, PPP, IPv4NetworkConfigurator, VoIPTool,
Mobility, BatteryModule

INET-1.99.4 (March 20, 2012)

This version contains mainly bugfixes, plus some features that did not make
into the previous release. Requires OMNeT++ 4.2 (version 4.2.1 suggested).

- Added IPv4NetworkConfigurator, a new network configurator for IPv4

  This is intended to replace both routing files (.irt/.mrt) and
  specialized network configurators like FlatNetworkConfigurator,
  and do much more.

  Covers address assignment (manual, automatic), adding manual routes,
  setting up static routing, optimizing the routing tables, etc.
  Unlike FlatNetworkConfigurator, it will generate per-interface
  addresses. Wireless networks are also supported.

- Added an IGMPv2 implementation, based on code contributed by Jesse Jones

Changes in IPv4 multicast routing:
- We now use reverse path forwarding (routing entry contains
  source address/mask, multicast group, parent (incoming) interface
  and the set of child (outgoing) interfaces).
- The new routing table enables to specify a separate multicast
  routing tree per source network and multicast group. (Old
  implementation used a common tree for each source.) The multicast
  routing tree is represented by IPv4MulticastRoute entries.
- IRoutingTable has been extended with methods manipulating the
  multicast routing entries. Notifications are generated, when
  the multicast routing table changes.
- IPv4 multicast routing algorithm uses the multicast routes
  for forwarding decisions.
- When HL does not specify the multicast interface for outgoing
  datagrams, then it is selected according to the routing table
  or the source address of the datagram.

Change from previous behavior:
- packets sent to a multicast address from higher layer: it used
  to go out on each interface that had a matching route in the
  routing table (unless mcast interface was specified by HL).
  Now it only goes out on the first match route's interface;
  if there's no match it goes out on the 1st multicast interface
  (unless mcast interface was specified by HL). If you want to
  send on multiple interfaces, you have to send multiple packets
  from the higher layer.

- multicast forwarding: no longer takes into account the routes
  in the unticast routing table that have mcast destinations.
  Only the (new format) multicast table is used. This new
  multicast routing table can only be configured with
  IPv4NetworkConfigurator, routing files don't support it.
- mobility: fixed infinite loop when nextChange is set to current
  simulation time

- base: Added createNode(), createLink() factory methods to Topology class.

- Enhancements in IPvXAddressResolver. The new resolver allows you
  to specify an interface based on which module the interface is
  connected to.

- Added a RoutingTableRecorder module that records all the changes
  in the routing table to a file.

- OSPF & BGP fix:
    - gateway is now correcty set on routing table entries.
    - eliminated redundant nextHop field from routing table entries

- Fixed routing table change notifications.

- Added printMulticastRoutingTable() to IRoutingTable

- Added IPingApp interface and support for more than one PingApp
  in a host.

- Changes in the UDP socket API:

  The first call on an UDP socket do not need to be bind() or connect()
  anymore. It is possible to create a socket and sending data immediately
  by calling sendTo(). It is also possible to set socket options before
  calling connect() or bind(). connect() can be called several times.
  However the bind() call fails if the socket is already bound.

- LDP: The LDP module now creates a separate UDP socket for each
  multicast interface of the node, sets the multicast interface
  on them, and sends a copy of LDP-Hellos via each socket.

- ICMP messages are correctly handled now in all TCP implementations
  (in LwIP and NSC, too)

See ChangeLogs in individual source folders for more information.

INET-1.99.3 (Feb 22, 2012)

With this release, we have started a review of all basic protocol modules in
the INET Framework, fixing bugs, refactoring for clarity and maintainability,
and implementing commonly needed missing features. A testing framework is also
falling into place. We have added ChangeLog files in each source directory
to make it easier to follow things for end users and contributors alike, and
we'll also be requiring ChangeLog entries from contributors who submit code
patches. ChangeLogs also include a brief history of the corresponding
components from the start; if you have fixes or amendments, please contact us.
This version of INET requires OMNeT++ 4.2 (version 4.2.1 suggested).

- Ethernet model improvements: EtherMAC refactored for better readability;
  added reconnect support, better PAUSE support, support for 40 Gigabit and
  100 Gigabit Ethernet; several bugfixes; regression and validation tests

- added predefined Ethernet link types: Eth10M, Eth100M, Eth1G, Eth10G,
  Eth40G, Eth100G

- IPv4 model improvements: better fragmentation and multicast support; IPv4
  module refactored for readability and maintainability; several bugfixes

- IPv4 routing table improvements: notification for routing entry changes
  (routing entry objects no longer need to be immutable); lookup performance
  optimization (routes are kept in decreasing prefix length order to speed up
  longest prefix match); cleanup and bugfixes

- IPv6 improvements: implemented Default Router Selection as specified in
  RFC 4861 6.3.6 (round-robin); tunneling is now available without xMIPv6;
  implemented datagram fragmentation/reassembly; IPv6 now works over PPP;
  several other bug fixes

- UDP: better multicast support and DSCP support (apps can specify ToS [IPv4] /
  Traffic Class [IPv6] byte); bug fixes

- PPPInterface, EthernetInterface: use queueType="" instead of queueType=
  "NoQueue" to turn off external queue module and use internal queue.

- Ieee80211, MANET routing: updated to latest INETMANET release:
  radio: added support for noise generators and configurable error models;
  802.11: Airtime Link Metric support; duplicate frame detection / filtering;
  support for prioritizing of multicast frames

- added WeightedFairQueue from INETMANET

- removed Ieee802.11 Mesh feature. It depended on too many upper layer
  protocols and features.

- statistics (@statistic properties) cleaned up in all modules: standardized
  on lower case statistics titles; record packet counts in a less confusing
  way (NOT as rcvdPkBytes:count); cleaned up recorder lists

- miscellaneous: timer usage optimized in DYMO_FAU; revised PingApp, e.g.
  printPing is now turned off by default; numerous bug fixes and improvements

- added a test suite (tests/); it contains fingerprint tests (for regression
  testing); smoke tests (crude regression tests); statistical tests (for
  validation); unit tests (of classes/modules); and other tests. We make most
  use of fingerprint tests, so they are probably in the best state.

See ChangeLogs in individual source folders for more information.

INET-1.99.2 (Nov 18, 2011)

Requires OMNeT++ 4.2 (final).

- Integrated Kristjan Jonsson's HttpTools project,

- The mobility models have been revised and brought in sync with their
  MiXiM versions; added 3D coordinate system from MiXim; added MoBAN mobility
  model from MiXiM.

- UDP: multicast, broadcast and ttl support; bugfixes; heavy API changes.
  It is now possible to receive broadcasts and multicasts. Implemented support
  for the following socket options: time-to-live (unicast and multicast),
  broadcast, multicast output interface, join multicast group, leave multicast
  group. Connect without bind is now supported (used to be an error).
  The cost of the above is changes in the way you talk to the UDP module:
  UDPControlInfo has been split to several classes (UDPBindCommand, UDPConnect-
  Command, UDPSendCommand, etc.), and the UDPSocket class has been redesigned.
  Check transport/udp/ChangeLog for detailed information.

- Apps: some standardization of parameter names, so that various modules don't
  call the same thing differently. Introduced the following names:
  'startTime', 'stopTime', 'sendInterval', 'localAddress', 'localPort'.
  E.g. the following parameters became 'sendInterval': 'messageFreq',
  'waitTime', 'packetInterval', 'interval', and 'waitInterval'.

- Added a 'stopTime' parameter to several apps: TelnetApp, UDPBasicApp,
  TCPBasicClientApp, IPvXTrafGen, EtherAppCli

- UDPBasicBurst revised

- Removed Blackboard (it was obsolete and out of use)

- Numerous bugfixes.

INET-1.99.1 (May 27, 2011)

This is a beta of a major feature release, with new models and a lot of
incompatible changes. It requires at least OMNeT++ 4.2b2.
If you are upgrading from an earlier INET version, expect to have
to revise your existing simulations.

- INET can now be compiled with various parts turned off. This is based on
  the new OMNeT++ Project Features facility, avaiable from 4.2b2, see
  slides 9-13. INET project features are defined in the .oppfeatures file;
  features can be turned on/off in Project -> Project Features... in the IDE.
  Not all features will compile on Windows: the ones that need to be turned off
  on Windows are TCP_NSC, TCP_lwIP, VoIPTool, MANET Routing, Mesh Networking.

- Integrated the following external packages: VoIPTool, xMIPv6.

- Several components were taken over from INETMANET: MANET routing, combined
  802.11a/b/g/e model, 802.11 mesh networking, obstacle model, several
  mobility models, battery model, globalARP feature. Multiple radio support
  has also been added to INET, loosely based on the INETMANET solution.

- NED-level cleanup of several compound modules: hosts, routers, NICs, APs,
  switches, etc. There were a lot of very similar modules that differred in the
  presence or type of one or more submodules, resulting in code duplication
  and confusion in general. Many variants have been eliminated, and the
  differences have been mapped to parameters, parametric or conditional

- ChannelController now deals only with radios and not hosts. This makes it
  possible to have hosts with several radio interfaces. The radios are
  registered/unregistered in the ChannelAccess module (previously host
  registration was done by the mobility modules). ChannelControl/ChannelAccess
  are now completely independent of the mobility modules. This means that if
  there is no mobility module present in a host, the host's displaystring
  will be used to set the static positions of the radios.

- Ethernet switch was moved under the linklayer/ethernet/switch directory.
  EtherHostQ is now called EtherHost. To have no queue in the Ethernet host,
  specify queueType="NoQueue" (which in fact inserts a dummy queue).
  In EtherSwitch, EtherHost and inside the EthernetInterface the
  csmacdSupport parameter can be used to switch between the full (EtherMAC)
  and the simplified (EtherMACFullDuplex) implementation.

- EthernetInterfaceFullDuplex removed. By default EthernetInterface is using
  EtherMACFullDuplex, a simplified MAC that does not support CSMA/CD and works
  only with point-to-point links. Use the EthernetInterface with
  csmacdSupport=true to turn on CSMA/CD support (EtherMAC).

- IPv4-related modules and classes whose names started with "IP" were renamed
  to start with "IPv4", to be more explicit and more future-proof. IP->IPv4,
  IPAddress->IPv4Address, IPControlInfo->IPv4ControlInfo, IPRoute->IPv4Route,
  IPDatagram->IPv4Datagram, etc.

- Renamed routingTableFile to routingTable in RoutingTable6. Added default
  parameter value. You no longer need to specify **.routingTableFile =
  xmldoc("empty.xml") and have an empty.xml file in the model directory.
  OMNeT++ 4.2 supports the xml("<inlinexml/>") syntax; we now use that for
  the default value.

- New PcapRecorder module (in StandardHost) for recording traffic to a pcap file.
  It is intended as a replacement for the old TCPDump module.

- StandardHost and Router now have a common base (containing Link~ and
  NetworkLayer) Wireless~ and AdhocHost is derived from StandardHost. All of
  them (including Router) support multiple wireless, Ethernet, PPP and
  external interfaces (i.e. multiple wireless radios are supported using
  different channels)

- Several modules - especially inside StandardHost - are now conditional
  (using NED's new "conditional submodule" feature), and will be instantiated
  only if needed. For example, TCP is only instantiated if there are TCP
  applications configured for the host.

- Router and StandardHost have optional mobility support. The mobility module
  is created only if there are wireless cards present in the node (numRadios>0).
  Of course WirelessHost and AdhocHost have mobility by default. You can configure
  the mobility type using the "mobilityType" parameter. BasicMobility have
  been renamed to NullMobility (resulting stationary nodes). There is a dummy
  mobility type called NoMobility which does not have any C++ implementation.
  Nodes that do not need mobility support (i.e. no radios) should set their type
  to NoMobility.

- FailedRouter has been removed (was a trivial node). BurstHost moved to the
  example directory (it was not generic and was used only by a single example).
  MobileHost has been removed; use AdhocHost instead as a drop-in replacement.

- Network Interface Cards (Ieee80211Nic, EthernetInterface and PPPInterface)
  now support input and output hook modules that implement the IHook interface.
  Hooks are useful for simulating packet drops, duplication or measuring thruput.
  The number of hook modules can be controlled with the numInputHooks /
  numOutputHooks parameters, and the hook's type via typename.
  An example: that installs two hooks in the input path of PPP:
    **.ppp[*].numInputHooks = 2
    **.ppp[*].inputHook[0].typename = "DropsGenerator"
    **.ppp[*].inputHook[1].typename = "ThruputMeter"

- Network interfaces can specify a queueType paramater. Possible values:
  DropTailQueue, DropTailQoSQueue, REDQueue, NoQueue.
  To disable queueing, use NoQueue: **.ppp[*].queueType = "NoQueue"

- PPPInterfaceNoQueue and EthernetInterfaceNoQueue have been removed; use the
  queueType="NoQueue" parameter in the interfaces.

- TCP, UDP and SCTP implementations are now pluggable; you can select the
  implementation with the tcpType, udpType and sctpType parameters in the host.
  Modules must implement ITCP, IUDP and ISCTP interface and the specify
  the implementing NED type in the parameter. At the moment SCTP and UDP
  have only one implementation. TCP has TCP (the default INET implementation),
  TCP_NSC (Network Simulation Cradle) and TCP_lwIP (the lightweight IP stack).

- AccessPoint has been generalized. Now it supports both (multiple) wireless
  and ethernet ports. Relaying between ethernet and wireless ports is now
  supported. A relay unit is created only if more than one ports are present
  in the AccessPoint, i.e. having a single radio and no ethernet connections
  will fall back to a single wireless NIC without a relay unit. Having no radio
  and several ethernet ports connected will practically result in an ethernet

- Wireless NICs now should implement IWirelessNIC. Now we have only a single
  Ieee80211Nic implementation instead of the 5 variants we have previously.
  Management type (Adhoc, AccessPoint, Station, AccessPointSimplified and
  StationSimplified) can be configured using the mgmtType parameter of the NIC
  (instead of having separate NIC types for each.)

- Multiple radios on independent channels are now supported by all nodes. See
  the wireless/multiradio example.

- The radio infrastucture have been refactored. All radios should now implement
  the IRadio interface. They are now pluggable. RadioModel can be configured
  also via a module parameter. The attenuationModel parameter was moved from
  the radio to ChannelController (it is now global) and renamed to propagationModel.
  Several new propagation model have been added (see NED file docs).

- Removed the TCPSpoofingHost node. Use instead StandardHost with the
  tcpType="TCPSpoof" parameter.

- NAMTrace and NAMTraceWriter modules have been moved to the obsolete directory.
  Turn on event logging instead and use the eventlog animator in the IDE. Event
  logging can be turned on with --record-eventlog=true from the command line or
  using the toolbar button in Tkenv. Once the .elog file is generated, right
  click on it in the IDE and select Open with / Animation Player.

- ChannelInstaller module has been removed. Implemented a ThruputMeteringChannel that
  extends DatarateChannel. It adds thruputDisplayFormat that allows showing different
  statistics along the source gate of the channel. Specifying "" as display format
  results the same behavior as DatarateChannel (with no performance penalty).
  If you want to gather statistics, you do not need this channel. The DatarateChannel
  already emits signals "channelBusy", "messageSent" and "messageDiscarded"
  that can be used to calculate different statistics. Use "opp_run -h neddecls"
  to see what statistics are provided by default. e.g in INI file use
  **.channel.throughput.result-recording-modes=+last to store all channel's
  thoughput values as scalars.

INET-1.99.0 (March 3, 2011)

This is a beta of a major feature release, with new models and also incompatible
changes. If you are upgrading from an earlier INET version, expect to have
to revise your existing omnetpp.ini files and possibly NED/C++ files as well.

The most significant changes:

- replaced cOutVector and recordScalar() with signal-based statistics
  recording in most places (see @statistic properties in NED files)

- support for more than one type of tcpApp and udpApp in StandardHost
  (elimination of tcpAppType/udpAppType parameters)

- Interfaces renamed to start with letter "I". BasicMobility -> IMobility,
  TCPApp->ITCPApp, UDPApp->IUDPApp, SCTPApp->ISCTPApp, MacRelayUnit->IMacRelayUnit,
  Radio->IRadio, Ieee80211Mgmt->IIeee80211Mgmt, OutputQueue->IOutputQueue,

- added new AdhocHost for basic node types used in adhoc networks. Supports
  mobility and multiple wireless radios. It obsoletes the MFMobileHost
  (use AdhocHost with **.wlan.type-name=Nic80211) and MobileHost (use AdhocHost
  with default parameters)

- added new AccessPoint module with configurable wireless, ethernet and relay
  unit and mobility module types. Obsoletes: WirelessAP and WirelessAPWithEth
  (use AccessPoint), WirelessAPSimplified and WirelessAPWithEthSimplified
  (use AccessPoint with **.wlan.type-name=Ieee80211NicAPSimplified),
  WirelessHost (use StandardHost with numRadios=1) and WirelessHostSimplified
  (use StandardHost with numRadios=1 and **.wlan.type-name=Ieee80211NicSTASimplified)

- in StandardHost and Router it is now possible to configure what wireless, ethernet, ppp
  or external interfaces are used. Wired interfaces must implement IWiredNic, and wireless
  modules must implement IWirelessNic. Mobility type and number of wireless cards (default=0)
  can be also configured via **.wlan.type-name and **.mobility.type-name. The use of
  interfaces obsoletes several older modules which differed only in interface types
  (like WirelessHost or ExtRouter)

- enhanced Router to support external interfaces, ppp, wireless, ethernet etc. This module
  is similar to StandardHost except it does not contain the transport layer and application layer
  protocols (plus IPForwarding is enabled by default). Obsoletes the ExtRouter module (use Router)

- NetworkLayer and NetworkLayer6: added dummy modules that implement the IHook interface
  at the bottom of network layer (above link layer). This allows one to insert
  thruput metering, packet drop and duplication modules etc. without modifying the module.
  New modules implementing IHook: ThruputMeter, DropsGenerator, DuplicatesGenerator and Nop.
  Use **.networkLayer.outputHook.type-name = "ThruputMeter" to configure them (use inputHook
  for incoming traffic)

- added global ARP optimization. If you are not interested in modeling the traffic of ARP protocol,
  it is now possible to use a much faster implementation by specifying (by Alfonso Ariza Quintana):

- multiple radios (on multiple channels) are supported by StandardHost, AdhocHost
  and Router if ChannelControllerExtended is used in the network.

- point-to-point Ethernet links can now use normal DatarateChannels
  (EtherMAC's txrate parameter was removed)

- added a new TCP model that directly wraps the lwIP stack (without
  NetworkSimulationCradle (NSC) overhead)

- TCP transfer mode (bytecount / cPacket / bytestream) is now
  controlled by the app via a control info field (the sendQueueClass/
  receiveQueueClass TCP module parameters were removed); this works across
  all three TCP models (native OMNeT++, NSC, lwIP)

- experimental support for application-imposed TCP flow control (i.e.
  implementation of "socket read" calls; this is not yet in the
  "integration" branch)

- brand new BGPv4 model, contributed by Helene Lageber

- OSPF model: mass renaming and code formatting to make code conform
  to the rest of INET in coding style

- fix: Ieee80211DataFrame was missing the LLC SNAP header, so all
  802.11 data frames were simulated with 8 bytes less length than
  they should have (this will slightly modify simulation results)

- RTP model refactoring to make it use msg files and a control info
  based interface toward apps

- some improvements INETMANET implemented have been taken over into
  INET (also to decrease INETMANET maintenance cost)

- started taking over xMIPv6's modification to the base INET, so
  xMIPv6 won't need to patch INET

- added basic "New INET simulation" wizards which appear under
  File|New in the IDE

- started working on an INET User Manual (see

- added an initial test suite with tests for Ethernet, 802.11 and TCP
  (uses OMNeT++'s opp_test utility and the "omnetpp" R plugin for
  scripted checking of simulation results; not yet in "integration")

- many smaller bug fixes and refactoring, mostly invisible for users

In more details:

* Reorganized StandardHost:

Several changes were introduced to make the basic building blocks of
simulation (StandardHost, AdhocHost, Router etc.) more configurable,
without the need to copy and modify the modules or derive a new module
type. Applications, tcp type, nic, mobility, routing protocols can be
configured using parameters or the **.type-name=typename in the .ini file.

* Ethernet point-to-point links:

In the old code, datarate of Ethernet channels were to be set to zero, and
the real datarate given in the txrate parameter of EtherMAC. This was to
work around a limitation in OMNeT++ 3.x's channel support. In the new code,
the txrate parameter is gone, and the datarate should be set on the
channel. This is consistent with e.g. PPP. This requires non-backward
compatible changes to models.

* Support for several different TCP/UDP apps in StandardHost

In the old code, tcpApp[] is declared as
  tcpApp[numTcpApps]: <tcpAppType> like TCPApp;
which has the side effect that when using StandardHost, all apps have to be
the same type (the one in the tcpAppType parameter). OMNeT++ 4.x supports
setting the types one-by-one, using the following syntax:
  tcpApp[numTcpApps]: <> like TCPApp;
and in the ini file, you have to write
  **.tcpApp[0].type-name = "inet.applications.tcpapp.TCPBasicClientApp"
  **.tcpApp[1].type-name = "inet.applications.tcpapp.TCPEchoApp"
  **.tcpApp[*].type-name = "inet.applications.tcpapp.TCPSinkApp"
The existing tcpAppType/udpAppType/sctpAppType parameters would be removed.
However, this also means that existing ini files have to be changed.
If they are not updated, the simulation will not work.

* Multiple TCP implementations, and related parameterization changes

INET now supports Network Simulation Cradle (NSC; wraps several FreeBSD,
Linux and lwIP stacks), and we have an lwIP-based TCP module as well
(without the NSC limitations and overhead); the NED types are TCP, TCP_NSC,
TCP_lwip. Any of them can be selected in StandardHost, via the tcpType
parameter (the tcp module is now declared as "tcp: <tcpType> like ITCP").
tcpType defaults to the native OMNeT++ TCP module.

The sendQueueClass/rcvQueueClass parameters are gone. They were used to
select what to transmit inside TCP segments: C++ objects (cPacket) or byte
counts only. Now, this can (must) be specified per-connection by the app
layer, because the app knows best what it requires. Also, instead of two
class names now there is a single enum value; it should be put into the
dataTransferMode field of TCPOpenCommand. Potential values are:

   TCP_TRANSFER_UNDEFINED = 0; // Invalid value
   TCP_TRANSFER_BYTECOUNT = 1; // Transmit byte counts only
   TCP_TRANSFER_OBJECT = 2; // Transmit the application packet C++ objects
   TCP_TRANSFER_BYTESTREAM = 3; // Transmit actual bytes

Ideally, all 3 TCP implementations should understand all 3 transfer modes;
currently OBJECT support is missing from TCP_NSC.


- additional statistics in the SCTP module (Alberto Cortes)

- fix for SCTP Path.Max.Retrans threshold problem (Alberto Cortes)

- minor changes in #includes to ensure compatibility with upcoming OMNeT++ 4.2


- TCP improvement (Thomas Reschka, Zoltan Bojthe).
  * implemented RFC 1323 (TCP Extensions for High Performance):
      - Window Scale option
      - Timestamps option (Round-Trip Time Measurement - RTTM)
      - Protect Against Wrapped Sequence Numbers (PAWS)
      - added a PAWS modification according to the latest proposal
        of the list (Braden 1993/04/26)
  * implemented missing part of RFC 2581: Re-starting Idle Connections
  * various fixes
  * see details in src/transport/tcp/ChangeLog.

- added examples for new TCP features (Thomas Reschka):
  * examples/inet/tcptimestamps
  * examples/inet/tcpwindowscale

- added NetAnimTrace module (Andras Varga). This module can be used to record
  input for the NetAnim program (

- Ieee80211Radio: added a shadowing component for the path loss reception model
  (Nikos Simantirakis). This is a random variable has a normal distribution
  in dB and results to -normal distribution in mW. This is a widespread and
  common model used for reproducing shadowing effects (Rappaport, T. S. (2002),
  Communications - Principles and Practice, Prentice Hall PTR).

- bugfix and small improvements in SCTP, TCPSessionApp, ThruputMeter

- cosmetic changes in many other files (comments, indentation, compiler warning
  elimination, variable renaming, etc.)


- added "label" annotations to gates and modules to support the adaptive palette
  filtering and gate matching in the connection chooser (OMNeT++ 4.1).

- updated SCTP implementation by Michael Tuexen, Irene Ruengeler and
  Thomas Dreibholz

- added support for Sam Jensen's Network Simulation Cradle,, which makes real-world TCP stacks available
  in simulations. Currently NSC supports the FreeBSD, OpenBSD, lwIP and Linux
  stacks. The TCP_NSC module (transport/tcp_nsc) is a drop-in replacement for the
  normal TCP module (transport/tcp), and can be activated with a single parameter
  setting in StandardHost. See src/transport/tcp_nsc, 3rdparty/README, and

- added TCP SACK and New Reno implementation by Thomas Reschka. The original TCP
  version is still available as TCP_old. See src/transport/tcp/ChangeLog for details.


- tagged version for OMNeT++ 4.0 final
- reworked build system to create shared library by default
- added SCTP from Michael Tuexen and Irene Ruengeler


Internal snapshot, for omnetpp-4.0b6.

- performance optimization in all queue modules: remember output gate pointer
  instead of looking up gate by name for each send()

- randomize the start time of the scanning process.
  (Randomizing the time of sending the first beacon in
  was already done earlier.)

- IP: set TTL to 1 on new datagram if the destination address is link local
  multicast, to prevent broadcasting to non-neighbouring routers.

- several bugfixes


Internal snapshot, for omnetpp-4.0b3.

- interface table and routing table are now accessed via the C++ interfaces
  IInterfaceTable and IRoutingTable. This is done to reduce interdependencies
  among modules; more specifically, to allow users implement their own
  InterfaceTables and RoutingTables and plug them into INET simulations,
  without any change to the base INET.

- PPP and EtherMAC2: performance: don't fire tx begin/end notifications if
  no one is listening; remember output gate pointer instead of looking it up
  by name for each send

- UDPEchoApp: messageLength parameter now understood in bytes not bits

- RoutingTable: implemented routing cache and other optimizations


Internal snapshot, for omnetpp-4.0b2.

- to enable and encourage extending INET via subclassing (as opposed to
  patching), nearly all member functions made virtual (except in data classes
  like IPAddress), and also, private sections in most classes were changed to

- some refactoring on TCP, UDP and IP, to allow subclassing of TCP, UDP and IP
  packets: packets are now created via factory methods that can be overridden
  if needed

- AbstractQueue (base class for IP and other modules) made more efficient: now it
  doesn't schedule a timer if (when) serviceTime is zero.

- IPAddress class made more efficient [code from Ingmar Baumgart, OverSim]

- parsim: added pack/unpack functions for IPAddress, IPv6Address, IPvXAddress

- InterfaceTable: added deleteInterface(). This also causes RoutingTable to
  drop routes that correspond to the deleted interface.

- RoutingTable: wrapped naked data members of IPRoute into getters/setters;
  enforce by returning "const" pointers that routes already added cannot be
  changed any more (one must delete and re-add it)

- InterfaceTable: created a getInterfaceById() method, NOT to be
  confused with getInterface(pos)! Ids are stable after deletions,
  unlike 0..getNumInterfaces()-1 indices, and reliable/safe unlike
  InterfaceEntry* pointers

- InterfaceTable and RoutingTable now fire proper notifications on changes:

- NotificationBoard: added hasSubscribers(int category) method, to allow for
  optimizing out firing change notifications if there's no one listening.


Internal snapshot, for omnetpp-4.0b2.

- updated for OMNeT++ 4.0b2

- extensive renaming: added "get" verb to getter methods in most classes;
  also eliminated @addGetVerb(true) from message classes

- revived the RTP model: starting from Ahmed Ayadi's patch, migrated the code
  to OMNeT++ 4.0, and started some refactoring (started introducing .msg files
  for handcoded message classes; not yet finished)


Internal snapshot, for omnetpp-4.0b1.

- directory structure reorganized

- converted to OMNeT++ 4.0

- some refactoring (parameter/gate name changes, etc)

- IP/IPv6: do not schedule a timer if processing time is zero (change made
  in base/AbstractQueue)

- FlatNetworkConfigurator: use @node() property to determine which modules are
  network nodes (removed moduleTypes, nonIPModuleTypes parameters)


- new example network: Examples/Ethernet/ARPTest (old ARPTest renamed)

- bugfixes: AbstractRadio (Dave Symonds); Ieee80211 (also reported by Dave)


- improvements on the wireless infrastructure: support for multiple channels
  and channel switching by NICs; account for finite radio wave propagation speed

- added new 802.11 model which also supports infrastructure mode; see
  NetworkInterfaces/Ieee80211. Even for ad-hoc mode, Ieee80211Mac is recommended
  over the older Mac80211 from MF.

- added Ieee80211Radio which supersedes SnrEval80211 and Decider80211.

- added EtherDuplexMAC, a simplified Ethernet implementation for full duplex
  point-to-point operation mode when CSMA/CD is not in use.

- makefiles within Examples/ have been largely unnecessary because all
  simulations just invoke bin/INET. Realizing these makefiles have been
  confusing to many people, they got removed now. The target to generate
  them is still present in makemakefiles in case someone needs it.

- several other fixes


- checked in the new MPLS, RSVP-TE and LDP models, written/rewritten by
  Vojta Janota

- new model: Network/Quagga. This is port of the Quagga routing daemon to the
  INET Framework. Currently provides RIP and OSPFv2 routing. Quagga itself is
  a fork of Zebra. (Ported to INET by Vojta Janota)

- new model: Network/OSPFv2. This is a new OSPF implementation.
  (author: Andras Babos)

- UDP rewritten: similarly to TCP, dispatching is now done inside UDP, and
  apps now identify sockets with a sockId; implemented ephemeral port reuse

- UDPSocket class added to facilitate talking to the UDP model from apps;
  analogous to TCPSocket (thanks to Michael Tuexen and Vojta Janota for

- new snapshot of the IPv6 module (by Wei Yang Ng)

- added ability to write nam traces (Util/NAMTraceWriter, World/NAMTrace);
  feature originally implemented by Vojta Janota (and refactored by Andras,
  so bugs are very likely mine)

- implemented ThruputMeteringChannel which can display #packets, pk/sec etc
  on the links; and ChannelInstaller as a temporary solution to install
  ThruputMeteringChannel instead of the built-in BasicChannel class.

- updated module class ctors/dtors for OMNeT++ 3.2; changed msg->length()/8 to
  msg->byteLength() and msg->setLength(8*bytes) to msg->setByteLength(bytes),

- TCP: Reno bugs fixed (reported by Pascal Rousseau); TCPMessageBasedSendQueue
  seqNo bug fixed (Adam Hudson); implemented reuse of ephemeral ports;
  fixed incorrect behaviour when ACK of SYN carries data (reported by Joachim
  Meichle); fixed minor issue that when the user issued CLOSE, transition to
  FIN_WAIT_1 was done immediately and not deferred until all data are sent.

- added Applications/TCPApp/TCPSpoof

- hosts have now the same queues as routers (reported by Michael Tuexen)

- ev replaced with EV in every module (speed increase in Express mode)

- NetworkLayer(6): gates towards interfaces renamed to ifOut[]/ifIn[]

- FlatNetworkConfigurator internals refactored

- added another network configurator, NetworkConfigurator

- RoutingTable: routerId selection moved from stage 1 to stage 3 (you may
  need to revise your code if it depends on routerId)

- patched for OMNeT++ 3.2:
  - added '=NULL' default value to all args of hand-code module constructors
    (2 or 3 places)
  - RSVPPacket.h: dup() return type has to be cPolymorphic with OMNeT++ 3.2;
    fixed it using '#if OMNETPP_VERSION<0x0302...#else...#endif'


- UDP dispatchByPort bug fixed; further smaller fixes

- IPv6 updated (still unfinished)

  - TCP bug
  - incorrect handling of host queues (Michael Tuexen)


- module types renamed for consistency: PPPModule -> PPP, TCPMain -> TCP,
  UDPProcessing -> UDP

- C++ methods renamed: isNull() -> isUnspecified() in IPAddress, IPv6Addres,

- created two subdirs under Transport/TCP: flavours and queues, and moved
  the appropriate cc/h files there. The structure of the TCP model should
  now be much more obvious to readers. Also added READMEs explaining things.

- TCP fixes: raise an error (~EADDRINUSE) on attempt to create more than one
  connections to listen on the same port

- implemented REDQueue

- beginnings of a "Getting started with TCP" doc

- TCP improvements: separate congestion control behaviour classes
  TCPTahoe, TCPReno and TCPNoCongestionControl provided, for teaching
  purposes (their code is very short, to the point, and extensively

- TCP: fixed bogus RTT calculation and other other bugs; also, sequence
  numbers are now recorded into omnetpp.vec, so with Plove one can create
  sequence number plots like Sally Floyd's [thanks to Ahmet Sekercioglu
  for help!]

- still TCP: fixed the bug which caused closing of a connection to be reported
  2MSL (240s) later to the user.

- Added support for drop-tail router queues, and queues with QoS support
  based on DS Code Point; RED in preparation (see Network/Queue)

- Added wireless and mobility support (based on Mobility Framework code),
  including 802.11b ad-hoc mode MAC, and several new mobility models
  (also new to MF). Supports mobility traces from BonnMotion and ANSim.

- Contract directories introduced: Transport/Contract, Network/Contract
  and NetworkInterfaces/Contract. These directories contain a minimal set
  of classes necessary for using one layer's functionality from higher layers.

- Added notification mechanism: modules can now notify each other about
  "events" such as routing table changes, interface status changes (up/down),
  interface configuration changes, wireless handovers, changes in the state
  of the wireless channel, mobile node position changes, etc. Notification
  works via the NotificationBoard which replaces the Blackboard.

- InterfaceTable introduced: it stores all interface configuration that was
  previously stored in RoutingTable. Per-interface data structure was also
  split into protocol independent (InterfaceEntry) and protocol dependent
  (IPv4InterfaceData, IPv6InterfaceData) parts.

- ScenarioManager introduced (experimental, in World/ subdirectory):
  it addresses the need for simulating scenarios like "what if this cable
  breaks at t=20s", or "what if traffic intensity grows at t=100s".
  Scenario is described in an XML file.

- Ping and VideoStream applications added (from IPv6SuiteWithINET)

- ARP got moved up from L2 to L3; this is to prepare for IPv6 support (IPv6
  doesn't need ARP, so we can no longer have it as part of the network

- prepared for IPv6: application layer, transport layer and IPv6 contract
  taken over from IPv6SuiteWithINET-20050502

- work in progress: from-scratch IPv6 implementation by Wei Yang Ng (Monash
  University) and Andras Varga

- added INET_API definitions to classes, so that one can build a DLL that can
  be loaded dynamically into INET.exe (hint: compile DLL code *without*
  /DBUILDING_INET, and link them with INET.lib! then add [General]/load-libs=
  to omnetpp.ini.)

- Network/IPv4d subdirectory finally thrown out. It was a bad idea to
  implement IP with a dozen small modules in the first place.

- added files called !WORK_IN_PROGRESS! with some explanations to
  directories which contain unfinished simulation models.

INET-20050404 released
- Updated to omnetpp-3.1.
- patches from Michael Tuexen

- updated to omnetpp-3.0

- package renamed to INET Framework

- practically a complete rewrite of IPSuite took place 03/2004 through
  10/2004. See change log at

Preparations for rewriting IPSuite, 09/2003-03/2004
2004-02-04 Andras Varga

        * got it compiled with omnetpp-3.0pre1. changes:
        - added #include <iostream>, using std::ostream at a couple of places
        - deprecated receiveOn(), receiveNewOn() no longer exists, replaced by:
                msg = receive();
                ASSERT(dfmsg->arrivedOn("fromEnqHook")); // FIXME revise this
        * removed ProcessorManager altogether

2003-09-19 Andras Varga

        * added the MPLS/LDP/RSVP-TE models created by Xuan Thang Nguyen
        ( at UTS (University of Technology, Sydney).

        * did IPsuite modifications necessary fo MPLS. Modularity is preserved:
        it is still possible to build IPSuite without the MPLS models.

2003-09-18 Andras Varga

        * merged patches for compiling with MSVC.

        * module descriptions (comments) added to/rearranged in all NED files
        for documentation generation with new opp_neddoc.

        * DIRECTORY STRUCTURE WAS REARRANGED along the lines of the OSI layers,
        and also to make it consistent with the IPv6Suite. Hopefully every file
        is now where one would expect to find it.

        * added makemake.cmd for generating's (using opp_nmakemake)
        for building with MSVC, and makemake for generating Unix makefiles

        * lots of minor fixes to make the code compile with MSVC.
        Note: for compatibility with MSVC6.0,
          1. return type of dup() should ALWAYS be cObject* (and cannot be the
             actual class name)
          2. class variables cannot be initialized (even const or
             static const ones) within the class declaration.

        * updated for recent OMNeT++ versions: added ",row" to vector module
        display strings; removed className() methods, etc.

        * FIXME: KIDSRouter was missing from the original IPSuite! KIDSNw1
        didn't compile. I temporarily substituted a copy of NextHopRouter.

2003-09-17 Andras Varga

        * taken ipsuite-20021124-src.tgz and started improving it.

IPSuite's change log, 2000-2001
Before Andras Varga took over the development in 2003, IPSuite was
created and developed at University of Karlsruhe, Germany.

2001-12-10 Ulrich Kaage <>

        * Global changes for OMNeT++ 2.2 conformance:
        copy constructor -> const argument
        virtual long length(const ) -> virtual long length(const) const
        virtual int numInitStages() -> virtual int numInitStages () const
        virtual char *className() -> virtual const char* className() const
        virtual cObject *dup() -> virtual cObject *dup() const
        cObject& operator=(cObject& o) -> cObject& operator=(const cObject& o)

2001-08-31 Ulrich Kaage <>

        * CVS-Tag da-kussaether: Work on TCP by Rolf Kussaether;
        implementation of TCP flavours Reno (fast recovery) and New Reno.

2001-03-19 Verena Kahmann <>
        * deleted all queues and behaviors except FIFO* and the basic behaviors.
        Maybe we have to apply some extra cleaning still.
2000-12-19 Ulrich Kaage <>

        * recent (standalone) TCP model is merged into the ip-suite. The
        simple test network is now located in ./Networks/TCPTester

2000-12-13 Ulrich Kaage <>

        * makeipsuite: replaced by top level Makefile

        * rundemo: front end for launching all available simulations

        * Makefile: Top level makefile to create Makefiles from
        in all subdirectories

        * removed mmake in subdirectories and replaced them by

2000-11-22 Ulrich Kaage <>

        * CREDITS: Put your name here if you have contributed to the
        OMNeT++ Internet Protocol Suite

Something went wrong with that request. Please try again.