\begin{tikzpicture} \begin{pgfonlayer}{nodelayer} \node [style=generic block] (0) at (0, 0) {Initiator}; \node [style=generic block] (1) at (10, 0) {Inter-\\connect}; \node [style=generic block] (2) at (20, 0) {Target}; \node [style=payload] (3) at (10, 4) {Generic\\Payload}; \node [style=initiator socket] (4) at (2, 0) {}; \node [style=target socket] (5) at (8, 0) {}; \node [style=target socket] (6) at (18, 0) {}; \node [style=initiator socket] (7) at (12, 0) {}; \node [style=none] (8) at (5, 0.5) {Forward Path}; \node [style=none] (9) at (15, 0.5) {Forward Path}; \node [style=none] (10) at (8, -2) {}; \node [style=none] (11) at (2, -2) {}; \node [style=none] (12) at (18, -2) {}; \node [style=none] (13) at (12, -2) {}; \node [style=none] (14) at (5, -1.5) {Backward Path}; \node [style=none] (15) at (15, -1.5) {Backward Path}; \end{pgfonlayer} \begin{pgfonlayer}{edgelayer} \draw [style=dashed arrow, bend left=15] (0) to (3); \draw [style=arrow] (4) to (5); \draw [style=arrow] (7) to (6); \draw (5) to (10.center); \draw (11.center) to (10.center); \draw (6) to (12.center); \draw (12.center) to (13.center); \draw [style=arrow] (13.center) to (7); \draw [style=arrow] (11.center) to (4); \draw [style=dashed arrow, bend left=15] (3) to (2); \end{pgfonlayer} \end{tikzpicture}