用callflow画流程图

        以前看nemergent公司用callflow画的MCPTT系统的流程图,觉得非常好看,并且每条信令还可以通过点击查看具体的内容。今天抽时间研究了研究callflow,挺有意思的。

        callflow的全名是Callflow Sequence Diagram Generator。这个软件是托管在sourceforge上的一个闭源的软件,地址为https://sourceforge.net/projects/callflow/,如果不嫌看英文麻烦的话,可以看这个网站的相关介绍http://callflow.sourceforge.net/.

        首先,先下载这个软件,通过tar命令解压,可以得到一个文件夹callflow-20120624-180,里面有几个很重要的文件,callflow(可执行),还有/conf/callflow.conf。首先要sudo vim callflow,这是一个脚本文件,编辑CONFDIR这一个变量,将它的值修改为callflow.conf文件所在的文件夹(这很重要,介绍网站中并没有说要修改这个地,导致最开始生成的图包含了wireshark包中的所有信令,filter文件中的过滤条件并没有什么作用)。然后编辑/conf/callflow.conf文件,编辑FILTER这个值,这个值代表了wireshark包中的过滤条件,符合这个条件的信令,最终才会出现在生成的图像上。

        然后,到这个软件的根目录,执行./callflow -o 包名.pcap > order,就会发现这是生成了一个order文件,编辑order文件,每一行代表效果图(见下图)中的一个竖线,表示一个实体,格式为(IP:PORT NAME),即ip地址+一个port表示在wireshark包中出现的ip+port,NAME表示给这个ip+port进行重命名,并且显示到最终生成的图像中。

        最后,执行./callflow 包名.pcap,这时会生成一个名字和pcap包名字一样的文件夹,打开它,会发现一个callflow.svg文件,通过浏览器打开它(如果是在公网服务器中,可以通过web服务器进行访问),就可以发现做好的图形了。

效果图(这是我在研究OpenIMS和AS互联时做的实验抓的pcap):

用callflow画流程图

        通过谷歌浏览器等支持html5的浏览器看的话,还可以点击每条信令,查看这条信令的具体内容,超链接也是自己生成的,图像的效果确实还挺好看的。