MscGen

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Onesource Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

Mscgen (short for MSC generator) is a software tool for drawing message sequence charts[1] from a simple to manage text-based source file. Rendered charts can be output in PNG, SVG and PostScript, with hyperlink information in ismap format. There is an extension for MediaWiki, Sphinx (documentation generator) and integration with Doxygen that allows embedding of charts into source code comments with generated automatically inserted into the generated documentation page. Mscgen is free software licensed under the GNU General Public License (GPL).

Examples

The following example is from the author:

File:Message Sequence Chart - Sample.png
Sample Message Sequence Chart
msc {
  a,b,c;

  a->b  [label="ab()"] ;
  b->c  [label="bc(TRUE)"];
  c=>c  [label="process(1)"];
  c=>c  [label="process(2)"];
  ...;
  c=>c  [label="process(n)"];
  c=>c  [label="process(END)"];
  a<<=c [label="callback()"];
  ---   [label="If more to run", ID="*"];
  a->a  [label="next()"];
  a->c  [label="ac()"];
  b<-c  [label="cb(TRUE)"];
  b->b  [label="stalled(...)"];
  a<-b  [label="ab() = FALSE"];
}

Here are two examples of input and output for some standard SIP message flows:

Simple Call Flow

File:Message Sequence Chart - SIP 1.png
Simple SIP Call
msc {
  UAS1, UAC;

  UAS1->UAC [label="INVITE"];
  UAS1<-UAC [label="100 Trying"];
  UAS1<-UAC [label="180 Ringing"];
  ---      [label="the client plays ringing"];
  UAS1<-UAC [label="200 Ok"];
  UAS1->UAC [label="ACK"];
  ...;
  ---      [label="the client hangs up"];
  UAS1<-UAC [label="BYE"];
  UAS1<-UAC [label="200 Ok"];
}

Alice calls Bob with Intermediary Proxies

File:Message Sequence Chart - SIP 2.png
Alice Calls Bob
msc {
  Alice, P1, P2, Bob;

  Alice->P1 [label="INVITE"];
  Alice<-P1 [label="100 Trying"];
  P1->P2    [label="INVITE"];
  P1=>>P2    [label="100 Trying"];
  P2->Bob   [label="INVITE"];
  P2<-Bob   [label="100 Trying"];
  P2<-Bob   [label="180 Ringing"];
  P1<-P2    [label="180 Ringing"];
  Alice<-P1 [label="180 Ringing"];
  ---       [label="Alice's client plays ringing"];
  ...;
  ---       [label="Bob answers"];
  P2<-Bob   [label="200 Ok"];
  P1<-P2    [label="200 Ok"];
  Alice<-P1 [label="200 Ok"];
  Alice->P1 [label="ACK"];
  P1->P2    [label="ACK"];
  P2->Bob   [label="ACK"];
  ---       [label="two way media"];
  ...;
}

See also

Script error: No such module "Portal".

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links