As much as I like some of the tools mentioned (I upvoted yEdit & highly recommend it), as programmer I sometimes eschew drag & drop, GUI based, tools in favour of those which take their input from a text file. That makes it easy for me to develop programs to generate the input text file from my own data.

You may not want to do that, but it is still worthwhile looking at [GraphViz][1]. 

Here is a very simple example taken from the [examples page][2] of the site:

Input:

    graph {  
               a -- b;   
               b -- c;   
               a -- c;   
               d -- c;   
               e -- c;   
               e -- a;   
          } 

Output:
![enter image description here][3]

Obviously, it can produce [much more complex diagrams][4] that that, but that shows the principle - a simple text language to describe the relationship between nodes.

GraphViz has been around for a long time, is well supported, has an [active forum][5] and is widely used in academia and in some popular tools like DoxyGen.

Of particular interest to you the GitHub page [How to create a network diagram with Graphviz][6] (which uses images from Cisco) and IBM's [Using Graphviz to generate automated system diagrams][7].


  [1]: http://www.graphviz.org/
  [2]: http://graphs.grevian.org/example
  [3]: https://i.sstatic.net/5OM4K.png
  [4]: http://www.graphviz.org/Gallery.php
  [5]: http://www.graphviz.org/forum
  [6]: https://github.com/mgriffin/graphviz_network
  [7]: http://www.ibm.com/developerworks/aix/library/au-aix-graphviz/