Ipv6Tunnel

Package: inet.networklayer.ipv6tunneling

simple module Ipv6Tunnel

Worker module of ~Ipv6TunnelInterface: performs IPv6-in-IPv6 (RFC 2473) encapsulation. A packet routed to this interface (from the IPv6 layer) is wrapped in an outer IPv6 header and handed back to IPv6, which forwards the encapsulated datagram toward the tunnel exit.

inet.networklayer.ipv6tunneling.Ipv6TunnelIpv6Tunnelsimple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

Ipv6TunnelInterface

compound module

A virtual network interface that tunnels IPv6 traffic in IPv6 (RFC 2473). Traffic routed to this interface is encapsulated toward destination and handed back to IPv6 for forwarding; the IPv6 core needs no tunneling-specific knowledge. Plugs into the tun[] slot of nodes like any ITunnelInterface.

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

interfaceTableModule

string

source

string

tunnel entry point (an address of this node)

destination

string

tunnel exit point

mtu

int

1500B

Properties

Name

Value

Description

class

Ipv6Tunnel

display

i=block/tunnel

Gates

Name

Direction

Size

Description

upperLayerIn

input

upperLayerOut

output

Signals

Name

Type

Unit

Description

packetReceivedFromLower

cPacket

packetReceivedFromUpper

cPacket

packetSentToLower

cPacket

packetSentToUpper

cPacket

Source code

//
// Worker module of ~Ipv6TunnelInterface: performs IPv6-in-IPv6 (RFC 2473)
// encapsulation. A packet routed to this interface (from the IPv6 layer) is
// wrapped in an outer IPv6 header and handed back to IPv6, which forwards the
// encapsulated datagram toward the tunnel exit.
//
simple Ipv6Tunnel extends SimpleModule
{
    parameters:
        @class(Ipv6Tunnel);
        string interfaceTableModule;
        string source;      // tunnel entry point (an address of this node)
        string destination; // tunnel exit point
        int mtu @unit(B) = default(1500B);
        @display("i=block/tunnel");
        @signal[packetReceivedFromUpper](type=cPacket);
        @signal[packetReceivedFromLower](type=cPacket);
        @signal[packetSentToUpper](type=cPacket);
        @signal[packetSentToLower](type=cPacket);
    gates:
        input upperLayerIn;
        output upperLayerOut;
}

File: src/inet/networklayer/ipv6tunneling/Ipv6Tunnel.ned