A Device for a Csma Network Link. More...
#include <csma-net-device.h>
Public Types | |
enum | EncapsulationMode { ILLEGAL, DIX, LLC } |
Public Member Functions | |
CsmaNetDevice () | |
virtual | ~CsmaNetDevice () |
void | SetInterframeGap (Time t) |
void | SetBackoffParams (Time slotTime, uint32_t minSlots, uint32_t maxSlots, uint32_t maxRetries, uint32_t ceiling) |
bool | Attach (Ptr< CsmaChannel > ch) |
void | SetQueue (Ptr< Queue > queue) |
Ptr< Queue > | GetQueue (void) const |
void | SetReceiveErrorModel (Ptr< ErrorModel > em) |
void | Receive (Ptr< Packet > p, Ptr< CsmaNetDevice > sender) |
bool | IsSendEnabled (void) |
void | SetSendEnable (bool enable) |
bool | IsReceiveEnabled (void) |
void | SetReceiveEnable (bool enable) |
void | SetEncapsulationMode (CsmaNetDevice::EncapsulationMode mode) |
CsmaNetDevice::EncapsulationMode | GetEncapsulationMode (void) |
virtual void | SetIfIndex (const uint32_t index) |
virtual uint32_t | GetIfIndex (void) const |
virtual Ptr< Channel > | GetChannel (void) const |
virtual bool | SetMtu (const uint16_t mtu) |
virtual uint16_t | GetMtu (void) const |
virtual void | SetAddress (Address address) |
virtual Address | GetAddress (void) const |
virtual bool | IsLinkUp (void) const |
virtual void | AddLinkChangeCallback (Callback< void > callback) |
virtual bool | IsBroadcast (void) const |
virtual Address | GetBroadcast (void) const |
virtual bool | IsMulticast (void) const |
virtual Address | GetMulticast (Ipv4Address multicastGroup) const |
Make and return a MAC multicast address using the provided multicast group. | |
virtual bool | IsPointToPoint (void) const |
virtual bool | IsBridge (void) const |
virtual bool | Send (Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber) |
virtual bool | SendFrom (Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber) |
virtual Ptr< Node > | GetNode (void) const |
virtual void | SetNode (Ptr< Node > node) |
virtual bool | NeedsArp (void) const |
virtual void | SetReceiveCallback (NetDevice::ReceiveCallback cb) |
virtual Address | GetMulticast (Ipv6Address addr) const |
Get the MAC multicast address corresponding to the IPv6 address provided. | |
virtual void | SetPromiscReceiveCallback (PromiscReceiveCallback cb) |
virtual bool | SupportsSendFrom (void) const |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
This method returns the TypeId associated to ns3::CsmaNetDevice. | |
Protected Member Functions | |
virtual void | DoDispose (void) |
void | AddHeader (Ptr< Packet > p, Mac48Address source, Mac48Address dest, uint16_t protocolNumber) |
A Device for a Csma Network Link.
The Csma net device class is analogous to layer 1 and 2 of the TCP stack. The NetDevice takes a raw packet of bytes and creates a protocol specific packet from them.
Enumeration of the types of packets supported in the class.
ILLEGAL |
Encapsulation mode not set |
DIX |
DIX II / Ethernet II packet |
LLC |
802.2 LLC/SNAP Packet |
ns3::CsmaNetDevice::CsmaNetDevice | ( | ) |
Construct a CsmaNetDevice
This is the default constructor for a CsmaNetDevice.
virtual ns3::CsmaNetDevice::~CsmaNetDevice | ( | ) | [virtual] |
Destroy a CsmaNetDevice
This is the destructor for a CsmaNetDevice.
void ns3::CsmaNetDevice::AddHeader | ( | Ptr< Packet > | p, | |
Mac48Address | source, | |||
Mac48Address | dest, | |||
uint16_t | protocolNumber | |||
) | [protected] |
Adds the necessary headers and trailers to a packet of data in order to respect the packet type
p | Packet to which header should be added | |
source | MAC source address from which packet should be sent | |
dest | MAC destination address to which packet should be sent | |
protocolNumber | In some protocols, identifies the type of payload contained in this packet. |
virtual void ns3::CsmaNetDevice::AddLinkChangeCallback | ( | Callback< void > | callback | ) | [virtual] |
callback | the callback to invoke |
Add a callback invoked whenever the link status changes to UP. This callback is typically used by the IP/ARP layer to flush the ARP cache and by IPv6 stack to flush NDISC cache whenever the link goes up.
Implements ns3::NetDevice.
bool ns3::CsmaNetDevice::Attach | ( | Ptr< CsmaChannel > | ch | ) |
Attach the device to a channel.
The function Attach is used to add a CsmaNetDevice to a CsmaChannel.
ch | a pointer to the channel to which this object is being attached. |
virtual void ns3::CsmaNetDevice::DoDispose | ( | void | ) | [protected, virtual] |
Perform any object release functionality required to break reference cycles in reference counted objects held by the device.
Reimplemented from ns3::Object.
virtual Address ns3::CsmaNetDevice::GetAddress | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual Address ns3::CsmaNetDevice::GetBroadcast | ( | void | ) | const [virtual] |
Calling this method is invalid if IsBroadcast returns not true.
Implements ns3::NetDevice.
Implements ns3::NetDevice.
CsmaNetDevice::EncapsulationMode ns3::CsmaNetDevice::GetEncapsulationMode | ( | void | ) |
Get the encapsulation mode of this device.
virtual uint32_t ns3::CsmaNetDevice::GetIfIndex | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual uint16_t ns3::CsmaNetDevice::GetMtu | ( | void | ) | const [virtual] |
This value is typically used by the IP layer to perform IP fragmentation when needed.
Implements ns3::NetDevice.
virtual Address ns3::CsmaNetDevice::GetMulticast | ( | Ipv6Address | addr | ) | const [virtual] |
Get the MAC multicast address corresponding to the IPv6 address provided.
addr | IPv6 address |
Implements ns3::NetDevice.
virtual Address ns3::CsmaNetDevice::GetMulticast | ( | Ipv4Address | multicastGroup | ) | const [virtual] |
Make and return a MAC multicast address using the provided multicast group.
RFC 1112 says that an Ipv4 host group address is mapped to an Ethernet multicast address by placing the low-order 23-bits of the IP address into the low-order 23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).
This method performs the multicast address creation function appropriate to an EUI-48-based CSMA device. This MAC address is encapsulated in an abstract Address to avoid dependencies on the exact address format.
multicastGroup | The IP address for the multicast group destination of the packet. |
Implements ns3::NetDevice.
Get the node to which this device is attached.
Implements ns3::NetDevice.
Get a copy of the attached Queue.
static TypeId ns3::CsmaNetDevice::GetTypeId | ( | void | ) | [static] |
This method returns the TypeId associated to ns3::CsmaNetDevice.
This object is accessible through the following paths with Config::Set and Config::Connect:
Attributes defined for this type:
TraceSources defined for this type:
Reimplemented from ns3::NetDevice.
virtual bool ns3::CsmaNetDevice::IsBridge | ( | void | ) | const [virtual] |
virtual bool ns3::CsmaNetDevice::IsBroadcast | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::CsmaNetDevice::IsLinkUp | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::CsmaNetDevice::IsMulticast | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.
virtual bool ns3::CsmaNetDevice::IsPointToPoint | ( | void | ) | const [virtual] |
bool ns3::CsmaNetDevice::IsReceiveEnabled | ( | void | ) |
Is the receive side of the network device enabled?
bool ns3::CsmaNetDevice::IsSendEnabled | ( | void | ) |
Is the send side of the network device enabled?
virtual bool ns3::CsmaNetDevice::NeedsArp | ( | void | ) | const [virtual] |
Does this device need to use the address resolution protocol?
Implements ns3::NetDevice.
void ns3::CsmaNetDevice::Receive | ( | Ptr< Packet > | p, | |
Ptr< CsmaNetDevice > | sender | |||
) |
Receive a packet from a connected CsmaChannel.
The CsmaNetDevice receives packets from its connected channel and forwards them up the protocol stack. This is the public method used by the channel to indicate that the last bit of a packet has arrived at the device.
p | a reference to the received packet | |
sender | the CsmaNetDevice that transmitted the packet in the first place |
virtual bool ns3::CsmaNetDevice::Send | ( | Ptr< Packet > | packet, | |
const Address & | dest, | |||
uint16_t | protocolNumber | |||
) | [virtual] |
Start sending a packet down the channel.
packet | packet to send | |
dest | layer 2 destination address | |
protocolNumber | protocol number |
Implements ns3::NetDevice.
virtual bool ns3::CsmaNetDevice::SendFrom | ( | Ptr< Packet > | packet, | |
const Address & | source, | |||
const Address & | dest, | |||
uint16_t | protocolNumber | |||
) | [virtual] |
Start sending a packet down the channel, with MAC spoofing
packet | packet to send | |
source | layer 2 source address | |
dest | layer 2 destination address | |
protocolNumber | protocol number |
Implements ns3::NetDevice.
virtual void ns3::CsmaNetDevice::SetAddress | ( | Address | address | ) | [virtual] |
void ns3::CsmaNetDevice::SetBackoffParams | ( | Time | slotTime, | |
uint32_t | minSlots, | |||
uint32_t | maxSlots, | |||
uint32_t | maxRetries, | |||
uint32_t | ceiling | |||
) |
Set the backoff parameters used to determine the wait to retry transmitting a packet when the channel is busy.
slotTime | Length of a packet slot (or average packet time) | |
minSlots | Minimum number of slots to wait | |
maxSlots | Maximum number of slots to wait | |
maxRetries | Maximum number of retries before packet is discard | |
ceiling | Cap on the exponential function when calculating max slots |
void ns3::CsmaNetDevice::SetEncapsulationMode | ( | CsmaNetDevice::EncapsulationMode | mode | ) |
Set the encapsulation mode of this device.
mode | The encapsulation mode of this device. |
virtual void ns3::CsmaNetDevice::SetIfIndex | ( | const uint32_t | index | ) | [virtual] |
index | ifIndex of the device |
Implements ns3::NetDevice.
void ns3::CsmaNetDevice::SetInterframeGap | ( | Time | t | ) |
Set the interframe gap used to separate packets. The interframe gap defines the minimum space required between packets sent by this device. As in Ethernet, it defaults to 96 bit times.
t | the interframe gap time |
virtual bool ns3::CsmaNetDevice::SetMtu | ( | const uint16_t | mtu | ) | [virtual] |
mtu | MTU value, in bytes, to set for the device |
Override for default MTU defined on a per-type basis.
Implements ns3::NetDevice.
Set the node to which this device is being attached.
Implements ns3::NetDevice.
virtual void ns3::CsmaNetDevice::SetPromiscReceiveCallback | ( | PromiscReceiveCallback | cb | ) | [virtual] |
cb | callback to invoke whenever a packet has been received in promiscuous mode and must be forwarded to the higher layers. |
Enables netdevice promiscuous mode and sets the callback that will handle promiscuous mode packets. Note, promiscuous mode packets means _all_ packets, including those packets that can be sensed by the netdevice but which are intended to be received by other hosts.
Implements ns3::NetDevice.
Attach a queue to the CsmaNetDevice.
The CsmaNetDevice "owns" a queue. This queue may be set by higher level topology objects to implement a particular queueing method such as DropTail or RED.
queue | a Ptr to the queue for being assigned to the device. |
virtual void ns3::CsmaNetDevice::SetReceiveCallback | ( | NetDevice::ReceiveCallback | cb | ) | [virtual] |
Set the callback to be used to notify higher layers when a packet has been received.
cb | The callback. |
Implements ns3::NetDevice.
void ns3::CsmaNetDevice::SetReceiveEnable | ( | bool | enable | ) |
Enable or disable the receive side of the network device.
enable | Enable the receive side if true, otherwise disable. |
void ns3::CsmaNetDevice::SetReceiveErrorModel | ( | Ptr< ErrorModel > | em | ) |
Attach a receive ErrorModel to the CsmaNetDevice.
The CsmaNetDevice may optionally include an ErrorModel in the packet receive chain to simulate data errors in during transmission.
em | a pointer to the ErrorModel |
void ns3::CsmaNetDevice::SetSendEnable | ( | bool | enable | ) |
Enable or disable the send side of the network device.
enable | Enable the send side if true, otherwise disable. |
virtual bool ns3::CsmaNetDevice::SupportsSendFrom | ( | void | ) | const [virtual] |
Implements ns3::NetDevice.