msc {
	hscale = "3";
	ue,hnb,hnbgw,cn;

	ue box ue	[ label = "subscriber A sends text message" ];

	ue box hnb	[ label = "Radio Channel Establishment" ];
	ue => hnb 	[ label = "RRC (CM SERV REQ)" ] ;
	hnb => hnbgw 	[ label = "RUA CONNECT (RANAP Initial UE Msg (CM SERV REQ))" ];
	hnbgw => cn	[ label = "SCCP CR (RANAP Initial UE Msg (CM SERV REQ))" ];
	cn >> hnbgw	[ label = "SCCP CC" ];

	---		[ label = "Optional retrieval of IMSI (if not given in CM or retrived from VLR by TMSI)" ];
	cn => hnbgw	[ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
	hnb => ue	[ label = "RRC (MM IDENTITY REQ)" ];
	ue >> hnb	[ label = "RRC (MM IDENTITY RESP)" ];
	hnb >> hnbgw	[ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
	hnbgw >> cn	[ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];

	---		[ label = "Mandatory activation of Integrity Protection" ];
	cn => hnbgw	[ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
	hnb >> hnbgw	[ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
	hnbgw >> cn	[ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];

	cn => hnbgw	[ label = "SCCP DT1 (RANAP CommonID)" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP CommonID)" ];

	---		[ label = "Optional Authentication" ];
	cn => hnbgw	[ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
	hnb => ue	[ label = "RRC (MM AUTH REQ)" ];
	ue >> hnb	[ label = "RRC (MM AUTH RESP)" ];
	hnb >> hnbgw	[ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
	hnbgw >> cn	[ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];

	---		[ label = "Optional activation of Encryption" ];
	cn => hnbgw	[ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
	hnb >> hnbgw	[ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
	hnbgw >> cn	[ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];

	cn >> hnbgw	[ label = "SCCP DT1 (RANAP DirectTransfer (CM SERV ACC))" ];
	hnbgw >> hnb	[ label = "RUA DT (RANAP DirectTransfer (CM SERV ACC))" ];
	hnb >> ue	[ label = "RRC (CM SERV ACC)" ];

	ue => hnb	[ label = "RRC (CP-DATA (RP-DATA (SMS SUBMIT)))" ];
	hnb => hnbgw	[ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS-SUBMIT))))" ];
	hnbgw => cn	[ label = "SCCP DT1 (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS-SUBMIT))))" ];

	cn => hnbgw	[ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK)" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP DirectTransfer (CP-ACK)" ];
	hnb => ue	[ label = "RRC (CP-ACK)" ];

	cn box cn	[ label = "MAP MO Forward SM to IWMSC / SMSC" ];

	cn => hnbgw	[ label = "SCCP DT1 (RANAP DirectTransfer (CP-DATA (RP-ACK)" ];
	hnbgw => hnb	[ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-ACK)" ];
	hnb => ue	[ label = "RRC (CP-DATA (RP-ACK)" ];

	ue => hnb	[ label = "RRC (CP-ACK)" ];
	hnb => hnbgw	[ label = "RUA DT (RANAP DirectTransfer (CP-ACK))" ];
	hnbgw => cn	[ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK))" ];

	cn box hnb	[ label = "RAB Release or Iu Release" ];
}
