What does ICI mean and how do you use them when developing OPNET models?

Categories:
Solution Number:
S20734
Last Modified:
2013-08-20
Issue

What does ICI mean and how do you use them when developing OPNET models?

Solution

ICI (Interface Control Information) Concepts and Usage.From OPNET Modeler Forum (01/08/02):First see the online documentation:Help Menu -> Online Documentation -> Modeling Concepts -> CommunicationMechanisms -> Comec.3Basically, ICIs can be used to provide additional information when generating interruptions. The idea is to associate an ICI data structure to events added by a process.The ICI structure is defined in the ICI Editor, which looks similar to defining a packet format in the Packet Format Editor. You define the fields you need--integer, double, or structure types are allowed--with a possible default value.For example, when using OPNET standard models running TCP/IP over Ethernet,each time an IP datagram must be sent by the node, the IP layer will associate an ICI (format ip_arp_req_v4) with any interrupt generated to its lower layer (that is, ARP (Address Resolution Protocol) layer in this case). The ICI passes the next-hop IP address, connection class, etc. to the ARP. ARP finds the destination MAC address for the next-hop IP address in its cache. The ARP then passes the destination MAC address to the MAC layer (using another ICI) to help the MAC layer send the corresponding Ethernet packet over the physical layer.One can see here that ICIs can be used to exchange information between protocol layers (IP -> ARP -> Ethernet).The ICI package (Online Documentation -> Simulation Kernel -> ICI package) describes the KPs (Kernel Procedures) you can use to create and manipulate ICIs.In the example above, the IP layer must:1) Create an ICI : op_ici_create(...) // ICI format: ip_arp_req.ic.m2) Fill in the necessary fields : op_ici_attr_set(...) // Here, a fieldcalled next addr3) Install the ICI : op_ici_install() // Required to associate anysubsequent interruptions with the ICI.4) Send the IP datagram to the ARP layer : op_pk_send(...) // Since the ICIhas been installed, this action adds an event in the event list with anassociated ICI.5) Use op_ici_install(OPC_NIL) // Optional, to ensure that no otherinterruption generated by IP is associated with this ICI.ARP Layer must:1) Retrieve the packet arriving from the IP layer.2) Retrieve the associated ICI : op_intprt_ici() // Checking the returnvalue against OPC_NIL is recommended.3) Get the IP destination address : op_ici_attr_get(...)4) Find a match in the ARP cache. That is, the corresponding MAC address.5) Redo the same steps to create and associate an ICI (formatip_mac_req.ic.m, dest addr field)6) Send the IP datagram to the Ethernet layer that will catch the ICI toget the MAC destination address.You can open the IP ARRIVAL (enter-execs) state of ip_arp_v4 processmodel to see the actual implementation in OPNET standard models.About memory management, the example can be used without destroying the ICIs (using op_ici_destroy(...)). Always in IP ARRIVAL (enterexecs) state, the last lines are used to determine whether the associatedICI must be destroyed. If not, the same ICI is reused and recycledfor the entire simulation.Instead of associating ICIs to events, you can also associate ICIs withpackets (using op_pk_ici_get/set(...)). In this case, the ICI islinked to the packet during its entire life. As a result, informationassociated within the ICI is available each time a packet is received by any OPNET module.Using an unsized packet field (e.g. field size = 0 bits) is another wayto convey packet-transmission information transparently;this information is not taken into account when computing transmission, propagation, and queuing delays.Regarding a previous message posted by Mari Sundkvist (subject CopyingICIs), there is no KP that can be used to copy ICIs (that is, noop_ici_copy(...)). This has been already entered as a suggestion and willbe included in a future release. In the meantime, you will have to create afunction in the FB (Function Block) that will be called to do the copying taskwhen necessary.

Environment

DES Kernel->Process Modeling/Coding

Attachments
NOTICE: Riverbed® product names have changed. Please refer to the Product List for a complete list of product names.
Can't find an answer? Create a case