forked from GRCDEV/inet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
WHATSNEW
1427 lines (1059 loc) · 61.2 KB
/
WHATSNEW
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
Recent changes in the INET Framework
====================================
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,
LDP_FAILED/RSVP_FAILED, etc.
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.
http://www.omnet-workshop.org/2013/uploads/slides/OMNeT-Workshop2013-SP-4.pdf
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
module.
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
InterfaceTable.
- 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)
-------------------------
NEW:
- 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)
CHANGED:
Applications:
- PingApp: Shows the configured destination address at the end of the
simulation.
- 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
VoIPStreamSender/Receiver.)
Ethernet:
- Transmission channel's 'disabled' parameter is now correctly handled in
EtherMacBase.
Ieee80211Mac:
- 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.
BGP:
- Minor optimizations
- Bugfix: The text in specification "sets the ConnectRetryTimer to zero" means:
restart this timer. The _connectRetryTime member now stores the timeout value.
Manetrouting:
- 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()
instead.
- 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:
- 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 aodv_msg_struct_descriptor.cc
Batman:
- 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
Examples:
- 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
HostAutoConfigurator
- 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.
Ieee80211:
- 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. 192.168.1.255) 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,
http://code.google.com/p/omnet-httptools/
- 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
http://www.omnet-workshop.org/2011/uploads/slides/OMNeT_WS2011_S3_P1_Varga.pdf
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
submodules.
- 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
switch.
- 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,
INetworkInterface->IWiredNic
- 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):
**.networkLayer.arp.globalARP=true
- 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 inet.omnetpp.org)
- 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"
etc.
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.
INET-20110225
-------------
- 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
INET-20100723
-------------
- 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 [email protected] 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 (http://www.nsnam.org/wiki/index.php/NetAnim)
- 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.)
INET-20100323
-------------
- 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,
http://www.wand.net.nz/~stj2/nsc/, 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
examples/inet/tcpclientserver.
- 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.
INET-20090325
-------------
- tagged version for OMNeT++ 4.0 final
- reworked build system to create shared library by default
- added SCTP from Michael Tuexen and Irene Ruengeler