<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp" -->

---
title: netlab Graphs with Multi-Access Links « ipSpace.net blog
description: When using netlab to generate GraphViz topology graphs with multi-access (broadcast) links, the default layout places subnet boxes and host nodes in...
canonical: https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: netlab Graphs with Multi-Access Links « ipSpace.net blog | daily.dev
og:description: When using netlab to generate GraphViz topology graphs with multi-access (broadcast) links, the default layout places subnet boxes and host nodes in...
og:url: https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp
og:image: https://api.daily.dev/og/posts/UPyMTL1Zp.png
og:image:alt: netlab Graphs with Multi-Access Links « ipSpace.net blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# netlab Graphs with Multi-Access Links « ipSpace.net blog

**[ipSpace.net Blog](https://daily.dev/sources/ipspace)** · 4 min read · 0 upvotes · 0 comments

## Summary

When using netlab to generate GraphViz topology graphs with multi-access (broadcast) links, the default layout places subnet boxes and host nodes in unintuitive positions. The post walks through several approaches to fix this: using graph.rank to align routers at the same level, and using graph.linkorder on host interfaces to push them below the multi-access subnet box. It explains why setting graph.rank on the link itself doesn't work (linkorder is evaluated first, and link attributes propagate to all connected interfaces). The current working solution is to set graph.linkorder: 200 on each host interface individually, with a note that a cleaner solution is planned for a future netlab release.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.ipspace.net/2026/03/netlab-graphs-multiaccess>

## Questions this post answers

### How do I fix the layout of multi-access link nodes in a netlab GraphViz topology graph?

Set graph.linkorder: 200 on each host interface within the multi-access link definition. This forces GraphViz to place host nodes below the subnet box. Setting graph.rank on the link itself does not work because netlab sorts connections by graph.linkorder first, and link-level attributes are copied to all connected interfaces, making them ineffective for ordering.

_Network engineers tuning netlab graph layouts track workarounds like these on daily.dev._

### What are the default values of graph.rank and graph.linkorder in netlab?

The default graph.rank and graph.linkorder values in netlab are 50 for nodes (devices) and interfaces, and 100 for multi-access links (subnets). This is why subnet boxes are always placed below nodes by default — the higher linkorder value causes GraphViz to treat the subnet side of each connection as the lower node in the layout.

_Developers working with netlab graph attributes find edge-case details like these on daily.dev._

## Similar posts on daily.dev

- [Compress netlab Lab Topologies with Dot Notation « ipSpace.net blog](https://daily.dev/posts/compress-netlab-lab-topologies-with-dot-notation-ipspace-net-blog-johomwxka) · ipSpace.net Blog · 0 upvotes · 0 comments

---

Tags: [#networking](https://daily.dev/tags/networking)

[View this post on daily.dev](https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"netlab Graphs with Multi-Access Links « ipSpace.net blog","url":"https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp"},"datePublished":"2026-08-11T08:54:29.298Z","dateModified":"2026-08-11T09:14:16.213Z","description":"When using netlab to generate GraphViz topology graphs with multi-access (broadcast) links, the default layout places subnet boxes and host nodes in...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2a41a2a7787985a3c68ba1964c0b9fab?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2a41a2a7787985a3c68ba1964c0b9fab?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ipSpace.net Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ipSpace.net Blog","logo":"https://media.daily.dev/image/upload/s--xS7E82MT--/f_auto,q_auto/v1786438303/logos/ipspace?_a=BAMAMicg0","url":"https://daily.dev/sources/ipspace"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"networking","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ipSpace.net Blog","item":"https://daily.dev/sources/ipspace"},{"@type":"ListItem","position":3,"name":"netlab Graphs with Multi-Access Links « ipSpace.net blog"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/netlab-graphs-with-multi-access-links-ipspace-net-blog-upymtl1zp#faq","mainEntity":[{"@type":"Question","name":"How do I fix the layout of multi-access link nodes in a netlab GraphViz topology graph?","acceptedAnswer":{"@type":"Answer","text":"Set graph.linkorder: 200 on each host interface within the multi-access link definition. This forces GraphViz to place host nodes below the subnet box. Setting graph.rank on the link itself does not work because netlab sorts connections by graph.linkorder first, and link-level attributes are copied to all connected interfaces, making them ineffective for ordering. Network engineers tuning netlab graph layouts track workarounds like these on daily.dev."}},{"@type":"Question","name":"What are the default values of graph.rank and graph.linkorder in netlab?","acceptedAnswer":{"@type":"Answer","text":"The default graph.rank and graph.linkorder values in netlab are 50 for nodes (devices) and interfaces, and 100 for multi-access links (subnets). This is why subnet boxes are always placed below nodes by default — the higher linkorder value causes GraphViz to treat the subnet side of each connection as the lower node in the layout. Developers working with netlab graph attributes find edge-case details like these on daily.dev."}}]}
```

