mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-hnodeb.git
synced 2025-10-23 08:22:16 +00:00
This is needed for instance: * AUDIO: video calls * GTP: secondary pdp contexts For better abstraction, now both AUDIO and GTP conns use unique ID namespaces, and one ID is used to identify each one. Each conn relate in turn to a UE since a context_id is passed during connection establishment. Related: SYS#5516 Change-Id: Ib3f60d5ba21defe5259c25e2034fc2217c4d93df
87 lines
3.4 KiB
Plaintext
87 lines
3.4 KiB
Plaintext
msc {
|
|
hscale="3";
|
|
ue [label="Customer"], trx [label="Lower Layer TRX"], hnodeb [label="osmo-hnodeb"], hnbgw [label="HNBGW"], ggsn [label="GGSN"], mgw [label="MGW"];
|
|
|
|
|||;
|
|
--- [ label = "hNodeB starts up" ];
|
|
hnodeb => hnbgw [label="HNBAP HnbRegisterRequest"];
|
|
hnodeb <= hnbgw [label="HNBAP HnbRegisterResponse"];
|
|
|||;
|
|
...;
|
|
|||;
|
|
|||;
|
|
--- [ label = "TRX starts up & connects to hNodeB" ];
|
|
trx => hnodeb [label="CTL-HELLO.req(SAPI=CTL, VERSION)"];
|
|
trx <= hnodeb [label="CTL-HELLO.cnf(SAPI=CTL, VERSION)"];
|
|
trx => hnodeb [label="CTL-HELLO.req(SAPI=IUH, VERSION)"];
|
|
trx <= hnodeb [label="CTL-HELLO.cnf(SAPI=IUH, VERSION)"];
|
|
trx => hnodeb [label="CTL-HELLO.req(SAPI=GTP, VERSION)"];
|
|
trx <= hnodeb [label="CTL-HELLO.cnf(SAPI=GTP, VERSION)"];
|
|
trx => hnodeb [label="CTL-HELLO.req(SAPI=AUDIO, VERSION)"];
|
|
trx <= hnodeb [label="CTL-HELLO.cnf(SAPI=AUDIO, VERSION)"];
|
|
trx <= hnodeb [label="IUH-CONFIGURE.ind(PLMN,LAC,SAC,RAC,CI,RNC_ID from HnbRegisterResponse)"];
|
|
|||;
|
|
...;
|
|
|||;
|
|
|||;
|
|
--- [ label = "Subscriber Paging" ];
|
|
hnodeb <= hnbgw [label="RUA-InitiatingMessage(RANAP Paging)"];
|
|
trx <= hnodeb [label="IUH-UNITDATA.ind[RANAP Paging]"];
|
|
|||;
|
|
...;
|
|
|||;
|
|
|||;
|
|
--- [ label = "Subscriber Sign Up" ];
|
|
ue => trx [label="CM Service Req"];
|
|
trx => hnodeb [label="IUH-CONN_ESTABLISH.req[RANAP CM ServiceReq]"];
|
|
hnodeb => hnbgw [label="HNBAP UE Register Req(IMSI?)"];
|
|
hnodeb <= hnbgw [label="HNBAP UE Register Acc(context_id)"];
|
|
hnodeb => hnbgw [label="RUA-Connect(RANAP-GMM ServiceRequest)"];
|
|
hnodeb <= hnbgw [label="RUA-DirectTransfer(RANAP GMM ServiceAccept)"];
|
|
trx <= hnodeb [label="IUH-CONN_ESTABLISH.cnf(context_id])"];
|
|
trx <= hnodeb [label="IUH-CONN_DATA.ind[context_id, RANAP GMM ServiceAccept]"];
|
|
--- [ label = "Subscriber set up PS data:" ];
|
|
hnodeb <= hnbgw [label="RANAP RAB-Assignment Request(TEI, ADDR)"];
|
|
trx <= hnodeb [label="IUH-CONN_DATA.ind[RANAP RAB-Assignment Request(remote_ip, remote_port, remote_tei)]"];
|
|
trx => hnodeb [label="GTP-CONN_ESTABLISH.req(context_id,remote_ip,remote_port,remote_tei)"];
|
|
... [ label = "HnodeB sets up GTP-U connection" ];
|
|
trx <= hnodeb [label="GTP-CONN_ESTABLISH.cnf(context_id,gtp_conn_id,local_ip,local_port,local_tei)"];
|
|
|||;
|
|
...;
|
|
|||;
|
|
|||;
|
|
--- [ label = "PS data transmission over GTP-U:" ];
|
|
ue => trx [label="..."];
|
|
trx => hnodeb [label="GTP-CONN_DATA.req[gtp_conn_id,payload]"];
|
|
hnodeb => ggsn [label="GTP-U(remote_tei, local_addr, remote_addr, payload)"];
|
|
hnodeb <= ggsn [label="GTP-U(local_tei, remote_addr, local_addr, payload)"];
|
|
trx <= hnodeb [label="GTP-CONN_DATA.ind[gtp_conn_id,payload]"];
|
|
ue <= trx [label="..."];
|
|
|||;
|
|
...;
|
|
|||;
|
|
--- [ label = "MO/MT PS data Release:" ];
|
|
ue => trx [label="..."];
|
|
trx => hnodeb [label="IUH-CONN_DATA.req[RANAP IU Release Request]"];
|
|
hnodeb => hnbgw [label="RANAP IU Release Request"];
|
|
hnodeb <= hnbgw [label="RANAP IU Release Command"];
|
|
trx <= hnodeb [label="IUH-CONN_DATA.ind[RANAP IU Release Command]"];
|
|
...;
|
|
trx => hnodeb [label="GTP-CONN_RELEASE.req(gtp_conn_id)"];
|
|
|
|
trx => hnodeb [label="IUH-CONN_RELEASE.req[RANAP IU Release Complete]"];
|
|
hnodeb => hnbgw [label="RUA-Disconnect(RANAP IU Release Complete)"];
|
|
|
|
|||;
|
|
...;
|
|
|||;
|
|
--- [ label = "For voice call (CS): Similar to SAPI_GTP, but using SAPI_AUDIO and osmo-hnodeb sets up RTP stream" ];
|
|
|
|
|
|
|||;
|
|
...;
|
|
|||;
|
|
--- [ label = "Iuh SCTP link goes down" ];
|
|
trx <= hnodeb [label="UD socket is closed, osmo-hnodeb cleans up state and attempts reconnect. lowerlayer can re-connect and wait for next CONFIGURE.req"];
|
|
}
|