digraph { rankdir=LR; subgraph cluster_0 { label="Data Center"; SIM0 [shape=rect]; SIM1 [shape=rect]; SIM2 [shape=rect]; SIM3 [shape=rect]; SIM4 [shape=rect]; SIM5 [shape=rect]; SIM6 [shape=rect]; SIM7 [shape=rect]; sysmoOCTSIM [shape=rect]; { rank=same; bankd [label="remsim-bankd"]; server [label="remsim-server"]; } SIM0 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM1 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM2 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM3 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM4 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM5 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM6 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; SIM7 -> sysmoOCTSIM [label="ISO-7816-2/3",dir=both]; sysmoOCTSIM -> bankd [label="USB CCID",dir=both]; bankd -> server [label="RSPRO/IPA/TCP"]; } subgraph cluster_1 { label="Remote Site A"; client1 [label="remsim-client"]; SIMtrace1 [label="SIMtrace2\nAPP=cardem",shape=rect]; Phone1 [label="Phone/Modem",shape=rect]; client1 -> SIMtrace1 [label="USB",dir=both]; SIMtrace1 -> Phone1 [label="ISO-7816-2/3",dir=both]; bankd -> client1 [label="RSPRO/IPA/TCP/IP",dir=both]; client1 -> server [label="RSPRO/IPA/TCP"]; } subgraph cluster_2 { label="Remote Site B"; client2 [label="remsim-client"]; SIMtrace2 [label="SIMtrace2\nAPP=cardem",shape=rect]; Phone2 [label="Phone/Modem",shape=rect]; client2 -> SIMtrace2 [label="USB",dir=both]; SIMtrace2 -> Phone2 [label="ISO-7816-2/3",dir=both]; bankd -> client2 [label="RSPRO/IPA/TCP/IP",dir=both]; client2 -> server [label="RSPRO/IPA/TCP"]; } }