PdcpRelayEntity

Package: simu5g.stack.pdcp

PdcpRelayEntity

compound module

Stands in place of the PDCP entity of a data radio bearer at a dual-connectivity SECONDARY node. The bearer's real PDCP entity lives at the master; the secondary only tunnels the already-processed PDUs between the master (over X2, via the DcMux) and its own RLC, doing no PDCP processing of its own. Created dynamically by BearerManagement, one per (UE, DRB) pair, in place of a PdcpEntityBase.

The RLC-side boundary mirrors PdcpEntityBase's (legOut/legIn), so the RLC entity is wired the same way regardless of what sits above it. The two directions are independent halves: PdcpDownlinkRelay carries DL (master -> RLC), PdcpUplinkRelay carries UL (RLC -> master).

dl : PdcpDownlinkRelay

Downlink half of a DC-secondary PDCP relay (see ~PdcpRelayEntity): receives an already-processed...

Source:
dl: PdcpDownlinkRelay {
    @display("p=60,50");
} ul : PdcpUplinkRelay

Uplink half of a DC-secondary PDCP relay (see ~PdcpRelayEntity): receives a PDCP PDU from the local...

Source:
ul: PdcpUplinkRelay {
    @display("p=140,50");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Properties

Name Value Description
dynamic true
display i=block/wheelbarrow

Gates

Name Direction Size Description
legOut [ ] output 1

DL PDU to the local RLC entity (shared RLC boundary, cf. PdcpEntityBase)

legIn [ ] input 1

UL PDU from the local RLC entity

x2In input

DL PDU tunneled from the master (via the DcMux)

x2Out output

UL PDU to be tunneled to the master (via the DcMux)

Unassigned submodule parameters

Name Type Default value Description
dl.binderModule string "binder"
ul.binderModule string "binder"

Source code

//
// Stands in place of the PDCP entity of a data radio bearer at a
// dual-connectivity SECONDARY node. The bearer's real PDCP entity lives at the
// master; the secondary only tunnels the already-processed PDUs between the
// master (over X2, via the DcMux) and its own RLC, doing no PDCP processing of
// its own. Created dynamically by BearerManagement, one per (UE, DRB) pair, in
// place of a ~PdcpEntityBase.
//
// The RLC-side boundary mirrors ~PdcpEntityBase's (legOut/legIn), so the RLC entity
// is wired the same way regardless of what sits above it. The two directions are
// independent halves: ~PdcpDownlinkRelay carries DL (master -> RLC),
// ~PdcpUplinkRelay carries UL (RLC -> master).
//
module PdcpRelayEntity
{
    parameters:
        @dynamic(true);
        @display("i=block/wheelbarrow");
    gates:
        output legOut[1];   // DL PDU to the local RLC entity (shared RLC boundary, cf. PdcpEntityBase)
        input legIn[1];     // UL PDU from the local RLC entity
        input x2In;         // DL PDU tunneled from the master (via the DcMux)
        output x2Out;       // UL PDU to be tunneled to the master (via the DcMux)
    submodules:
        dl: PdcpDownlinkRelay {
            @display("p=60,50");
        }
        ul: PdcpUplinkRelay {
            @display("p=140,50");
        }
    connections:
        x2In --> dl.in;
        dl.out --> { @display("m=s"); } --> legOut[0];
        legIn[0] --> { @display("m=s"); } --> ul.in;
        ul.out --> x2Out;
}
File: src/simu5g/stack/pdcp/PdcpRelayEntity.ned