Ipv6NdResponder

Package: simu5g.corenetwork.ndResponder

Ipv6NdResponder

simple module

Answers the IPv6 Neighbor Discovery traffic of the UEs' sessions at the session anchor (Upf, PgwStandard), which is the router on the IP link of an IPv6 session: the base station is transparent to it. In 5GS the SMF generates the Router Advertisements and the UPF relays them into the session's tunnel, together with the UE's Router Solicitations the other way (TS 23.502); this module stands in for both.

GtpUser hands over every uplink packet whose destination has link-local scope (fe80::/10, or a multicast group of interface-local or link-local scope), so no such packet leaks onto the data network: through the node's message dispatcher, as the icmpv6 service, which this module registers, each packet tagged with its session. This module

  • answers a Router Solicitation with a Router Advertisement, unicast to the soliciting UE, which makes this module's link-local address the UE's default router;
  • answers a Neighbor Solicitation for its link-local address (a reachability probe) with a solicited Neighbor Advertisement;
  • consumes duplicate address detection probes without an answer, meaning the address is free;
  • discards everything else with a warning. The replies go back up through the dispatcher, tagged with the session of the solicitation, which names the tunnel they go into (see TrafficFlowFilter).

Simplifications: the UEs' addresses are configured statically (see Ipv6NetworkConfigurator), so the Router Advertisement carries the session's prefix (the /64 of the UE's global address) for information only, with neither the on-link nor the autonomous flag; and no unsolicited Router Advertisements are sent, the router lifetime is meant to outlast the simulation.

Used in compound modules

Name Type Description
PgwStandard compound module

Implements a simplified EPC PDN Gateway (P-GW) of a 4G LTE network. It serves as the entry point to the core network of an LTE network, thus bridging it to the rest of the Internet. Packets arriving from the Internet are tunneled to the appropriate next hop in the core network (e.g., the eNodeB that will transmit the packet to the destination User Equipment through the radio access network) using the GPRS Tunneling Protocol (GTP). Conversely, packets received from the core network are detunneled and sent to the Internet (e.g., towards a remote server). To accomplish this, it utilizes a UserPlaneRelay, whose GtpUser handles GTP (de)tunneling and whose TrafficFlowFilter classifies incoming packets.

Upf compound module

Implements the 5G Core User Plane Function (UPF).

Parameters

Name Type Default value Description
binderModule string "binder"
linkLocalAddress string "fe80::1"

The router's address on every session's link

routerLifetime double 9000s

Router Lifetime in the Router Advertisements (max 9000s, RFC 4861)

curHopLimit int 64

Cur Hop Limit in the Router Advertisements (0 = unspecified)

checksumMode string "declared"

Properties

Name Value Description
display i=block/control

Gates

Name Direction Size Description
in input
out output

Source code

//
// Answers the IPv6 Neighbor Discovery traffic of the UEs' sessions at the
// session anchor (~Upf, ~PgwStandard), which is the router on the IP link of an
// IPv6 session: the base station is transparent to it. In 5GS the SMF generates
// the Router Advertisements and the UPF relays them into the session's tunnel,
// together with the UE's Router Solicitations the other way (TS 23.502); this
// module stands in for both.
//
// ~GtpUser hands over every uplink packet whose destination has link-local scope
// (fe80::/10, or a multicast group of interface-local or link-local scope), so no
// such packet leaks onto the data network: through the node's message dispatcher, as
// the icmpv6 service, which this module registers, each packet tagged with its session.
// This module
//  - answers a Router Solicitation with a Router Advertisement, unicast to the
//    soliciting UE, which makes this module's link-local address the UE's default
//    router;
//  - answers a Neighbor Solicitation for its link-local address (a reachability
//    probe) with a solicited Neighbor Advertisement;
//  - consumes duplicate address detection probes without an answer, meaning the
//    address is free;
//  - discards everything else with a warning.
// The replies go back up through the dispatcher, tagged with the session of the
// solicitation, which names the tunnel they go into (see ~TrafficFlowFilter).
//
// Simplifications: the UEs' addresses are configured statically (see
// ~Ipv6NetworkConfigurator), so the Router Advertisement carries the session's
// prefix (the /64 of the UE's global address) for information only, with neither
// the on-link nor the autonomous flag; and no unsolicited Router Advertisements
// are sent, the router lifetime is meant to outlast the simulation.
//
simple Ipv6NdResponder
{
    parameters:
        @display("i=block/control");
        string binderModule = default("binder");
        string linkLocalAddress = default("fe80::1");  // The router's address on every session's link
        double routerLifetime @unit(s) = default(9000s);  // Router Lifetime in the Router Advertisements (max 9000s, RFC 4861)
        int curHopLimit = default(64);  // Cur Hop Limit in the Router Advertisements (0 = unspecified)
        string checksumMode @enum("declared","computed") = default("declared");
    gates:
        input in;
        output out;
}
File: src/simu5g/corenetwork/ndResponder/Ipv6NdResponder.ned