add initial FSM design charts
Related: SYS#5599 Change-Id: I55474daa6bb204a0fe7da0a3bf888bb7d1c46677
This commit is contained in:
parent
d6ac69d6f6
commit
5d8bff6ba0
|
@ -99,5 +99,6 @@ AC_OUTPUT(
|
|||
tests/libosmo-gtlv/test_tliv/Makefile
|
||||
tests/libosmo-pfcp/Makefile
|
||||
doc/Makefile
|
||||
doc/charts/Makefile
|
||||
contrib/Makefile
|
||||
Makefile)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
SUBDIRS = \
|
||||
charts \
|
||||
$(NULL)
|
|
@ -0,0 +1,24 @@
|
|||
msc: \
|
||||
$(builddir)/pfcp_msgs.png \
|
||||
$(builddir)/pfcp_msgs_gtp.png \
|
||||
$(NULL)
|
||||
|
||||
dot: \
|
||||
$(builddir)/pfcp_overview.png \
|
||||
$(builddir)/pfcp_cp_peer_fsm.png \
|
||||
$(builddir)/pfcp_up_peer_fsm.png \
|
||||
$(builddir)/pfcp_heartbeat_fsm.png \
|
||||
$(builddir)/pfcp_cp_session_fsm.png \
|
||||
$(builddir)/pfcp_up_session_fsm.png \
|
||||
$(builddir)/pfcp_and_gtp.png \
|
||||
$(NULL)
|
||||
|
||||
$(builddir)/%.png: $(srcdir)/%.msc
|
||||
mscgen -T png -o $@ $<
|
||||
|
||||
$(builddir)/%.png: $(srcdir)/%.dot
|
||||
dot -Tpng $< > $@
|
||||
|
||||
.PHONY: poll
|
||||
poll:
|
||||
while true; do $(MAKE) msc dot; sleep 1; done
|
|
@ -0,0 +1,20 @@
|
|||
digraph G {
|
||||
rankdir=LR
|
||||
labelloc=t; label="PFCP and GTP"
|
||||
|
||||
SGSN [label="SGSN\n123.44.0.9"]
|
||||
SGWC [label="SGW-C\n123.44.05"]
|
||||
subgraph cluster_UPF {
|
||||
label="OsmoUPF";
|
||||
SGWU [label="SGW-U\n123.44.0.6"];
|
||||
GTPk [label="kernel GTP\n123.44.0.6"]
|
||||
}
|
||||
|
||||
SGSN -> SGWC [label="S4\nGTPv2-C"]
|
||||
SGWC -> SGWU [label="Sxa\nPFCP\nSession Establishment:\n"]
|
||||
SGSN -> GTPk [label="S4\nGTPv1-U",dir=both]
|
||||
|
||||
MS [label="MS\n192.168.104.176"]
|
||||
MS -> SGSN [dir=both]
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP CP peer FSM\nControl Plane side, managing association with remote UP peer"
|
||||
|
||||
cp [label="CP function",shape="box"]
|
||||
|
||||
cp -> WAIT_ASSOC_SETUP_RESP [label="cp_peer_associate()"]
|
||||
|
||||
txrx [label="PFCP socket",shape="box"]
|
||||
WAIT_ASSOC_SETUP_RESP -> txrx [label="tx_assoc_setup_req()",style=dotted]
|
||||
txrx -> WAIT_ASSOC_SETUP_RESP [label="EV_RX_ASSOC_SETUP_RESP",style=dotted]
|
||||
WAIT_ASSOC_SETUP_RESP -> ASSOCIATED [label="Assoc Setup Resp"]
|
||||
|
||||
WAIT_ASSOC_SETUP_RESP -> WAIT_ASSOC_SETUP_RESP [label="retry"]
|
||||
|
||||
heartbeat [label="PFCP heartbeat FSM",shape=box3d]
|
||||
ASSOCIATED -> heartbeat [label="alloc()",style=dotted]
|
||||
heartbeat -> ASSOCIATED [label="EV_HEARTBEAT_FAILURE",style=dotted]
|
||||
|
||||
txrx2 [label="PFCP socket",shape="box"]
|
||||
txrx2 -> ASSOCIATED [label="EV_RX_ASSOC_UPDATE_REQ\n3GPP TS 29.244 6.2.7.3.1",style=dotted]
|
||||
GRACEFUL_RELEASE -> txrx2 [label="tx_assoc_update_resp()",style=dotted]
|
||||
|
||||
cp_session [label="PFCP CP session FSM",shape=box3d]
|
||||
cp -> ASSOCIATED [label="cp_peer_session_create()",style=dotted]
|
||||
ASSOCIATED -> cp_session [label="cp_session_create()",style=dotted]
|
||||
cp -> cp_session [style=invisible,arrowhead=none]
|
||||
|
||||
ASSOCIATED -> GRACEFUL_RELEASE [label="Association Update\nindicating graceful release"]
|
||||
|
||||
cp -> ASSOCIATED [label="cp_peer_release()",style=dotted]
|
||||
ASSOCIATED -> term [label="cp_peer_release()\nHeartbeat failure"]
|
||||
|
||||
ASSOCIATED -> WAIT_ASSOC_SETUP_RESP [label="Heartbeat failure"]
|
||||
|
||||
GRACEFUL_RELEASE -> term
|
||||
term [shape="octagon"]
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP CP session FSM"
|
||||
|
||||
cp [label="CP function",shape=box]
|
||||
cp -> WAIT_ESTABLISHMENT_RESP [label="cp_session_create(cp_peer)\niff cp_peer in state ASSOCIATED"]
|
||||
|
||||
txrx [label="PFCP socket",shape=box]
|
||||
|
||||
WAIT_ESTABLISHMENT_RESP -> txrx [label="tx_session_est_req()",style=dotted]
|
||||
txrx -> WAIT_ESTABLISHMENT_RESP [label="EV_RX_SESSION_EST_RESP",style=dotted]
|
||||
|
||||
WAIT_ESTABLISHMENT_RESP -> ESTABLISHED [label="Est Resp"]
|
||||
|
||||
cp -> ESTABLISHED [label="cp_session_modify()",style=dotted]
|
||||
ESTABLISHED -> WAIT_MODIFICATION_RESP [label="cp_session_modify()"]
|
||||
WAIT_MODIFICATION_RESP -> txrx [label="tx_session_mod_req()",style=dotted]
|
||||
txrx -> WAIT_MODIFICATION_RESP [label="EV_RX_SESSION_MOD_RESP",style=dotted,constraint=false]
|
||||
WAIT_MODIFICATION_RESP -> ESTABLISHED [label="Mod Resp"]
|
||||
|
||||
cp -> ESTABLISHED [label="cp_session_delete()",style=dotted]
|
||||
ESTABLISHED -> WAIT_DELETION_RESP [label="cp_session_delete()"]
|
||||
WAIT_DELETION_RESP -> txrx [label="tx_session_del_req()",style=dotted]
|
||||
txrx -> WAIT_DELETION_RESP [label="EV_RX_SESSION_DEL_RESP",style=dotted,constraint=false]
|
||||
WAIT_DELETION_RESP -> term
|
||||
term [shape="octagon"]
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP heartbeat FSM"
|
||||
|
||||
peer [label="PFCP CP/UP peer FSM",shape=box3d]
|
||||
txrx [label="PFCP socket",shape=box]
|
||||
|
||||
peer -> IDLE [label="alloc()"]
|
||||
IDLE -> WAIT_HEARTBEAT_RESP -> IDLE
|
||||
WAIT_HEARTBEAT_RESP -> term
|
||||
term [shape="octagon"]
|
||||
|
||||
WAIT_HEARTBEAT_RESP -> txrx [label="tx_heartbeat_req()",style=dotted]
|
||||
txrx -> WAIT_HEARTBEAT_RESP [label="HEARTBEAT_EV_RX_RESP",style=dotted]
|
||||
|
||||
term -> peer [label="PEER_EV_HEARTBEAT_FAILURE",style=dotted]
|
||||
|
||||
txrx2 [label="PFCP socket",shape=box]
|
||||
txrx2 -> txrx2 [label="rx Heartbeat Req\ntx Heartbeat Resp",style=dotted]
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP Overview\n3GPP TS 29.244 3.1, 5.8.1"
|
||||
|
||||
subgraph cluster_N1_CP {
|
||||
label="Node: Control Plane function";style=dotted
|
||||
N1_E_CP [label="CP Entity"]
|
||||
}
|
||||
|
||||
subgraph cluster_N2_UP {
|
||||
label="Node: User Plane function\nNode ID: my-userplane.com\n(FQDN may provide multiple PFCP Entities)";style=dotted
|
||||
N2_E_UP [label="UP Entity\n8.7.6.1"]
|
||||
N2_E_UP2 [label="UP Entity\n8.7.6.2"]
|
||||
}
|
||||
|
||||
subgraph cluster_N3_UP {
|
||||
label="Node: User Plane function\nNode ID: 1.2.3.4\n(IP address means only one PFCP Entity)";style=dotted
|
||||
N3_E_UP [label="UP Entity\n1.2.3.4\n(osmo-upf)"]
|
||||
}
|
||||
|
||||
N1_E_CP -> N3_E_UP [label="PFCP Request"]
|
||||
N1_E_CP -> N2_E_UP
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP UP peer FSM\nUser Plane side, managing association with remote CP peer"
|
||||
|
||||
txrx [label="PFCP socket",shape="box"]
|
||||
|
||||
txrx -> NOT_ASSOCIATED [label="rx PFCP msg from\nnew remote IP"]
|
||||
txrx -> NOT_ASSOCIATED [label="EV_RX_ASSOC_SETUP_REQ",style=dotted]
|
||||
|
||||
NOT_ASSOCIATED -> ASSOCIATED [label="Assoc Setup Req",shape="box"]
|
||||
|
||||
heartbeat [label="PFCP heartbeat FSM",shape=box3d]
|
||||
ASSOCIATED -> heartbeat [label="alloc()",style=dotted]
|
||||
heartbeat -> ASSOCIATED [label="EV_HEARTBEAT_FAILURE",style=dotted]
|
||||
|
||||
txrx -> ASSOCIATED [label="EV_RX_SESSION_EST_REQ",style=dotted]
|
||||
up_session [label="PFCP UP session FSM",shape=box3d]
|
||||
ASSOCIATED -> up_session [label="up_session_create()",style=dotted]
|
||||
|
||||
txrx -> ASSOCIATED [label="EV_RX_ASSOC_UPD_REQ",style=dotted]
|
||||
ASSOCIATED -> GRACEFUL_RELEASE [label="Association Update\nindicating graceful release"]
|
||||
|
||||
ASSOCIATED -> term [label="Heartbeat failure"]
|
||||
GRACEFUL_RELEASE -> term
|
||||
term [shape="octagon"]
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
digraph G {
|
||||
rankdir=TB
|
||||
labelloc=t; label="PFCP UP session FSM"
|
||||
|
||||
peer [label="PFCP UP peer FSM",shape=box3d]
|
||||
peer -> ESTABLISHED [label="rx_session_est_req()"]
|
||||
|
||||
txrx [label="PFCP socket",shape="box"]
|
||||
txrx2 [label="PFCP socket",shape="box"]
|
||||
|
||||
txrx -> ESTABLISHED [label="EV_RX_SESSION_MOD_REQ",style=dotted]
|
||||
ESTABLISHED -> txrx [label="tx_session_mod_resp()",style=dotted,constraint=false]
|
||||
ESTABLISHED -> ESTABLISHED [label="Mod"]
|
||||
|
||||
txrx2 -> ESTABLISHED [label="EV_RX_SESSION_DEL_REQ",style=dotted]
|
||||
ESTABLISHED -> txrx2 [label="tx_session_del_resp()",style=dotted,constraint=false]
|
||||
|
||||
ESTABLISHED -> term [label="Deletion"]
|
||||
term [shape="octagon"]
|
||||
|
||||
}
|
Loading…
Reference in New Issue