1

Can you recommend a good approach how to model a communication pattern between different replicas (nodes, servers, ...), like the one below.

PBFT communication pattern (source: Miguel Castro, Barbara Liskov, et al. Practical Byzantine fault tolerance. 1999)

I have not been able to find anything for TeX, so before I resort to external image, is there a TeX/TikZ/etc solution?

  • Welcome to TeX.SX! You can use graphicx to include an external image. Alternatively, this would be quite easy to draw using either tikz or pstricks -- if you search on TeX.SX you can find many examples of how to use both of these packages. (Asking people to draw the image for you is not really a reasonable question to ask on TeX.SX, although you may get lucky!) – Andrew Oct 16 '17 at 10:26
  • Thanks Andrew, I know how to include an image or use TikZ but I was looking for some tool or example of this (because if I try to do this from scratch with TikZ, it will probably take me many hours to get this one picture. – Czechnology Oct 16 '17 at 10:30
3

The code below, which produces the following diagram, should get you started:

enter image description here

The coordinates are from (0,4) in the top left-hand corner to (5,0) in the bottom right-hand corner (I have made the x-scale 2 to fit your column labels in).

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[xscale=2]
  \foreach \row [count=\r] in {C,0,1,2,3} {
    \draw[thick](0,5-\r)node[left]{\row} -- ++(5,0);
  }
  \foreach \col [count=\c] in {request,pre-prepare,prepare,commit,reply}{
      \draw[dotted] (\c,5)node[above left, anchor=east]{\col}--++(0,-5);
  }
  \foreach \a/\b/\c/\d in {% arrow from (\a,\b) to (\a+\c,\b+\d)
        0.2/4/0.7/-1,
        1.2/3/0.8/-1,
        1.2/3/0.7/-2,
        1.2/3/0.6/-3
      }{ \draw[blue,-{Stealth}] (\a,\b)--++(\c,\d); }
\end{tikzpicture}

\end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.