OPNET: Understanding Packets, Processing, and Communication in Network Simulation, Study notes of Electrical and Electronics Engineering

An in-depth exploration of packets in the context of network simulation using opnet. Topics include packet formatting, processing, and delivery mechanisms such as packet streams, sending packets, and packet delivery. Learn about various communication links, packet ownership, and the use of interface control information (ici) and event states.

Typology: Study notes

Pre 2010

Uploaded on 08/30/2009

koofers-user-x4u-1
koofers-user-x4u-1 🇺🇸

5

(1)

10 documents

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
ECE 596-C: Network Simulation
OPNET Communication Mechanisms
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download OPNET: Understanding Packets, Processing, and Communication in Network Simulation and more Study notes Electrical and Electronics Engineering in PDF only on Docsity!

ECE 596-C: Network Simulation

OPNET Communication Mechanisms

Packets

Packets can be

Formatted Unformatted Value vectors

Specify field sizes (bits/bytes) and a base size

Memory allocation is not the same as packet size

Packet streams

Physical connections that support transfer of packets between modules

Defined between output port of a source module to input port of a destination module

Queuing at input stream

Associated with destination module’s input stream No limit on the number of packets that the stream can hold Waits until the destination module picks up the packet using op_pk_get() Queuing is FIFO

Sending a packet

op_pk_send()

Schedules a stream event at the destination Time of the event is the current time + “delay” attribute of the packet stream Destination may receive the packet using op_pk_get(); may also choose to ignore Even if an interrupt cannot be generated at the destination, packet is still queued

op_pk_delayed()

Uses event scheduling framework Generates an interrupt for an appropriate process in the destination module Supports delaying the packet by a pre-specified time Generates an interrupt at current time + specified time + delay attribute time Note: delay is set on an a per-packet basis, so can be used for non-FIFO delivery

Packet delivery

Transmitting packets from one node to another

Irrespective of physical connection

Allows packet transfer from one processor/queue module to another

Irrespective of location

Functions

op_pk_deliver(), op_pk_deliver_delayed(), op_pk_deliver_forced(), op_pk_deliver_quiet() Need to specify destination module’s object ID Object IDs are identified using ID and TOPO packages of the simulation kernel

Any number of sources can send packet to an input stream

A packet may be sent to any number of input streams

Communication links

Wired links

Point-to-point links Bus

Wireless links (aka radio links)

Point-to-point links

Simplex and duplex Must be attached to transmitter and receiver modules (four modules if duplex) Think of link as a bundle of channels (channels may be viewed as wavelengths in WDM net.)

Bus links

Shared bus (such as ethernet, USB bus, etc.)

Used with bus transmitters and bus receivers at a node “Tap” the bus for transmitter, receiver, or both

Transmission travels on both sides of the bus

Delay attribute denotes time for signal to propagate one meter Packet transmission will result in “staggered” arrival at nodes

Bus can also have multiple channels, similar to point-to-point links

Bus links

Each node receives a distinct copy of the packet

Collisions

When two packet receptions overlap, the receiver is in a collided state Collisions are at the receiver! Collisions are considered to be destructive to the packet (default behavior) Behavior of collisions can be changed through pipeline stages (Bus Transceiver Pipeline)

Interface control information (ICI)

List of user-defined data that can be associated with an event

Communication mechanisms between modules in same or different nodes ICI provides a “payload” Payload is transferred from the module that sets the interrupt to the one that receives

Event types

self: op_intrpt_schedule_self() Provides only an integer value to denote the event name remote, process, multicast: Similar to self (only integer code is provided) access: no information is provided statistic: one floating point value may be conveyed with this type of interrupt

For our application, it may be used for inter-layer communication

ICI content

ICI creation

Function call: op_ici_create()

ICI format specification

Structure attributes contain address Memory must be deallocated by user

Getting & setting attributes: op_ici_attr_get(), op_ici_attr_set()

/* Allocate a structure of type "Command" to pass within an ICI / command_ptr = (Command) op_prg_mem_alloc (sizeof (Command)); /* Setup the command structure. / command_ptr->type = COMMAND_TYPE_A; command_ptr->priority = COMMAND_PRIORITY_LOW; command_ptr->request = SET_COMPRESSED_MODE; / Install the structure in "command" attribute of a new ICI. */ ici_ptr = op_ici_create ("link_control"); op_ici_attr_set (ici_ptr, "command", command_ptr);

Communicating with event states

Event states are similar in functionality to ICIs, except that they are faster

Accessing the attributes is made easier with event states

You can create an arbitrary data structure Access it using standard C/C++ way

Communication with statistics

Ouput and input statistics

The source of the statistic “outputs” the statistics The destination of the statistic takes “input”

Any module can be the source of a statistic

Only processor or queue module may be the destination of a statistic

Statistic wire input ports are indexed by integers

Application of statistic wires

Dynamic monitoring

Dynamically monitor the state of other modules within the node Performance is better than polling strategy Improved accuracy as the process may be notified immediately (FORCED interrupt) By using triggers, you can alert a module ONLY when it is appropriate

Semaphores

To implement low-level signaling mechanisms between modules One implementation is “lock” (value is 0 or 1)

Statistics in modules other than processors or queues

Monitors only the activity; provides past and present metrics to predict future Using triggers, you can generate alarms