mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-27 11:13:02 +02:00
5170 lines
179 KiB
HTML
5170 lines
179 KiB
HTML
<!DOCTYPE html><html lang="en" class="no-js"><head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="Infix Documentation">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/networking/">
|
|
|
|
|
|
<link rel="prev" href="../container/">
|
|
|
|
|
|
<link rel="next" href="../firewall/">
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.0">
|
|
|
|
|
|
|
|
<title>Network Configuration - User's Guide</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.618322db.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../extra.css">
|
|
|
|
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
|
|
html.glightbox-open { overflow: initial; height: 100%; }
|
|
.gslide-title { margin-top: 0px; user-select: text; }
|
|
.gslide-desc { color: #666; user-select: text; }
|
|
.gslide-image img { background: black; }
|
|
.glightbox-clean .gslide-media { -webkit-box-shadow: none; box-shadow: none; }
|
|
.gscrollbar-fixer { padding-right: 15px; }
|
|
.gdesc-inner { font-size: 0.75rem; }
|
|
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
|
|
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
|
|
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
|
|
</style></head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#network-configuration" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="https://kernelkit.org/" title="User's Guide" class="md-header__button md-logo" aria-label="User's Guide" data-md-component="logo">
|
|
|
|
<img src="../logo-plain.png" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
User's Guide
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Network Configuration
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"></path></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"></path></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"></path></svg>
|
|
</a>
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kernelkit/infix
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="https://kernelkit.org/" title="User's Guide" class="md-nav__button md-logo" aria-label="User's Guide" data-md-component="logo">
|
|
|
|
<img src="../logo-plain.png" alt="logo">
|
|
|
|
</a>
|
|
User's Guide
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kernelkit/infix
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
CLI
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
CLI
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/introduction/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/configure/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Configuration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/keybindings/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Keybindings
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/netcalc/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Network Calculator
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/tcpdump/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Network Monitoring
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/quick/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Quickstart Guide
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/text-editor/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Text Editor
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/upgrade/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Upgrading
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../container/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Docker Containers
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Networking
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Networking
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Network Configuration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Network Configuration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#interface-lego" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Interface LEGO®
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#data-plane" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Data Plane
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Data Plane">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#general" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
General
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="General">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fixed-custom-mac" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Fixed custom MAC
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#chassis-mac" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Chassis MAC
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#chassis-mac-with-offset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Chassis MAC, with offset
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bridging" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Bridging
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Bridging">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mac-bridge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
MAC Bridge
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#vlan-filtering-bridge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VLAN Filtering Bridge
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multicast-filtering-and-snooping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Multicast Filtering and Snooping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Multicast Filtering and Snooping">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#terminology-abbreviations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Terminology & Abbreviations
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#forwarding-of-ieee-reserved-group-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Forwarding of IEEE Reserved Group Addresses
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#link-aggregation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Link Aggregation
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Link Aggregation">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#basic-configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Basic Configuration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lacp-configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LACP Configuration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#link-flapping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Link Flapping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operational-status-overview" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Operational Status, Overview
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operational-status-detail" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Operational Status, Detail
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#example-switch-uplink-with-lacp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Example: Switch Uplink with LACP
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#vlan-interfaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VLAN Interfaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#physical-ethernet-interfaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Physical Ethernet Interfaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Physical Ethernet Interfaces">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ethernet-settings-and-status" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Ethernet Settings and Status
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuring-fixed-speed-and-duplex" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Configuring fixed speed and duplex
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ethernet-statistics" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Ethernet statistics
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#veth-pairs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VETH Pairs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#management-plane" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Management Plane
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Management Plane">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 Address Assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 Address Assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Examples
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#static-and-link-local-ipv4-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Static and link-local IPv4 addresses
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#use-of-dhcp-for-ipv4-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Use of DHCP for IPv4 address assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#use-of-dhcpv6-for-ipv6-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Use of DHCPv6 for IPv6 address assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#disabling-ipv6-link-local-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Disabling IPv6 link-local address(es)
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#static-ipv6-address" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Static IPv6 address
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#stateless-auto-configuration-of-global-ipv6-address" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Stateless Auto-configuration of Global IPv6 Address
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Random Link Identifiers for IPv6 Stateless Autoconfiguration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-forwarding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 forwarding
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-forwarding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 forwarding
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#routing-support" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Routing support
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Routing support">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-static-routes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 Static routes
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-static-routes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 Static routes
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospfv2-routing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPFv2 Routing
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="OSPFv2 Routing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-area-types" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF area types
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bidirectional-forwarding-detection-bfd" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Bidirectional Forwarding Detection (BFD)
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-interface-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF interface settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-global-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF global settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#debug-ospfv2" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Debug OSPFv2
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-routing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP Routing
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="RIP Routing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-interface-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP interface settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-global-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP global settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#debug-ripv2" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Debug RIPv2
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#view-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
View routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="View routing table">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#route-preference" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Route Preference
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#source-protocol" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Source protocol
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../firewall/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Firewall Configuration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../qos/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Quality of Service
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../eth-counters/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
RMON Counters
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../tunnels/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Tunneling (L2/L3)
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../wifi/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Wireless LAN (WiFi)
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Services
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Services
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../discovery/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Device Discovery
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../dhcp/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
DHCP Server
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
System
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
System
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../boot/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Boot Procedure
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../system/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Configuration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../hardware/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Hardware Info & Status
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../management/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Management
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../syslog/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Syslog Support
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../support/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Support Data
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../upgrade/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Upgrade
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Scripting
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Scripting
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../scripting/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../scripting-sysrepocfg/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Legacy Scripting
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../scripting-prod/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Production Testing
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../scripting-netconf/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
With NETCONF
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../scripting-restconf/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
With RESTCONF
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Developer's Corner
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Developer's Corner
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../branding/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Branding & Releases
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../developers-guide/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Developer's Guide
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../override-package/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Developing with Buildroot
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../netboot/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Netboot HowTo
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../testing/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Regression Testing
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../test-arch/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Test System Architecture
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../virtual/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Virtual Environments
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../vpd/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Vital Product Data (VPD)
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../license/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Origin & Licensing
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#interface-lego" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Interface LEGO®
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#data-plane" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Data Plane
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Data Plane">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#general" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
General
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="General">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fixed-custom-mac" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Fixed custom MAC
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#chassis-mac" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Chassis MAC
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#chassis-mac-with-offset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Chassis MAC, with offset
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bridging" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Bridging
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Bridging">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mac-bridge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
MAC Bridge
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#vlan-filtering-bridge" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VLAN Filtering Bridge
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#multicast-filtering-and-snooping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Multicast Filtering and Snooping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Multicast Filtering and Snooping">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#terminology-abbreviations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Terminology & Abbreviations
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#forwarding-of-ieee-reserved-group-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Forwarding of IEEE Reserved Group Addresses
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#link-aggregation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Link Aggregation
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Link Aggregation">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#basic-configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Basic Configuration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lacp-configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LACP Configuration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#link-flapping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Link Flapping
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operational-status-overview" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Operational Status, Overview
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operational-status-detail" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Operational Status, Detail
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#example-switch-uplink-with-lacp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Example: Switch Uplink with LACP
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#vlan-interfaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VLAN Interfaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#physical-ethernet-interfaces" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Physical Ethernet Interfaces
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Physical Ethernet Interfaces">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ethernet-settings-and-status" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Ethernet Settings and Status
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuring-fixed-speed-and-duplex" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Configuring fixed speed and duplex
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ethernet-statistics" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Ethernet statistics
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#veth-pairs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
VETH Pairs
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#management-plane" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Management Plane
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Management Plane">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 Address Assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 Address Assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Examples
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#static-and-link-local-ipv4-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Static and link-local IPv4 addresses
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#use-of-dhcp-for-ipv4-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Use of DHCP for IPv4 address assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#use-of-dhcpv6-for-ipv6-address-assignment" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Use of DHCPv6 for IPv6 address assignment
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#disabling-ipv6-link-local-addresses" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Disabling IPv6 link-local address(es)
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#static-ipv6-address" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Static IPv6 address
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#stateless-auto-configuration-of-global-ipv6-address" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Stateless Auto-configuration of Global IPv6 Address
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Random Link Identifiers for IPv6 Stateless Autoconfiguration
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-forwarding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 forwarding
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-forwarding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 forwarding
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#routing-support" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Routing support
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Routing support">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-static-routes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 Static routes
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-static-routes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 Static routes
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospfv2-routing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPFv2 Routing
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="OSPFv2 Routing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-area-types" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF area types
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#bidirectional-forwarding-detection-bfd" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Bidirectional Forwarding Detection (BFD)
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-interface-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF interface settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ospf-global-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
OSPF global settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#debug-ospfv2" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Debug OSPFv2
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-routing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP Routing
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="RIP Routing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-interface-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP interface settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#rip-global-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
RIP global settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#debug-ripv2" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Debug RIPv2
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#view-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
View routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="View routing table">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv4-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv4 routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ipv6-routing-table" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
IPv6 routing table
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#route-preference" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Route Preference
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#source-protocol" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Source protocol
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<nav class="md-path" aria-label="Navigation">
|
|
<ol class="md-path__list">
|
|
|
|
|
|
|
|
|
|
<li class="md-path__item">
|
|
<a href=".." class="md-path__link">
|
|
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-path__item">
|
|
<a href="./" class="md-path__link">
|
|
|
|
<span class="md-ellipsis">
|
|
Networking
|
|
</span>
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ol>
|
|
</nav>
|
|
|
|
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="network-configuration">Network Configuration<a class="headerlink" href="#network-configuration" title="Permanent link">¶</a></h1>
|
|
<p>Infix aims to support all Linux Networking constructs. The YANG models
|
|
used to describe the system are chosen to fit well and leverage the
|
|
underlying Linux kernel's capabilities. The <a href="https://www.rfc-editor.org/rfc/rfc8343">ietf-interfaces.yang</a>
|
|
model forms the base, extended with <a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a> and other layer-3
|
|
IETF models. The layer-2 bridge and aggregate models are defined by
|
|
Infix to exploit the unique features not available in IEEE models.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Important</p>
|
|
<p>When issuing <code>leave</code> to activate your changes, remember to also save
|
|
your settings, <code>copy running-config startup-config</code>. See the <a href="../cli/introduction/">CLI
|
|
Introduction</a> for a background.</p>
|
|
</div>
|
|
<h2 id="interface-lego">Interface LEGO®<a class="headerlink" href="#interface-lego" title="Permanent link">¶</a></h2>
|
|
<p>The network building blocks available in Linux are akin to the popular
|
|
LEGO® bricks.</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/lego.svg" data-desc-position="bottom"><img alt="Linux Networking Blocks" src="../img/lego.svg"></a></p>
|
|
<p>There are two types of relationships that can link two blocks together:</p>
|
|
<ol>
|
|
<li><strong>Lower-to-upper</strong>: Visually represented by an extruding square
|
|
connected upwards to a square socket. An interface <em>can only have
|
|
a single</em> lower-to-upper relationship, i.e., it can be attached to
|
|
a single upper interface like a bridge or a LAG. In <code>iproute2</code>
|
|
parlance, this corresponds to the interface's <code>master</code> setting</li>
|
|
<li><strong>Upper-to-lower</strong>: Visually represented by an extruding semicircle
|
|
connected downwards to a semicircle socket. The lower interface in
|
|
these relationships <em>accepts multiple</em> upper-to-lower relationships
|
|
from different upper blocks. E.g., multiple VLANs and IP address
|
|
blocks can be connected to the same lower interface</li>
|
|
</ol>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/lego-relations.svg" data-desc-position="bottom"><img alt="Stacking order dependencies" src="../img/lego-relations.svg"></a></p>
|
|
<p>An interface may simultaneously have a <em>lower-to-upper</em> relation to some
|
|
other interface, and be the target of one or more <em>upper-to-lower</em>
|
|
relationships. It is valid, for example, for a physical port to be
|
|
attached to a bridge, but also have a VLAN interface stacked on top of
|
|
it. In this example, traffic assigned to the VLAN in question would be
|
|
diverted to the VLAN interface before entering the bridge, while all
|
|
other traffic would be bridged as usual.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><strong>Type</strong></th>
|
|
<th><strong>Yang Model</strong></th>
|
|
<th><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>bridge</td>
|
|
<td>infix-if-bridge</td>
|
|
<td>SW implementation of an IEEE 802.1Q bridge</td>
|
|
</tr>
|
|
<tr>
|
|
<td>ip</td>
|
|
<td>ietf-ip, infix-ip</td>
|
|
<td>IP address to the subordinate interface</td>
|
|
</tr>
|
|
<tr>
|
|
<td>vlan</td>
|
|
<td>infix-if-vlan</td>
|
|
<td>Capture all traffic belonging to a specific 802.1Q VID</td>
|
|
</tr>
|
|
<tr>
|
|
<td>lag</td>
|
|
<td>infix-if-lag</td>
|
|
<td>Link aggregation, static and IEEE 802.3ad (LACP)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>lo</td>
|
|
<td>ietf-interfaces</td>
|
|
<td>Software loopback interface</td>
|
|
</tr>
|
|
<tr>
|
|
<td>eth</td>
|
|
<td>ieee802-ethernet-interface</td>
|
|
<td>Physical Ethernet device/port.</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>infix-ethernet-interface</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>veth</td>
|
|
<td>infix-if-veth</td>
|
|
<td>Virtual Ethernet pair, typically one end is in a container</td>
|
|
</tr>
|
|
<tr>
|
|
<td><em>common</em></td>
|
|
<td>ietf-interfaces,</td>
|
|
<td>Properties common to all interface types</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>infix-interfaces</td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="data-plane">Data Plane<a class="headerlink" href="#data-plane" title="Permanent link">¶</a></h2>
|
|
<p>The blocks you choose, and how you connect them, defines your data plane.
|
|
Here we see an example of how to bridge a virtual port with a physical
|
|
LAN.</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/dataplane.svg" data-desc-position="bottom"><img alt="Example of a 4-port switch with a link aggregate and a VETH pair to a container" src="../img/dataplane.svg"></a></p>
|
|
<p>Depending on the (optional) VLAN filtering of the bridge, the container
|
|
may have full or limited connectivity with outside ports, as well as the
|
|
internal CPU.</p>
|
|
<p>In fact the virtual port connected to the bridge can be member of
|
|
several VLANs, with each VLAN being an interface with an IP address
|
|
inside the container.</p>
|
|
<p>Thanks to Linux, and technologies like switchdev, that allow you to
|
|
split a switching fabric into unique (isolated) ports, the full
|
|
separation and virtualization of all Ethernet layer properties are
|
|
possible to share with a container. Meaning, all the building blocks
|
|
used on the left hand side can also be used freely on the right hand
|
|
side as well.</p>
|
|
<h3 id="general">General<a class="headerlink" href="#general" title="Permanent link">¶</a></h3>
|
|
<p>General interface settings include <code>type</code>, <code>enable</code>, custom MAC address,
|
|
and text <code>description</code>. Other settings have their own sections, below.</p>
|
|
<p>The <code>type</code> is important to set when configuring devices remotely because
|
|
unlike the CLI, a NETCONF or RESTCONF session cannot guess the interface
|
|
type for you. The operating system provides an override of the
|
|
available interface types.</p>
|
|
<p>An <code>enabled</code> interface can be inspected using the operational datastore,
|
|
nodes <code>admin-state</code> and <code>oper-state</code> show the status, . Possible values
|
|
are listed in the YANG model.</p>
|
|
<p>The <code>custom-phys-address</code> can be used to set an interface's MAC address.
|
|
This is an extension to the ietf-interfaces YANG model, which defines
|
|
<code>phys-address</code> as read-only<sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup>. The following shows the different
|
|
configuration options.</p>
|
|
<p>The <code>description</code> is saved as Linux <code>ifalias</code> on an interface. It is a
|
|
free-form string, useful for describing purpose or just adding comments
|
|
for remote debugging, e.g., using the operational datastore.</p>
|
|
<div class="admonition warning">
|
|
<p class="admonition-title">Caution</p>
|
|
<p>There is no validation or safety checks performed by the system when
|
|
using <code>custom-phys-address</code>. In particular the <code>offset</code> variant can
|
|
be dangerous to use -- pay attention to the meaning of bits in the
|
|
upper-most octet: local bit, multicast/group, etc.</p>
|
|
</div>
|
|
<h4 id="fixed-custom-mac">Fixed custom MAC<a class="headerlink" href="#fixed-custom-mac" title="Permanent link">¶</a></h4>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@example:/config/> edit interface veth0a
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>admin@example:/config/interface/veth0a/> set custom-phys-address static 00:ab:00:11:22:33
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>=> 00:ab:00:11:22:33
|
|
</code></pre></div>
|
|
<h4 id="chassis-mac">Chassis MAC<a class="headerlink" href="#chassis-mac" title="Permanent link">¶</a></h4>
|
|
<p>Chassis MAC, sometimes also referred to as base MAC. In these two
|
|
examples it is <code>00:53:00:c0:ff:ee</code>.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@example:/config/> edit interface veth0a
|
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>admin@example:/config/interface/veth0a/> set custom-phys-address chassis
|
|
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
|
|
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>=> 00:53:00:c0:ff:ee
|
|
</code></pre></div>
|
|
<h4 id="chassis-mac-with-offset">Chassis MAC, with offset<a class="headerlink" href="#chassis-mac-with-offset" title="Permanent link">¶</a></h4>
|
|
<p>When constructing a derived address it is recommended to set the locally
|
|
administered bit. Same chassis MAC as before.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@example:/config/> edit interface veth0a
|
|
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>admin@example:/config/interface/veth0a/> set custom-phys-address chassis offset 02:00:00:00:00:02
|
|
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>
|
|
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>=> 02:53:00:c0:ff:f0
|
|
</code></pre></div>
|
|
<h3 id="bridging">Bridging<a class="headerlink" href="#bridging" title="Permanent link">¶</a></h3>
|
|
<p>This is the most central part of the system. A bridge is a switch, and
|
|
a switch is a bridge. In Linux, setting up a bridge with ports
|
|
connected to physical switch fabric, means you manage the actual switch
|
|
fabric!</p>
|
|
<h4 id="mac-bridge">MAC Bridge<a class="headerlink" href="#mac-bridge" title="Permanent link">¶</a></h4>
|
|
<p>In Infix ports are by default not switch ports, unless the customer
|
|
specific factory config sets it up this way. To enable switching, with
|
|
offloading if you have a switch chipset, between ports you create a
|
|
bridge and then add ports to that bridge. Like this:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>admin@example:/config/> edit interface br0
|
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>admin@example:/config/interface/br0/> up
|
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>admin@example:/config/> set interface eth0 bridge-port bridge br0
|
|
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>admin@example:/config/> set interface eth1 bridge-port bridge br0
|
|
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>admin@example:/config/> leave
|
|
</code></pre></div>
|
|
<p>Here we add two ports to bridge <code>br0</code>: <code>eth0</code> and <code>eth1</code>.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>The CLI has several built-in helpers governed by convention. E.g.,
|
|
naming bridges <code>brN</code>, where <code>N</code> is a number, the type is <em>inferred</em>
|
|
automatically and unlocks all bridge features. Other conventions are
|
|
<code>vethNA</code>, where <code>N</code> is a number and <code>A</code> is a letter ('a' for access
|
|
port and 'b' for bridge side is common), and <code>ethN.M</code> for VLAN M on
|
|
top of <code>ethN</code>, or <code>dockerN</code> for a IP masquerading container bridge.</p>
|
|
<p>Note, this inference only works with the CLI, configuring networking
|
|
over NETCONF or RESTCONF requires setting the type explicitly.</p>
|
|
</div>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/mac-bridge.svg" data-desc-position="bottom"><img alt="A MAC bridge with two ports" src="../img/mac-bridge.svg"></a></p>
|
|
<p>It is possible to create multiple MAC bridges, however, it is
|
|
currently<sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup> <em>not recommended</em> to use more than one MAC bridge on
|
|
products with Marvell LinkStreet switching ASICs. A VLAN filtering
|
|
bridge should be used instead.</p>
|
|
<h4 id="vlan-filtering-bridge">VLAN Filtering Bridge<a class="headerlink" href="#vlan-filtering-bridge" title="Permanent link">¶</a></h4>
|
|
<p>By default bridges in Linux do not filter based on VLAN tags. This can
|
|
be enabled when creating a bridge by adding a port to a VLAN as a tagged
|
|
or untagged member. Use the port default VID (PVID) setting to control
|
|
VLAN association for traffic ingressing a port untagged (default PVID:
|
|
1).</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>admin@example:/config/> edit interface br0
|
|
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>admin@example:/config/interface/br0/> up
|
|
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>admin@example:/config/> set interface eth0 bridge-port bridge br0
|
|
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>admin@example:/config/> set interface eth0 bridge-port pvid 10
|
|
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>admin@example:/config/> set interface eth1 bridge-port bridge br0
|
|
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>admin@example:/config/> set interface eth1 bridge-port pvid 20
|
|
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>admin@example:/config/> edit interface br0
|
|
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>admin@example:/config/interface/br0/> set bridge vlans vlan 10 untagged eth0
|
|
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a>admin@example:/config/interface/br0/> set bridge vlans vlan 20 untagged eth1
|
|
</code></pre></div>
|
|
<p>This sets <code>eth0</code> as an untagged member of VLAN 10 and <code>eth1</code> as an
|
|
untagged member of VLAN 20. Switching between these ports is thus
|
|
prohibited.</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/vlan-bridge.svg" data-desc-position="bottom"><img alt="A VLAN bridge with two VLANs" src="../img/vlan-bridge.svg"></a></p>
|
|
<p>To terminate a VLAN in the switch itself, either for switch management
|
|
or for routing, the bridge must become a (tagged) member of the VLAN.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@example:/config/interface/br0/> set bridge vlans vlan 10 tagged br0
|
|
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>admin@example:/config/interface/br0/> set bridge vlans vlan 20 tagged br0
|
|
</code></pre></div>
|
|
<p>To route or to manage via a VLAN, a VLAN interface needs to be created
|
|
on top of the bridge, see section <a href="#vlan-interfaces">VLAN Interfaces</a>
|
|
below for more on this topic.</p>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>In some use-cases only a single management VLAN on the bridge is used.
|
|
For the example above, if the bridge itself is an untagged member only
|
|
in VLAN 10, IP addresses can be set directly on the bridge without the
|
|
need for dedicated VLAN interfaces on top of the bridge.</p>
|
|
</div>
|
|
<h4 id="multicast-filtering-and-snooping">Multicast Filtering and Snooping<a class="headerlink" href="#multicast-filtering-and-snooping" title="Permanent link">¶</a></h4>
|
|
<p>Multicast filtering in the bridge is handled by the bridge itself. It
|
|
can filter both IP multicast and MAC multicast. For IP multicast it
|
|
also supports "snooping", i.e., IGMP and MLD, to automatically reduce
|
|
the broadcast effects of multicast. See the next section for a summary
|
|
of the <a href="#terminology-abbreviations">terminology used</a>.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Important</p>
|
|
<p>Currently there is no way to just enable multicast filtering without
|
|
also enabling snooping. This may change in the future, in which case
|
|
a <code>filtering</code> enabled setting will be made available along with the
|
|
existing <code>snooping</code> setting.</p>
|
|
</div>
|
|
<p>When creating your bridge you must decide if you need a VLAN filtering
|
|
bridge or a plain bridge (see previous section). Multicast filtering is
|
|
supported for either, but take note that it must be enabled and set up
|
|
per VLAN when VLAN filtering is enabled -- there are no global multicast
|
|
settings in this operating mode.</p>
|
|
<p>In the following example we have a regular 8-port bridge without VLAN
|
|
filtering. We focus on the multicast specific settings:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>admin@example:/config/> edit interface br0
|
|
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>admin@example:/config/interface/br0/> set bridge multicast snooping
|
|
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>admin@example:/config/interface/br0/> set ipv4 address 192.168.2.1 prefix-length 24
|
|
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a>admin@example:/config/interface/br0/> leave
|
|
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a>admin@example:/> copy running-config startup-config
|
|
</code></pre></div>
|
|
<p>Here we enable snooping and set a static IPv4 address so that the switch
|
|
can take part in IGMP querier elections. (MLD querier election
|
|
currently not supported.) We can inspect the current state:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>admin@example:/> show ip multicast
|
|
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>Multicast Overview
|
|
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>Query Interval (default): 125 sec
|
|
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a>Router Timeout : 255
|
|
<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a>Fast Leave Ports :
|
|
<a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a>Router Ports :
|
|
<a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a>Flood Ports : e0, e1, e2, e3, e4, e5, e6, e7
|
|
<a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a>
|
|
<a id="__codelineno-7-9" name="__codelineno-7-9" href="#__codelineno-7-9"></a>Interface VID Querier State Interval Timeout Ver
|
|
<a id="__codelineno-7-10" name="__codelineno-7-10" href="#__codelineno-7-10"></a>br0 192.168.2.1 Up 125 None 3
|
|
<a id="__codelineno-7-11" name="__codelineno-7-11" href="#__codelineno-7-11"></a>
|
|
<a id="__codelineno-7-12" name="__codelineno-7-12" href="#__codelineno-7-12"></a>Bridge VID Multicast Group Ports
|
|
<a id="__codelineno-7-13" name="__codelineno-7-13" href="#__codelineno-7-13"></a>br0 224.1.1.1 e3, e2
|
|
<a id="__codelineno-7-14" name="__codelineno-7-14" href="#__codelineno-7-14"></a>br0 ff02::6a br0
|
|
</code></pre></div>
|
|
<p>This is a rather small LAN, so our bridge has already become the elected
|
|
IGMP querier. We see it is ours because the timeout is <code>None</code>, and we
|
|
recognize the IP address the system has detected, as ours. We can also
|
|
see two ports that have joined the same IPv4 multicast group, 224.1.1.1,
|
|
and one join from the system itself for the IPv6 group ff02::6a.</p>
|
|
<p>Now, let us see what happens when we add another bridge, this time with
|
|
VLAN filtering enabled. We skip the boring parts about how to move
|
|
ports e4-e7 to <code>br1</code> and assign them to VLANs, and again, focus on the
|
|
multicast bits only:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@example:/config/> edit interface br1
|
|
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>admin@example:/config/interface/br1/> set bridge vlans vlan 1 multicast snooping
|
|
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>admin@example:/config/interface/br1/> set bridge vlans vlan 2 multicast snooping
|
|
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a>admin@example:/config/interface/br1/> leave
|
|
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a>admin@example:/> copy running-config startup-config
|
|
</code></pre></div>
|
|
<p>Let us see what we get:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>admin@example:/> show ip multicast
|
|
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>Multicast Overview
|
|
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>Query Interval (default): 125 sec
|
|
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>Router Timeout : 255
|
|
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a>Fast Leave Ports : e5
|
|
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a>Router Ports : e1, e2, e5, e6, e7
|
|
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>Flood Ports : e1, e2, e3, e4, e5, e6, e7, e8
|
|
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a>
|
|
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a>Interface VID Querier State Interval Timeout Ver
|
|
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a>br0 192.168.2.1 Up 125 None 3
|
|
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a>br1 1 0.0.0.0 Up 125 None 3
|
|
<a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a>br1 2 0.0.0.0 Up 125 None 3
|
|
<a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a>
|
|
<a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a>Bridge VID Multicast Group Ports
|
|
<a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a>br0 224.1.1.1 e2
|
|
<a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a>br0 ff02::fb br0
|
|
<a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a>br0 ff02::6a br0
|
|
<a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a>br0 ff02::1:ff00:0 br0
|
|
<a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a>br1 1 224.1.1.1 e5
|
|
<a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a>br1 2 224.1.1.1 e7
|
|
<a id="__codelineno-9-21" name="__codelineno-9-21" href="#__codelineno-9-21"></a>br1 1 ff02::fb br1
|
|
<a id="__codelineno-9-22" name="__codelineno-9-22" href="#__codelineno-9-22"></a>br1 1 ff02::1:ff00:0 br1
|
|
</code></pre></div>
|
|
<p>In this setup we have a lot more going on. Multiple multicast router
|
|
ports have been detected, and behind the scenes someone has also added
|
|
an IGMP/MLD fast-leave port.</p>
|
|
<h5 id="terminology-abbreviations">Terminology & Abbreviations<a class="headerlink" href="#terminology-abbreviations" title="Permanent link">¶</a></h5>
|
|
<ul>
|
|
<li><strong>IGMP</strong>: Internet Group Membership Protocol, multicast subscription
|
|
for IPv4, for details see <a href="https://www.rfc-editor.org/rfc/rfc3376.html">RFC3376</a></li>
|
|
<li><strong>MLD</strong>: Multicast Listener Discovery (Protocol), multicast
|
|
subscription for IPv6, for details see <a href="https://www.rfc-editor.org/rfc/rfc3810.html">RFC3810</a></li>
|
|
<li><strong>Unknown/Unregistered multicast</strong>: multicast groups that are <em>not</em>
|
|
in the multicast forwarding database (MDB)</li>
|
|
<li><strong>Known/Registered multicast</strong>: multicast groups that <em>are</em> in the
|
|
multicast forwarding database (MDB)</li>
|
|
<li><strong>MDB</strong>: the multicast forwarding database, consists of filters for
|
|
multicast groups, directing where multicast is allowed to egress. A
|
|
filter entry consists of a group and a port list. The bridge filters
|
|
with a unique database per VLAN, in the same was as the unicast FDB</li>
|
|
<li><strong>Join/Leave</strong>: the terminology used in earlier versions of the two
|
|
protocols to subscribe and unsubscribe to a multicast group. For
|
|
more information, see <em>Membership Report</em></li>
|
|
<li><strong>Membership Report</strong> A membership report is sent by end-devices and
|
|
forwarded by switches to the elected querier on the LAN. They
|
|
consist of multiple "join" and "leave" operations on groups. They
|
|
can also, per group, list which senders to allow or block. Switches
|
|
usually only support the group subscription, and even more common
|
|
also only support filtering on the MAC level<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup></li>
|
|
<li><strong>Querier election</strong>: the process of determining who is the elected
|
|
IGMP/MLD querier on a LAN. Lowest numerical IP address wins, the
|
|
special address 0.0.0.0 (proxy querier) never wins</li>
|
|
<li><strong>Proxy querier</strong>: when no better querier exists on a LAN, one or
|
|
more devices can send proxy queries with source address 0.0.0.0 (or
|
|
:: for IPv6). See <strong>Query Interval</strong>, below, why this is a good
|
|
thing</li>
|
|
<li><strong>Query interval</strong>: the time in seconds between two queries from an
|
|
IGMP/MLD querier. It is not uncommon that end-devices do not send
|
|
their membership reports unless they first hear a query</li>
|
|
<li><strong>Fast Leave</strong>: set on a bridge port to ensure multicast is pruned as
|
|
quickly as possible when a "leave" membership report is received. In
|
|
effect, this option marks the port as directly connected to an
|
|
end-device. When not set (default), a query with timeout is first
|
|
sent to ensure no unintentional loss of multicast is incurred</li>
|
|
<li><strong>Router port</strong>: can be both configured statically and detected at
|
|
runtime based on connected devices, usually multicast routers. On
|
|
a router port <em>all</em> multicast is forwarded, both known and unknown</li>
|
|
<li><strong>Flood port</strong>: set on a bridge port (default: enabled) to ensure
|
|
all <em>unknown</em> multicast is forwarded</li>
|
|
<li><strong>Router timeout</strong>: the time in seconds until a querier is deemed to
|
|
have been lost and another device (switch/router) takes over. In the
|
|
tables shown above, a <em>None</em> timeout is declared when the current
|
|
device is the active querier</li>
|
|
</ul>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>The reason why multicast flooding is enabled by default is to ensure
|
|
safe co-existence with MAC multicast, which is common in industrial
|
|
networks. It also allows end devices that do not know of IGMP/MLD to
|
|
communicate over multicast as long as the group they have chosen is
|
|
not used by other IGMP/MLD aware devices on the LAN.</p>
|
|
<p>As soon as an IGMP/MLD membership report to "join" a group is received
|
|
the group is added to the kernel MDB and forwarding to other ports
|
|
stop. The only exception to this rule is multicast router ports.</p>
|
|
<p>If your MAC multicast forwarding is not working properly, it may be
|
|
because an IP multicast group maps to the same MAC address. Please
|
|
see <a href="https://www.rfc-editor.org/rfc/rfc1112.html">RFC 1112</a> for details. Use static multicast router
|
|
ports, or static multicast MAC filters, to mitigate.</p>
|
|
</div>
|
|
<h4 id="forwarding-of-ieee-reserved-group-addresses">Forwarding of IEEE Reserved Group Addresses<a class="headerlink" href="#forwarding-of-ieee-reserved-group-addresses" title="Permanent link">¶</a></h4>
|
|
<p>Addresses in the range <code>01:80:C2:00:00:0X</code> are used by various bridge
|
|
signaling protocols, and are not forwarded by default. Still, it is
|
|
sometimes useful to let the bridge forward such packets, this can be
|
|
done by specifying protocol names or the last address <em>nibble</em> as
|
|
decimal value <code>0..15</code>:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>admin@example:/config/> edit interface br0 bridge
|
|
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>admin@example:/config/interface/br0/bridge/> set ieee-group-forward # Tap the ? ley for alternatives
|
|
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> [0..15] List of IEEE link-local protocols to forward, e.g., STP, LLDP
|
|
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> dot1x 802.1X Port-Based Network Access Control.
|
|
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a> lacp 802.3 Slow Protocols, e.g., LACP.
|
|
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a> lldp 802.1AB Link Layer Discovery Protocol (LLDP).
|
|
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a> stp Spanning Tree (STP/RSPT/MSTP).
|
|
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a>admin@example:/config/interface/br0/bridge/> set ieee-group-forward
|
|
</code></pre></div>
|
|
<p>The following example configures bridge <em>br0</em> to forward LLDP packets.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>admin@example:/config/interface/br0/bridge/> set ieee-group-forward lldp
|
|
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>admin@example:/config/interface/br0/bridge/>
|
|
</code></pre></div>
|
|
<h3 id="link-aggregation">Link Aggregation<a class="headerlink" href="#link-aggregation" title="Permanent link">¶</a></h3>
|
|
<p>A link aggregate, or <em>lag</em>, allows multiple physical interfaces to be
|
|
combined into a single logical interface, providing increased bandwidth
|
|
(in some cases) and redundancy (primarily). Two modes of qualifying lag
|
|
member ports are available:</p>
|
|
<ol>
|
|
<li><strong>static</strong>: Active members selected based on link status (carrier)</li>
|
|
<li><strong>lacp:</strong> IEEE 802.3ad Link Aggregation Control Protocol</li>
|
|
</ol>
|
|
<p>In LACP mode, LACPDUs are exchanged by the link partners to qualify each
|
|
lag member, while in static mode only carrier is used. This additional
|
|
exchange in LACP ensures traffic can be forwarded in both directions.</p>
|
|
<p>Traffic distribution, for both modes, across the active lag member ports
|
|
is determined by the hash policy<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>. It uses an XOR of the source,
|
|
destination MAC addresses and the EtherType field. This, IEEE
|
|
802.3ad-compliant, algorithm will place all traffic to a particular
|
|
network peer on the same link. Meaning there is no increased bandwidth
|
|
for communication between two specific devices.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>Similar to other interface types, naming your interface <code>lagN</code>, where
|
|
<code>N</code> is a number, allows the CLI to automatically infer the interface
|
|
type as LAG.</p>
|
|
</div>
|
|
<h4 id="basic-configuration">Basic Configuration<a class="headerlink" href="#basic-configuration" title="Permanent link">¶</a></h4>
|
|
<p>Creating a link aggregate interface and adding member ports:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>admin@example:/config/> edit interface lag0
|
|
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>admin@example:/config/interface/lag0/> set lag mode static
|
|
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>admin@example:/config/interface/lag0/> end
|
|
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>admin@example:/config/> set interface eth7 lag-port lag lag0
|
|
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>admin@example:/config/> set interface eth8 lag-port lag lag0
|
|
<a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>admin@example:/config/> leave
|
|
</code></pre></div>
|
|
<p>A static lag responds only to link (carrier) changes of member ports.
|
|
E.g., in this example egressing traffic is continuously distributed over
|
|
the two links until link down on one link is detected, triggering all
|
|
traffic to be steered to the sole remaining link.</p>
|
|
<h4 id="lacp-configuration">LACP Configuration<a class="headerlink" href="#lacp-configuration" title="Permanent link">¶</a></h4>
|
|
<p>LACP mode provides dynamic negotiation of the link aggregate. Key
|
|
settings include:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>admin@example:/config/> edit interface lag0
|
|
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>admin@example:/config/interface/lag0/> set lag mode lacp
|
|
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>admin@example:/config/interface/lag0/> set lag lacp mode passive
|
|
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a>admin@example:/config/interface/lag0/> set lag lacp rate fast
|
|
<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>admin@example:/config/interface/lag0/> set lag lacp system-priority 100
|
|
</code></pre></div>
|
|
<p>LACP mode supports two operational modes:</p>
|
|
<ul>
|
|
<li><strong>active:</strong> Initiates negotiation by sending LACPDUs (default)</li>
|
|
<li><strong>passive:</strong> Waits for peer to initiate negotiation</li>
|
|
</ul>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>At least one end of the link must be in active mode for negotiation to occur.</p>
|
|
</div>
|
|
<p>The LACP rate setting controls protocol timing:</p>
|
|
<ul>
|
|
<li><strong>slow:</strong> LACPDUs sent every 30 seconds, with 90 second timeout (default)</li>
|
|
<li><strong>fast:</strong> LACPDUs sent every second, with 3 second timeout</li>
|
|
</ul>
|
|
<h4 id="link-flapping">Link Flapping<a class="headerlink" href="#link-flapping" title="Permanent link">¶</a></h4>
|
|
<p>To protect against link flapping, debounce timers can be configured to
|
|
delay link qualification. Usually only the <code>up</code> delay is needed:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>admin@example:/config/interface/lag0/lag/link-monitor/> edit debounce
|
|
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> set up 500
|
|
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> set down 200
|
|
</code></pre></div>
|
|
<h4 id="operational-status-overview">Operational Status, Overview<a class="headerlink" href="#operational-status-overview" title="Permanent link">¶</a></h4>
|
|
<p>Like other interfaces, link aggregates are also available in the general
|
|
interfaces overview in the CLI admin-exec context. Here is the above
|
|
static mode aggregate:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>admin@example:/> show interfaces
|
|
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>INTERFACE PROTOCOL STATE DATA
|
|
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>lo ethernet UP 00:00:00:00:00:00
|
|
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> ipv4 127.0.0.1/8 (static)
|
|
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> ipv6 ::1/128 (static)
|
|
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a>.
|
|
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a>.
|
|
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a>.
|
|
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a>lag0 lag UP static: balance-xor, hash: layer2
|
|
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a>│ ethernet UP 00:a0:85:00:02:00
|
|
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a>├ eth7 lag ACTIVE
|
|
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a>└ eth8 lag ACTIVE
|
|
</code></pre></div>
|
|
<p>Same aggregate, but in LACP mode:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>admin@example:/> show interfaces
|
|
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>INTERFACE PROTOCOL STATE DATA
|
|
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>lo ethernet UP 00:00:00:00:00:00
|
|
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> ipv4 127.0.0.1/8 (static)
|
|
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> ipv6 ::1/128 (static)
|
|
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>.
|
|
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a>.
|
|
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a>.
|
|
<a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a>lag0 lag UP lacp: active, rate: fast (1s), hash: layer2
|
|
<a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a>│ ethernet UP 00:a0:85:00:02:00
|
|
<a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>├ eth7 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
|
<a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a>└ eth8 lag ACTIVE active, short_timeout, aggregating, in_sync, collecting, distributing
|
|
</code></pre></div>
|
|
<h4 id="operational-status-detail">Operational Status, Detail<a class="headerlink" href="#operational-status-detail" title="Permanent link">¶</a></h4>
|
|
<p>In addition to basic status shown in the interface overview, detailed
|
|
LAG status can be inspected:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>admin@example:/> show interface lag0
|
|
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>name : lag0
|
|
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>index : 25
|
|
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>mtu : 1500
|
|
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a>operational status : up
|
|
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a>physical address : 00:a0:85:00:02:00
|
|
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a>lag mode : static
|
|
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a>lag type : balance-xor
|
|
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a>lag hash : layer2
|
|
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a>link debounce up : 0 msec
|
|
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a>link debounce down : 0 msec
|
|
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a>ipv4 addresses :
|
|
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a>ipv6 addresses :
|
|
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a>in-octets : 0
|
|
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a>out-octets : 2142
|
|
</code></pre></div>
|
|
<p>Same aggregate, but in LACP mode:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>admin@example:/> show interface lag0
|
|
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>name : lag0
|
|
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>index : 24
|
|
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a>mtu : 1500
|
|
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>operational status : up
|
|
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a>physical address : 00:a0:85:00:02:00
|
|
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a>lag mode : lacp
|
|
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a>lag hash : layer2
|
|
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a>lacp mode : active
|
|
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a>lacp rate : fast (1s)
|
|
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a>lacp aggregate id : 1
|
|
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a>lacp system priority: 65535
|
|
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a>lacp actor key : 9
|
|
<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a>lacp partner key : 9
|
|
<a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a>lacp partner mac : 00:a0:85:00:03:00
|
|
<a id="__codelineno-18-16" name="__codelineno-18-16" href="#__codelineno-18-16"></a>link debounce up : 0 msec
|
|
<a id="__codelineno-18-17" name="__codelineno-18-17" href="#__codelineno-18-17"></a>link debounce down : 0 msec
|
|
<a id="__codelineno-18-18" name="__codelineno-18-18" href="#__codelineno-18-18"></a>ipv4 addresses :
|
|
<a id="__codelineno-18-19" name="__codelineno-18-19" href="#__codelineno-18-19"></a>ipv6 addresses :
|
|
<a id="__codelineno-18-20" name="__codelineno-18-20" href="#__codelineno-18-20"></a>in-octets : 100892
|
|
<a id="__codelineno-18-21" name="__codelineno-18-21" href="#__codelineno-18-21"></a>out-octets : 111776
|
|
</code></pre></div>
|
|
<p>Member ports provide additional status information:</p>
|
|
<ul>
|
|
<li>Link failure counter: number of detected link failures</li>
|
|
<li>LACP state flags: various states of LACP negotiation:</li>
|
|
<li><code>active</code>: port is actively sending LACPDUs</li>
|
|
<li><code>short_timeout</code>: using fast rate (1s) vs. slow rate (30s)</li>
|
|
<li><code>aggregating</code>: port is allowed to aggregate in this LAG</li>
|
|
<li><code>in_sync</code>: port is synchronized with partner</li>
|
|
<li><code>collecting</code>: port is allowed to receive traffic</li>
|
|
<li><code>distributing</code>: port is allowed to send traffic</li>
|
|
<li><code>defaulted</code>: using default partner info (partner not responding)</li>
|
|
<li><code>expired</code>: partner info has expired (no LACPDUs received)</li>
|
|
<li>Aggregator ID: unique identifier for this LAG group</li>
|
|
<li>Actor state: LACP state flags for this port (local)</li>
|
|
<li>Partner state: LACP state flags from the remote port</li>
|
|
</ul>
|
|
<p>Example member port status:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>admin@example:/> show interface eth7
|
|
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>name : eth7
|
|
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a>index : 8
|
|
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a>mtu : 1500
|
|
<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a>operational status : up
|
|
<a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a>physical address : 00:a0:85:00:02:00
|
|
<a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a>lag member : lag0
|
|
<a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a>lag member state : active
|
|
<a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a>lacp aggregate id : 1
|
|
<a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a>lacp actor state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
|
<a id="__codelineno-19-11" name="__codelineno-19-11" href="#__codelineno-19-11"></a>lacp partner state : active, short_timeout, aggregating, in_sync, collecting, distributing
|
|
<a id="__codelineno-19-12" name="__codelineno-19-12" href="#__codelineno-19-12"></a>link failure count : 0
|
|
<a id="__codelineno-19-13" name="__codelineno-19-13" href="#__codelineno-19-13"></a>ipv4 addresses :
|
|
<a id="__codelineno-19-14" name="__codelineno-19-14" href="#__codelineno-19-14"></a>ipv6 addresses :
|
|
<a id="__codelineno-19-15" name="__codelineno-19-15" href="#__codelineno-19-15"></a>in-octets : 473244
|
|
<a id="__codelineno-19-16" name="__codelineno-19-16" href="#__codelineno-19-16"></a>out-octets : 499037
|
|
</code></pre></div>
|
|
<h4 id="example-switch-uplink-with-lacp">Example: Switch Uplink with LACP<a class="headerlink" href="#example-switch-uplink-with-lacp" title="Permanent link">¶</a></h4>
|
|
<p>LACP mode provides the most robust operation, automatically negotiating
|
|
the link aggregate and detecting configuration mismatches.</p>
|
|
<p>A common use case is connecting a switch to an upstream device:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>admin@example:/config/> edit interface lag0
|
|
<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a>admin@example:/config/interface/lag0/> set lag mode lacp
|
|
</code></pre></div>
|
|
<p>Enable fast LACP for quicker fail-over:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>admin@example:/config/interface/lag0/> set lag lacp rate fast
|
|
</code></pre></div>
|
|
<p>Add uplink ports</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>admin@example:/config/interface/lag0/> end
|
|
<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a>admin@example:/config/> set interface eth7 lag-port lag lag0
|
|
<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a>admin@example:/config/> set interface eth8 lag-port lag lag0
|
|
</code></pre></div>
|
|
<p>Enable protection against "link flapping".</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>admin@example:/config/interface/lag0/> edit lag link-monitor
|
|
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a>admin@example:/config/interface/lag0/lag/link-monitor/> edit debounce
|
|
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> set up 500
|
|
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> set down 200
|
|
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> top
|
|
</code></pre></div>
|
|
<p>Add to bridge for switching</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>admin@example:/config/interface/lag0/lag/link-monitor/debounce/> end
|
|
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a>admin@example:/config/> set interface lag0 bridge-port bridge br0
|
|
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a>admin@example:/config/> leave
|
|
</code></pre></div>
|
|
<h3 id="vlan-interfaces">VLAN Interfaces<a class="headerlink" href="#vlan-interfaces" title="Permanent link">¶</a></h3>
|
|
<p>Creating a VLAN can be done in many ways. This section assumes VLAN
|
|
interfaces created atop another Linux interface. E.g., the VLAN
|
|
interfaces created on top of the Ethernet interface or bridge in the
|
|
picture below.</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/interface-vlan-variants.svg" data-desc-position="bottom"><img alt="VLAN interface on top of Ethernet or Bridge interfaces" src="../img/interface-vlan-variants.svg"></a></p>
|
|
<p>A VLAN interface is basically a filtering abstraction. When you run
|
|
<code>tcpdump</code> on a VLAN interface you will only see the frames matching the
|
|
VLAN ID of the interface, compared to <em>all</em> the VLAN IDs if you run
|
|
<code>tcpdump</code> on the lower-layer interface.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a>admin@example:/config/> edit interface eth0.20
|
|
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a>admin@example:/config/interface/eth0.20/> show
|
|
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>type vlan;
|
|
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a>vlan {
|
|
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a> tag-type c-vlan;
|
|
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a> id 20;
|
|
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a> lower-layer-if eth0;
|
|
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a>}
|
|
<a id="__codelineno-25-10" name="__codelineno-25-10" href="#__codelineno-25-10"></a>admin@example:/config/interface/eth0.20/> leave
|
|
</code></pre></div>
|
|
<p>The example below assumes bridge br0 is already created, see <a href="#vlan-filtering-bridge">VLAN
|
|
Filtering Bridge</a>.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a>admin@example:/config/> edit interface vlan10
|
|
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a>admin@example:/config/interface/vlan10/> set vlan id 10
|
|
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a>admin@example:/config/interface/vlan10/> set vlan lower-layer-if br0
|
|
<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a>admin@example:/config/interface/vlan10/> leave
|
|
</code></pre></div>
|
|
<p>As conventions, a VLAN interface for VID 20 on top of an Ethernet
|
|
interface <em>eth0</em> is named <em>eth0.20</em>, and a VLAN interface for VID 10 on
|
|
top of a bridge interface <em>br0</em> is named <em>vlan10</em>.</p>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>If you name your VLAN interface <code>foo0.N</code> or <code>vlanN</code>, where <code>N</code> is a
|
|
number, the CLI infers the interface type automatically.</p>
|
|
</div>
|
|
<h3 id="physical-ethernet-interfaces">Physical Ethernet Interfaces<a class="headerlink" href="#physical-ethernet-interfaces" title="Permanent link">¶</a></h3>
|
|
<h4 id="ethernet-settings-and-status">Ethernet Settings and Status<a class="headerlink" href="#ethernet-settings-and-status" title="Permanent link">¶</a></h4>
|
|
<p>Physical Ethernet interfaces provide low-level settings for speed/duplex as
|
|
well as packet status and <a href="#ethernet-statistics">statistics</a>.</p>
|
|
<p>By default, Ethernet interfaces defaults to auto-negotiating
|
|
speed/duplex modes, advertising all speed and duplex modes available.
|
|
In the example below, the switch would by default auto-negotiate speed
|
|
1 Gbit/s on port eth1 and 100 Mbit/s on port eth4, as those are the
|
|
highest speeds supported by H1 and H2 respectively.</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ethernet-autoneg.svg" data-desc-position="bottom"><img alt="4-port Gbit/s switch connected to Gbit and Fast Ethernet Hosts" src="../img/ethernet-autoneg.svg"></a></p>
|
|
<p>The speed and duplex status for the links can be listed as shown
|
|
below, assuming the link operational status is 'up'. </p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>admin@example:/> show interface eth1
|
|
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a>name : eth1
|
|
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a>index : 2
|
|
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a>mtu : 1500
|
|
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a>operational status : up
|
|
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a>auto-negotiation : on
|
|
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a>duplex : full
|
|
<a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a>speed : 1000
|
|
<a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a>physical address : 00:53:00:06:11:01
|
|
<a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a>ipv4 addresses :
|
|
<a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a>ipv6 addresses :
|
|
<a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a>in-octets : 75581
|
|
<a id="__codelineno-27-13" name="__codelineno-27-13" href="#__codelineno-27-13"></a>out-octets : 43130
|
|
<a id="__codelineno-27-14" name="__codelineno-27-14" href="#__codelineno-27-14"></a>...
|
|
<a id="__codelineno-27-15" name="__codelineno-27-15" href="#__codelineno-27-15"></a>admin@example:/> show interface eth4
|
|
<a id="__codelineno-27-16" name="__codelineno-27-16" href="#__codelineno-27-16"></a>name : eth4
|
|
<a id="__codelineno-27-17" name="__codelineno-27-17" href="#__codelineno-27-17"></a>index : 5
|
|
<a id="__codelineno-27-18" name="__codelineno-27-18" href="#__codelineno-27-18"></a>mtu : 1500
|
|
<a id="__codelineno-27-19" name="__codelineno-27-19" href="#__codelineno-27-19"></a>operational status : up
|
|
<a id="__codelineno-27-20" name="__codelineno-27-20" href="#__codelineno-27-20"></a>auto-negotiation : on
|
|
<a id="__codelineno-27-21" name="__codelineno-27-21" href="#__codelineno-27-21"></a>duplex : full
|
|
<a id="__codelineno-27-22" name="__codelineno-27-22" href="#__codelineno-27-22"></a>speed : 100
|
|
<a id="__codelineno-27-23" name="__codelineno-27-23" href="#__codelineno-27-23"></a>physical address : 00:53:00:06:11:04
|
|
<a id="__codelineno-27-24" name="__codelineno-27-24" href="#__codelineno-27-24"></a>ipv4 addresses :
|
|
<a id="__codelineno-27-25" name="__codelineno-27-25" href="#__codelineno-27-25"></a>ipv6 addresses :
|
|
<a id="__codelineno-27-26" name="__codelineno-27-26" href="#__codelineno-27-26"></a>in-octets : 75439
|
|
<a id="__codelineno-27-27" name="__codelineno-27-27" href="#__codelineno-27-27"></a>out-octets : 550704
|
|
<a id="__codelineno-27-28" name="__codelineno-27-28" href="#__codelineno-27-28"></a>...
|
|
<a id="__codelineno-27-29" name="__codelineno-27-29" href="#__codelineno-27-29"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="configuring-fixed-speed-and-duplex">Configuring fixed speed and duplex<a class="headerlink" href="#configuring-fixed-speed-and-duplex" title="Permanent link">¶</a></h4>
|
|
<p>Auto-negotiation of speed/duplex mode is desired in almost all
|
|
use-cases, but it is possible to disable auto-negotiation and specify
|
|
a fixed speed and duplex mode.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Important</p>
|
|
<p>When setting a fixed speed and duplex mode, ensure both sides of the
|
|
link have matching configuration. If speed does not match, the link
|
|
will not come up. If duplex mode does not match, the result is
|
|
reported collisions and/or bad throughput.</p>
|
|
</div>
|
|
<p>The example below configures port eth3 to fixed speed 100 Mbit/s
|
|
half-duplex mode. </p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>admin@example:/config/> edit interface eth3 ethernet
|
|
<a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a>admin@example:/config/interface/eth3/ethernet/> set speed 0.1
|
|
<a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a>admin@example:/config/interface/eth3/ethernet/> set duplex half
|
|
<a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a>admin@example:/config/interface/eth3/ethernet/> set auto-negotiation enable false
|
|
<a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a>admin@example:/config/interface/eth3/ethernet/> show
|
|
<a id="__codelineno-28-7" name="__codelineno-28-7" href="#__codelineno-28-7"></a>auto-negotiation {
|
|
<a id="__codelineno-28-8" name="__codelineno-28-8" href="#__codelineno-28-8"></a> enable false;
|
|
<a id="__codelineno-28-9" name="__codelineno-28-9" href="#__codelineno-28-9"></a>}
|
|
<a id="__codelineno-28-10" name="__codelineno-28-10" href="#__codelineno-28-10"></a>duplex half;
|
|
<a id="__codelineno-28-11" name="__codelineno-28-11" href="#__codelineno-28-11"></a>speed 0.1;
|
|
<a id="__codelineno-28-12" name="__codelineno-28-12" href="#__codelineno-28-12"></a>admin@example:/config/interface/eth3/ethernet/> leave
|
|
<a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<p>Speed metric is in Gbit/s. Auto-negotiation needs to be disabled in
|
|
order for fixed speed/duplex to apply. Only speeds <code>0.1</code>(100 Mbit/s)
|
|
and <code>0.01</code> (10 Mbit/s) can be specified. 1 Gbit/s and higher speeds
|
|
require auto-negotiation to be enabled.</p>
|
|
<h4 id="ethernet-statistics">Ethernet statistics<a class="headerlink" href="#ethernet-statistics" title="Permanent link">¶</a></h4>
|
|
<p>Ethernet packet statistics<sup id="fnref:6"><a class="footnote-ref" href="#fn:6">6</a></sup> can be listed as shown below.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>admin@example:/> show interface eth1
|
|
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>name : eth1
|
|
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>index : 2
|
|
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a>mtu : 1500
|
|
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a>operational status : up
|
|
<a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a>auto-negotiation : on
|
|
<a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a>duplex : full
|
|
<a id="__codelineno-29-8" name="__codelineno-29-8" href="#__codelineno-29-8"></a>speed : 1000
|
|
<a id="__codelineno-29-9" name="__codelineno-29-9" href="#__codelineno-29-9"></a>physical address : 00:53:00:06:11:0a
|
|
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a>ipv4 addresses :
|
|
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a>ipv6 addresses :
|
|
<a id="__codelineno-29-12" name="__codelineno-29-12" href="#__codelineno-29-12"></a>in-octets : 75581
|
|
<a id="__codelineno-29-13" name="__codelineno-29-13" href="#__codelineno-29-13"></a>out-octets : 43130
|
|
<a id="__codelineno-29-14" name="__codelineno-29-14" href="#__codelineno-29-14"></a>
|
|
<a id="__codelineno-29-15" name="__codelineno-29-15" href="#__codelineno-29-15"></a>eth-in-frames : 434
|
|
<a id="__codelineno-29-16" name="__codelineno-29-16" href="#__codelineno-29-16"></a>eth-in-multicast-frames : 296
|
|
<a id="__codelineno-29-17" name="__codelineno-29-17" href="#__codelineno-29-17"></a>eth-in-broadcast-frames : 138
|
|
<a id="__codelineno-29-18" name="__codelineno-29-18" href="#__codelineno-29-18"></a>eth-in-error-fcs-frames : 0
|
|
<a id="__codelineno-29-19" name="__codelineno-29-19" href="#__codelineno-29-19"></a>eth-in-error-oversize-frames : 0
|
|
<a id="__codelineno-29-20" name="__codelineno-29-20" href="#__codelineno-29-20"></a>eth-out-frames : 310
|
|
<a id="__codelineno-29-21" name="__codelineno-29-21" href="#__codelineno-29-21"></a>eth-out-multicast-frames : 310
|
|
<a id="__codelineno-29-22" name="__codelineno-29-22" href="#__codelineno-29-22"></a>eth-out-broadcast-frames : 0
|
|
<a id="__codelineno-29-23" name="__codelineno-29-23" href="#__codelineno-29-23"></a>eth-out-good-octets : 76821
|
|
<a id="__codelineno-29-24" name="__codelineno-29-24" href="#__codelineno-29-24"></a>eth-in-good-octets : 60598
|
|
<a id="__codelineno-29-25" name="__codelineno-29-25" href="#__codelineno-29-25"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<h3 id="veth-pairs">VETH Pairs<a class="headerlink" href="#veth-pairs" title="Permanent link">¶</a></h3>
|
|
<p>A Virtual Ethernet (VETH) pair is basically a virtual Ethernet cable. A
|
|
cable can be "plugged in" to a bridge and the other end can be given to
|
|
a <a href="../container/">container</a>, or plugged into another bridge.</p>
|
|
<p>The latter example is useful if you have multiple bridges in the system
|
|
with different properties (VLAN filtering, IEEE group forwarding, etc.),
|
|
but still want some way of communicating between these domains.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>admin@example:/config/> edit interface veth0a
|
|
<a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a>admin@example:/config/interface/veth0a/> set veth peer veth0b
|
|
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a>admin@example:/config/interface/veth0a/> end
|
|
<a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a>admin@example:/config/> diff
|
|
<a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a>interfaces {
|
|
<a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a>+ interface veth0a {
|
|
<a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a>+ type veth;
|
|
<a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a>+ veth {
|
|
<a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a>+ peer veth0b;
|
|
<a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a>+ }
|
|
<a id="__codelineno-30-12" name="__codelineno-30-12" href="#__codelineno-30-12"></a>+ }
|
|
<a id="__codelineno-30-13" name="__codelineno-30-13" href="#__codelineno-30-13"></a>+ interface veth0b {
|
|
<a id="__codelineno-30-14" name="__codelineno-30-14" href="#__codelineno-30-14"></a>+ type veth;
|
|
<a id="__codelineno-30-15" name="__codelineno-30-15" href="#__codelineno-30-15"></a>+ veth {
|
|
<a id="__codelineno-30-16" name="__codelineno-30-16" href="#__codelineno-30-16"></a>+ peer veth0a;
|
|
<a id="__codelineno-30-17" name="__codelineno-30-17" href="#__codelineno-30-17"></a>+ }
|
|
<a id="__codelineno-30-18" name="__codelineno-30-18" href="#__codelineno-30-18"></a>+ }
|
|
<a id="__codelineno-30-19" name="__codelineno-30-19" href="#__codelineno-30-19"></a>}
|
|
<a id="__codelineno-30-20" name="__codelineno-30-20" href="#__codelineno-30-20"></a>admin@example:/config/>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>This is another example of the automatic inference of the interface
|
|
type from the name. Any name can be used, but then you have to set
|
|
the interface type to <code>veth</code> manually.</p>
|
|
</div>
|
|
<h2 id="management-plane">Management Plane<a class="headerlink" href="#management-plane" title="Permanent link">¶</a></h2>
|
|
<p>This section details IP Addresses And Other Per-Interface IP settings.</p>
|
|
<p>Infix support several network interface types, each can be assigned one
|
|
or more IP addresses, both IPv4 and IPv6 are supported. (There is no
|
|
concept of a "primary" address.)</p>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-iface-examples.svg" data-desc-position="bottom"><img alt="IP on top of network interface examples" src="../img/ip-iface-examples.svg"></a></p>
|
|
<h3 id="ipv4-address-assignment">IPv4 Address Assignment<a class="headerlink" href="#ipv4-address-assignment" title="Permanent link">¶</a></h3>
|
|
<p>Multiple address assignment methods are available:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>Type</strong></th>
|
|
<th style="text-align: left;"><strong>Yang Model</strong></th>
|
|
<th style="text-align: left;"><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">static</td>
|
|
<td style="text-align: left;">ietf-ip</td>
|
|
<td style="text-align: left;">Static assignment of IPv4 address, e.g., <em>10.0.1.1/24</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">link-local</td>
|
|
<td style="text-align: left;">infix-ip</td>
|
|
<td style="text-align: left;">Auto-assignment of IPv4 address in 169.254.x.x/16 range</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">dhcp</td>
|
|
<td style="text-align: left;">infix-dhcp-client</td>
|
|
<td style="text-align: left;">Assignment of IPv4 address by DHCP server, e.g., <em>10.0.1.1/24</em></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>The DHCP address method is only available for <em>LAN</em> interfaces
|
|
(Ethernet, virtual Ethernet (veth), bridge, link aggregates, etc.)</p>
|
|
</div>
|
|
<p>Supported DHCP (request) options, configurability (Cfg) and defaults,
|
|
are listed below. Configurable options can be disabled on a per client
|
|
interface basis, some options, like <code>clientid</code> and option 81, are
|
|
possible to set the value of as well.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><strong>Opt</strong></th>
|
|
<th><strong>Name</strong></th>
|
|
<th><strong>Cfg</strong></th>
|
|
<th><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>1</td>
|
|
<td><code>netmask</code></td>
|
|
<td>No</td>
|
|
<td>Request IP address and netmask</td>
|
|
</tr>
|
|
<tr>
|
|
<td>3</td>
|
|
<td><code>router</code></td>
|
|
<td>Yes</td>
|
|
<td>Default route(s), see also option 121 and 249</td>
|
|
</tr>
|
|
<tr>
|
|
<td>6</td>
|
|
<td><code>dns-server</code></td>
|
|
<td>Yes</td>
|
|
<td>DNS server(s), static ones take precedence</td>
|
|
</tr>
|
|
<tr>
|
|
<td>12</td>
|
|
<td><code>hostname</code></td>
|
|
<td>Yes</td>
|
|
<td>DHCP cannot set hostname, only for informing server</td>
|
|
</tr>
|
|
<tr>
|
|
<td>15</td>
|
|
<td><code>domain</code></td>
|
|
<td>Yes</td>
|
|
<td>Default domain name, for name resolution</td>
|
|
</tr>
|
|
<tr>
|
|
<td>28</td>
|
|
<td><code>broadcast</code></td>
|
|
<td>Yes</td>
|
|
<td>Broadcast address, calculated if disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>42</td>
|
|
<td><code>ntp-server</code></td>
|
|
<td>Yes</td>
|
|
<td>NTP server(s), static ones take precedence</td>
|
|
</tr>
|
|
<tr>
|
|
<td>50</td>
|
|
<td><code>address</code></td>
|
|
<td>Yes</td>
|
|
<td>Request (previously cached) address</td>
|
|
</tr>
|
|
<tr>
|
|
<td>61</td>
|
|
<td><code>client-id</code></td>
|
|
<td>Yes</td>
|
|
<td>Default MAC address (and option 12)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>81</td>
|
|
<td><code>fqdn</code></td>
|
|
<td>Yes</td>
|
|
<td>Similar to option 12, request FQDN update in DNS</td>
|
|
</tr>
|
|
<tr>
|
|
<td>119</td>
|
|
<td><code>search</code></td>
|
|
<td>Yes</td>
|
|
<td>Request domain search list</td>
|
|
</tr>
|
|
<tr>
|
|
<td>121</td>
|
|
<td><code>classless-static-route</code></td>
|
|
<td>Yes</td>
|
|
<td>Classless static routes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>249</td>
|
|
<td><code>ms-classless-static-route</code></td>
|
|
<td>Yes</td>
|
|
<td>Microsoft static route, same as option 121</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><strong>Default:</strong> <code>router</code>, <code>dns-server</code>, <code>domain</code>, <code>broadcast</code>, <code>ntp-server</code>, <code>search</code>,
|
|
<code>address</code>, <code>classless-static-route</code>, <code>ms-classless-static-route</code></p>
|
|
<p>When configuring a DHCP client, ensure that the NTP client is enabled
|
|
for the <code>ntp-server</code> DHCP option to be processed correctly. If the NTP
|
|
client is not enabled, any NTP servers provided by the DHCP server will
|
|
be ignored. For details on how to enable the NTP client, see the <a href="../system/#ntp-client-configuration">NTP
|
|
Client Configuration</a> section.</p>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Important</p>
|
|
<p>Per <a href="https://www.rfc-editor.org/rfc/rfc3442">RFC3442</a>, if the DHCP server returns both a Classless Static
|
|
Routes option (121) and Router option (3), the DHCP client <em>must</em>
|
|
ignore the latter.</p>
|
|
</div>
|
|
<h3 id="ipv6-address-assignment">IPv6 Address Assignment<a class="headerlink" href="#ipv6-address-assignment" title="Permanent link">¶</a></h3>
|
|
<p>Multiple address assignment methods are available:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>Type</strong></th>
|
|
<th style="text-align: left;"><strong>Yang Model</strong></th>
|
|
<th style="text-align: left;"><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">static</td>
|
|
<td style="text-align: left;">ietf-ip</td>
|
|
<td style="text-align: left;">Static assignment of IPv6 address, e.g., <em>2001:db8:0:1::1/64</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">link-local</td>
|
|
<td style="text-align: left;">ietf-ip<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></td>
|
|
<td style="text-align: left;">(RFC4862) Auto-configured link-local IPv6 address (<em>fe80::0</em> prefix + interface identifier, e.g., <em>fe80::ccd2:82ff:fe52:728b/64</em>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">global auto-conf</td>
|
|
<td style="text-align: left;">ietf-ip</td>
|
|
<td style="text-align: left;">(RFC4862) Auto-configured (stateless) global IPv6 address (prefix from router + interface identifier, e.g., <em>2001:db8:0:1:ccd2:82ff:fe52:728b/64</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">dhcp</td>
|
|
<td style="text-align: left;">infix-dhcpv6-client</td>
|
|
<td style="text-align: left;">Assignment of IPv6 address by DHCPv6 server, e.g., <em>2001:db8::42/128</em></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Both for <em>link-local</em> and <em>global auto-configuration</em>, it is possible
|
|
to auto-configure using a random suffix instead of the interface
|
|
identifier.</p>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>The DHCPv6 address method is only available for <em>LAN</em> interfaces
|
|
(Ethernet, virtual Ethernet (veth), bridge, link aggregates, etc.)</p>
|
|
</div>
|
|
<p>Supported DHCPv6 (request) options, configurability (Cfg) and defaults,
|
|
are listed below. Configurable options can be disabled on a per client
|
|
interface basis, some options, like <code>client-id</code> and <code>client-fqdn</code>, are
|
|
possible to set the value of as well.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><strong>Opt</strong></th>
|
|
<th><strong>Name</strong></th>
|
|
<th><strong>Cfg</strong></th>
|
|
<th><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>1</td>
|
|
<td><code>client-id</code></td>
|
|
<td>Yes</td>
|
|
<td>Client identifier (DUID), auto-generated by default</td>
|
|
</tr>
|
|
<tr>
|
|
<td>2</td>
|
|
<td><code>server-id</code></td>
|
|
<td>Yes</td>
|
|
<td>Server identifier (DUID)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>23</td>
|
|
<td><code>dns-server</code></td>
|
|
<td>Yes</td>
|
|
<td>DNS recursive name servers, static ones take precedence</td>
|
|
</tr>
|
|
<tr>
|
|
<td>24</td>
|
|
<td><code>domain-search</code></td>
|
|
<td>Yes</td>
|
|
<td>Domain search list</td>
|
|
</tr>
|
|
<tr>
|
|
<td>25</td>
|
|
<td><code>ia-pd</code></td>
|
|
<td>Yes</td>
|
|
<td>Prefix delegation for downstream networks</td>
|
|
</tr>
|
|
<tr>
|
|
<td>31</td>
|
|
<td><code>sntp-server</code></td>
|
|
<td>Yes</td>
|
|
<td>Simple Network Time Protocol servers</td>
|
|
</tr>
|
|
<tr>
|
|
<td>32</td>
|
|
<td><code>information-refresh-time</code></td>
|
|
<td>Yes</td>
|
|
<td>Refresh time for stateless DHCPv6</td>
|
|
</tr>
|
|
<tr>
|
|
<td>39</td>
|
|
<td><code>client-fqdn</code></td>
|
|
<td>Yes</td>
|
|
<td>Client FQDN, request DNS update from server</td>
|
|
</tr>
|
|
<tr>
|
|
<td>56</td>
|
|
<td><code>ntp-server</code></td>
|
|
<td>Yes</td>
|
|
<td>NTP time servers, static ones take precedence</td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><strong>Default:</strong> <code>dns-server</code>, <code>domain-search</code>, <code>ntp-server</code></p>
|
|
<p>DHCPv6 supports both <strong>stateful</strong> (address assignment) and <strong>stateless</strong>
|
|
(information-only) modes:</p>
|
|
<ul>
|
|
<li><strong>Stateful DHCPv6</strong>: The server assigns IPv6 addresses to clients. This is
|
|
the default mode when enabling the DHCPv6 client.</li>
|
|
<li><strong>Stateless DHCPv6</strong>: Used with SLAAC (Stateless Address Autoconfiguration)
|
|
when only configuration information (DNS, NTP, etc.) is needed. Enable with
|
|
the <code>information-only</code> setting.</li>
|
|
</ul>
|
|
<p>When configuring a DHCPv6 client, ensure that the NTP client is enabled
|
|
for the <code>ntp-server</code> DHCPv6 option to be processed correctly. If the
|
|
NTP client is not enabled, any NTP servers provided by the DHCPv6 server
|
|
will be ignored. For details on how to enable the NTP client, see the
|
|
<a href="../system/#ntp-client-configuration">NTP Client Configuration</a> section.</p>
|
|
<h3 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">¶</a></h3>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-switch.svg" data-desc-position="bottom"><img alt="Switch example (eth0 and lo)" src="../img/ip-address-example-switch.svg"></a></p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>To illustrate IP address configuration, the examples below uses a
|
|
switch with a single Ethernet interface (eth0) and a loopback
|
|
interface (lo). As shown above, these examples assume <em>eth0</em> has an
|
|
IPv6 link-local address and <em>lo</em> has static IPv4 and IPv6 addresses by
|
|
default.</p>
|
|
<h4 id="static-and-link-local-ipv4-addresses">Static and link-local IPv4 addresses<a class="headerlink" href="#static-and-link-local-ipv4-addresses" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv4-static.svg" data-desc-position="bottom"><img alt="Setting static IPv4 (and link-local IPv4)" src="../img/ip-address-example-ipv4-static.svg"></a></p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv4
|
|
admin@example:/config/interface/eth0/ipv4/> set address 10.0.1.1 prefix-length 24
|
|
admin@example:/config/interface/eth0/ipv4/> set autoconf
|
|
admin@example:/config/interface/eth0/ipv4/> diff
|
|
+interfaces {
|
|
+ interface eth0 {
|
|
+ ipv4 {
|
|
+ address 10.0.1.1 {
|
|
+ prefix-length 24;
|
|
+ }
|
|
+ autoconf;
|
|
+ }
|
|
+ }
|
|
+}
|
|
admin@example:/config/interface/eth0/ipv4/> leave
|
|
admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv4 169.254.1.3/16 (random)
|
|
ipv4 10.0.1.1/24 (static)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>As shown, the link-local IPv4 address is configured with <code>set autoconf</code>.
|
|
The presence of the <code>autoconf</code> container enables IPv4 link-local address
|
|
assignment. The resulting address (169.254.1.3/16) is of type <em>random</em>
|
|
(<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a>).</p>
|
|
<p>The IPv4LL client also supports a <code>request-address</code> setting which can be
|
|
used to "seed" the client's starting address. If the address is free it
|
|
will be used, otherwise it falls back to the default algorithm.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/interface/eth0/ipv4/> edit autoconf
|
|
admin@example:/config/interface/eth0/ipv4/autoconf/> set request-address 169.254.1.2
|
|
admin@example:/config/interface/eth0/ipv4/autoconf/> leave
|
|
</code></pre></div>
|
|
<h4 id="use-of-dhcp-for-ipv4-address-assignment">Use of DHCP for IPv4 address assignment<a class="headerlink" href="#use-of-dhcp-for-ipv4-address-assignment" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv4-dhcp.svg" data-desc-position="bottom"><img alt="Using DHCP for IPv4 address assignment" src="../img/ip-address-example-ipv4-dhcp.svg"></a></p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv4
|
|
admin@example:/config/interface/eth0/ipv4/> set dhcp
|
|
admin@example:/config/interface/eth0/ipv4/> leave
|
|
admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv4 10.1.2.100/24 (dhcp)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>The resulting address (10.1.2.100/24) is of type <em>dhcp</em>.</p>
|
|
<p>To configure DHCP client options, such as sending a specific hostname to the
|
|
server, you can specify options with values:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a>admin@example:/config/> edit interface eth0 ipv4 dhcp
|
|
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a>admin@example:/config/interface/eth0/ipv4/dhcp/> set option hostname value myhost
|
|
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a>admin@example:/config/interface/eth0/ipv4/dhcp/> show
|
|
<a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a>option hostname {
|
|
<a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a> value myhost;
|
|
<a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a>}
|
|
<a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a>admin@example:/config/interface/eth0/ipv4/dhcp/> leave
|
|
<a id="__codelineno-31-9" name="__codelineno-31-9" href="#__codelineno-31-9"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>The special value <code>auto</code> can be used with the hostname option to
|
|
automatically use the configured system hostname.</p>
|
|
</div>
|
|
<p>Other useful DHCP options include:</p>
|
|
<ul>
|
|
<li><code>client-id</code> - Send a specific client identifier to the server</li>
|
|
<li><code>route-preference</code> - Set the administrative distance for DHCP-learned routes (default: 5)</li>
|
|
</ul>
|
|
<p>For advanced usage with vendor-specific options, see the YANG model.</p>
|
|
<h4 id="use-of-dhcpv6-for-ipv6-address-assignment">Use of DHCPv6 for IPv6 address assignment<a class="headerlink" href="#use-of-dhcpv6-for-ipv6-address-assignment" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="img/ip-address-example-ipv6-dhcp.svg" data-desc-position="bottom"><img alt="Using DHCPv6 for IPv6 address assignment" src="img/ip-address-example-ipv6-dhcp.svg"></a></p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv6
|
|
admin@example:/config/interface/eth0/ipv6/> set dhcp
|
|
admin@example:/config/interface/eth0/ipv6/> leave
|
|
admin@example:/> show interface
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 2001:db8::42/128 (dhcp)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>The resulting address (2001:db8::42/128) is of type <em>dhcp</em>.</p>
|
|
<p>To configure DHCPv6 client options, such as requesting prefix delegation
|
|
for downstream networks, you can specify options:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a>admin@example:/config/> edit interface eth0 ipv6 dhcp
|
|
<a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> set option ia-pd
|
|
<a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> set option dns-server
|
|
<a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> show
|
|
<a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a>option dns-server;
|
|
<a id="__codelineno-32-7" name="__codelineno-32-7" href="#__codelineno-32-7"></a>option ia-pd;
|
|
<a id="__codelineno-32-8" name="__codelineno-32-8" href="#__codelineno-32-8"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> leave
|
|
<a id="__codelineno-32-9" name="__codelineno-32-9" href="#__codelineno-32-9"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<p>For stateless DHCPv6 (used with SLAAC to get only configuration information):</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a>admin@example:/config/> edit interface eth0 ipv6 dhcp
|
|
<a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> set information-only true
|
|
<a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> show
|
|
<a id="__codelineno-33-5" name="__codelineno-33-5" href="#__codelineno-33-5"></a>information-only true;
|
|
<a id="__codelineno-33-6" name="__codelineno-33-6" href="#__codelineno-33-6"></a>option dns-server;
|
|
<a id="__codelineno-33-7" name="__codelineno-33-7" href="#__codelineno-33-7"></a>option domain-search;
|
|
<a id="__codelineno-33-8" name="__codelineno-33-8" href="#__codelineno-33-8"></a>admin@example:/config/interface/eth0/ipv6/dhcp/> leave
|
|
<a id="__codelineno-33-9" name="__codelineno-33-9" href="#__codelineno-33-9"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<p>Other useful DHCPv6 options include:</p>
|
|
<ul>
|
|
<li><code>duid</code> - Set a specific DHCPv6 Unique Identifier (auto-generated by default)</li>
|
|
<li><code>client-fqdn</code> - Request the server to update DNS records with client's FQDN</li>
|
|
<li><code>route-preference</code> - Set the administrative distance for DHCPv6-learned routes (default: 5)</li>
|
|
</ul>
|
|
<p>For advanced usage with vendor-specific options, see the YANG model.</p>
|
|
<h4 id="disabling-ipv6-link-local-addresses">Disabling IPv6 link-local address(es)<a class="headerlink" href="#disabling-ipv6-link-local-addresses" title="Permanent link">¶</a></h4>
|
|
<p>The (only) way to disable IPv6 link-local addresses is by disabling IPv6
|
|
on the interface.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>admin@example:/> configure
|
|
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a>admin@example:/config/> edit interface eth0 ipv6
|
|
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a>admin@example:/config/interface/eth0/ipv6/> set enabled false
|
|
<a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a>admin@example:/config/interface/eth0/ipv6/> leave
|
|
<a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a>admin@example:/> show interfaces
|
|
<a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a>INTERFACE PROTOCOL STATE DATA
|
|
<a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a>eth0 ethernet UP 02:00:00:00:00:00
|
|
<a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a>lo ethernet UP 00:00:00:00:00:00
|
|
<a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a> ipv4 127.0.0.1/8 (static)
|
|
<a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a> ipv6 ::1/128 (static)
|
|
<a id="__codelineno-34-11" name="__codelineno-34-11" href="#__codelineno-34-11"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="static-ipv6-address">Static IPv6 address<a class="headerlink" href="#static-ipv6-address" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-static.svg" data-desc-position="bottom"><img alt="Setting static IPv6" src="../img/ip-address-example-ipv6-static.svg"></a></p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv6
|
|
admin@example:/config/interface/eth0/ipv6/> set address 2001:db8::1 prefix-length 64
|
|
admin@example:/config/interface/eth0/ipv6/> leave
|
|
admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 2001:db8::1/64 (static)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="stateless-auto-configuration-of-global-ipv6-address">Stateless Auto-configuration of Global IPv6 Address<a class="headerlink" href="#stateless-auto-configuration-of-global-ipv6-address" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-auto-global.svg" data-desc-position="bottom"><img alt="Auto-configuration of global IPv6" src="../img/ip-address-example-ipv6-auto-global.svg"></a></p>
|
|
<p>Stateless address auto-configuration of global addresses is enabled by
|
|
default. The address is formed by concatenating the network prefix
|
|
advertised by the router (here 2001:db8:0:1::0/64) and the interface
|
|
identifier. The resulting address is of type <em>link-layer</em>, as it is
|
|
formed based on the interface identifier (<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a>).</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>Disabling auto-configuration of global IPv6 addresses can be done as shown
|
|
below.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv6
|
|
admin@example:/config/interface/eth0/ipv6/> set autoconf create-global-addresses false
|
|
admin@example:/config/interface/eth0/ipv6/> leave
|
|
admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="random-link-identifiers-for-ipv6-stateless-autoconfiguration">Random Link Identifiers for IPv6 Stateless Autoconfiguration<a class="headerlink" href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" title="Permanent link">¶</a></h4>
|
|
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-auto-global.svg" data-desc-position="bottom"><img alt="Auto-configuration of global IPv6" src="../img/ip-address-example-ipv6-auto-global.svg"></a></p>
|
|
<p>By default, the auto-configured link-local and global IPv6 addresses
|
|
are formed from a link-identifier based on the MAC address.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
|
|
ipv6 fe80::ff:fe00:0/64 (link-layer)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>To avoid revealing identity information in the IPv6 address, it is
|
|
possible to specify use of a random identifier (<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a> and
|
|
<a href="https://www.rfc-editor.org/rfc/rfc8981">RFC8981</a>).</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit interface eth0 ipv6
|
|
admin@example:/config/interface/eth0/ipv6/> set autoconf create-temporary-addresses true
|
|
admin@example:/config/interface/eth0/ipv6/> leave
|
|
admin@example:/> show interfaces
|
|
INTERFACE PROTOCOL STATE DATA
|
|
eth0 ethernet UP 02:00:00:00:00:00
|
|
ipv6 2001:db8:0:1:b705:8374:638e:74a8/64 (random)
|
|
ipv6 fe80::ad3d:b274:885a:9ffb/64 (random)
|
|
lo ethernet UP 00:00:00:00:00:00
|
|
ipv4 127.0.0.1/8 (static)
|
|
ipv6 ::1/128 (static)
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>Both the link-local address (fe80::) and the global address (2001:)
|
|
have changed type to <em>random</em>.</p>
|
|
<h3 id="ipv4-forwarding">IPv4 forwarding<a class="headerlink" href="#ipv4-forwarding" title="Permanent link">¶</a></h3>
|
|
<p>To be able to route (static or dynamic) on the interface it is
|
|
required to enable forwarding. This setting controls if packets
|
|
received on this interface can be forwarded.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>admin@example:/config/> edit interface eth0
|
|
<a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a>admin@example:/config/interface/eth0/> set ipv4 forwarding
|
|
<a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a>admin@example:/config/interface/eth0/> leave
|
|
<a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<h3 id="ipv6-forwarding">IPv6 forwarding<a class="headerlink" href="#ipv6-forwarding" title="Permanent link">¶</a></h3>
|
|
<p>Due to how the Linux kernel manages IPv6 forwarding, we can not fully
|
|
control it per interface via this setting like how IPv4 works. Instead,
|
|
IPv6 forwarding is globally enabled when at least one interface enable
|
|
forwarding, otherwise it is disabled.</p>
|
|
<p>The following table shows the system IPv6 features that the <code>forwarding</code>
|
|
setting control when it is <em>Enabled</em> or *Disabled:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>IPv6 Feature</strong></th>
|
|
<th style="text-align: left;"><strong>Enabled</strong></th>
|
|
<th style="text-align: left;"><strong>Disabled</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">IsRouter set in Neighbour Advertisements</td>
|
|
<td style="text-align: left;">Yes</td>
|
|
<td style="text-align: left;">No</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">Transmit Router Solicitations</td>
|
|
<td style="text-align: left;">No</td>
|
|
<td style="text-align: left;">Yes</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">Router Advertisements are ignored</td>
|
|
<td style="text-align: left;">Yes</td>
|
|
<td style="text-align: left;">Yes</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">Accept Redirects</td>
|
|
<td style="text-align: left;">No</td>
|
|
<td style="text-align: left;">Yes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>admin@example:/config/> edit interface eth0
|
|
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a>admin@example:/config/interface/eth0/> set ipv6 forwarding
|
|
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a>admin@example:/config/interface/eth0/> leave
|
|
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a>admin@example:/>
|
|
</code></pre></div>
|
|
<h2 id="routing-support">Routing support<a class="headerlink" href="#routing-support" title="Permanent link">¶</a></h2>
|
|
<p>Currently supported YANG models:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>YANG Model</strong></th>
|
|
<th style="text-align: left;"><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">ietf-routing</td>
|
|
<td style="text-align: left;">Base model for all other models</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">ietf-ipv4-unicast-routing</td>
|
|
<td style="text-align: left;">Static IPv4 unicast routing</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">ietf-ipv6-unicast-routing</td>
|
|
<td style="text-align: left;">Static IPv6 unicast routing</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">ietf-ospf</td>
|
|
<td style="text-align: left;">OSPF routing</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">ietf-rip</td>
|
|
<td style="text-align: left;">RIP routing</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">infix-routing</td>
|
|
<td style="text-align: left;">Infix deviations and extensions</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The base model, ietf-routing, is where all the other models hook in. It
|
|
is used to set configuration and read operational status (RIB tables) in
|
|
the other models.</p>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>The standard IETF routing models allows multiple instances, but Infix
|
|
currently <em>only support one instance</em> per routing protocol! In the
|
|
examples presented here, the instance name <code>default</code> is used.</p>
|
|
</div>
|
|
<h3 id="ipv4-static-routes">IPv4 Static routes<a class="headerlink" href="#ipv4-static-routes" title="Permanent link">¶</a></h3>
|
|
<p>The standard IETF model for static routes reside under the <code>static</code>
|
|
control plane protocol. For our examples we use the instance name
|
|
<code>default</code>, you can use any name.</p>
|
|
<p>For a route with destination 192.168.200.0/24 via 192.168.1.1:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit routing control-plane-protocol static name default ipv4
|
|
admin@example:/config/routing/…/ipv4/> set route 192.168.200.0/24 next-hop next-hop-address 192.168.1.1
|
|
admin@example:/config/routing/…/ipv4/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>For a "floating" static route with destination 10.0.0.0/16 via a backup
|
|
router 192.168.1.1, using the highest possible distance:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit routing control-plane-protocol static name default ipv4
|
|
admin@example:/config/routing/…/ipv4/> set route 10.0.0.0/16 next-hop next-hop-address 192.168.1.1 route-preference 254
|
|
admin@example:/config/routing/…/ipv4/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>Remember to enable <a href="#ipv4-forwarding">IPv4 forwarding</a> for the
|
|
interfaces you want to route between.</p>
|
|
</div>
|
|
<h3 id="ipv6-static-routes">IPv6 Static routes<a class="headerlink" href="#ipv6-static-routes" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit routing control-plane-protocol static name default ipv6
|
|
admin@example:/config/routing/…/ipv6/> set route 2001:db8:3c4d:200::/64 next-hop next-hop-address 2001:db8:3c4d:1::1
|
|
admin@example:/config/routing/…/ipv6/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h3 id="ospfv2-routing">OSPFv2 Routing<a class="headerlink" href="#ospfv2-routing" title="Permanent link">¶</a></h3>
|
|
<p>The system supports OSPF dynamic routing for IPv4, i.e., OSPFv2. To
|
|
enable OSPF and set one active interface in area 0:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/> edit routing control-plane-protocol ospfv2 name default ospf
|
|
admin@example:/config/routing/…/ospf/> set area 0.0.0.0 interface e0 enabled
|
|
admin@example:/config/routing/…/ospf/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>Remember to enable <a href="#ipv4-forwarding">IPv4 forwarding</a> for all the
|
|
interfaces you want to route between.</p>
|
|
</div>
|
|
<h4 id="ospf-area-types">OSPF area types<a class="headerlink" href="#ospf-area-types" title="Permanent link">¶</a></h4>
|
|
<p>In addition to <em>regular</em> OSPF areas, area types <em>NSSA</em> and <em>Stub</em> are
|
|
also supported. To configure an NSSA area with summary routes:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/> edit routing control-plane-protocol ospfv2 name default ospf
|
|
admin@example:/config/routing/…/ospf/> set area 0.0.0.1 area-type nssa-area
|
|
admin@example:/config/routing/…/ospf/> set area 0.0.0.1 summary true
|
|
admin@example:/config/routing/…/ospf/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="bidirectional-forwarding-detection-bfd">Bidirectional Forwarding Detection (BFD)<a class="headerlink" href="#bidirectional-forwarding-detection-bfd" title="Permanent link">¶</a></h4>
|
|
<p>It is possible to enable BFD per OSPF interface to speed up detection of
|
|
link loss.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/> edit routing control-plane-protocol ospfv2 name default ospf
|
|
admin@example:/config/routing/…/ospf/> set area 0.0.0.0 interface e0 bfd enabled true
|
|
admin@example:/config/routing/…/ospf/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="ospf-interface-settings">OSPF interface settings<a class="headerlink" href="#ospf-interface-settings" title="Permanent link">¶</a></h4>
|
|
<p>We have already seen how to enable OSPF per interface (<em>enabled true</em>)
|
|
and BFD for OSPF per interface (<em>bfd enabled true</em>). These and other
|
|
OSPF interface settings are done in context of an OSFP area, e.g., <em>area
|
|
0.0.0.0</em>. Available commands can be listed using the <code>?</code> mark.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/routing/…/> edit ospf area 0.0.0.0
|
|
admin@example:/config/routing/…/ospf/area/0.0.0.0/> edit interface e0
|
|
admin@example:/config/routing/…/ospf/area/0.0.0.0/interface/e0/> set ?
|
|
bfd BFD interface configuration.
|
|
cost Interface's cost.
|
|
dead-interval Interval after which a neighbor is declared down
|
|
enabled Enables/disables the OSPF protocol on the interface.
|
|
hello-interval Interval between Hello packets (seconds). It must
|
|
interface-type Interface type.
|
|
passive Enables/disables a passive interface. A passive
|
|
retransmit-interval Interval between retransmitting unacknowledged Link
|
|
transmit-delay Estimated time needed to transmit Link State Update
|
|
admin@example:/config/routing/…/ospf/area/0.0.0.0/interface/e0/> set
|
|
</code></pre></div>
|
|
<p>For example, setting the OSPF <em>interface type</em> to <em>point-to-point</em> for
|
|
an Ethernet interface can be done as follows.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/routing/…/ospf/area/0.0.0.0/interface/e0/> set interface-type point-to-point
|
|
admin@example:/config/routing/…/ospf/area/0.0.0.0/interface/e0/>
|
|
</code></pre></div>
|
|
<h4 id="ospf-global-settings">OSPF global settings<a class="headerlink" href="#ospf-global-settings" title="Permanent link">¶</a></h4>
|
|
<p>In addition to <em>area</em> and <em>interface</em> specific settings, OSPF provides
|
|
global settings for route redistribution and OSPF router identifier.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a>admin@example:/config/> edit routing control-plane-protocol ospfv2 name default ospf
|
|
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a>admin@example:/config/routing/…/ospf/> set ?
|
|
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a> area List of OSPF areas.
|
|
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a> default-route-advertise Distribute default route to network
|
|
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a> explicit-router-id Defined in RFC 2328. A 32-bit number
|
|
<a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a> redistribute Redistribute protocols into OSPF
|
|
<a id="__codelineno-37-7" name="__codelineno-37-7" href="#__codelineno-37-7"></a>admin@example:/config/routing/…/ospf/> set
|
|
</code></pre></div>
|
|
<ul>
|
|
<li>Explicit router ID: By default the router will pick an IP address
|
|
from one of its OSPF interfaces as OSPF router ID. An explicit ID is
|
|
used to get a deterministic behavior, e.g., <code>set explicit-router-id
|
|
1.1.1.1</code>.</li>
|
|
<li>Redistribution: <code>set redistribute static</code> and <code>set redistribute connected</code>
|
|
can be used to include static or connected routes into the OSPF routing
|
|
domain. These routes are redistributed as <em>external type-2</em> (E2)
|
|
routes.</li>
|
|
<li>Advertising default route: An OSPF router can be made to distribute
|
|
a default route into the OSPF domain by command <code>set
|
|
default-route-advertise enabled</code>. This route is distributed as long
|
|
as the router itself has an <em>active</em> default route in its routing
|
|
table. By adding command <code>set default-route-advertise always</code> the
|
|
router will distribute a default route even when it lacks a default
|
|
route. The default route will be distributed as an <em>external type-2</em>
|
|
(E2) route.</li>
|
|
</ul>
|
|
<h4 id="debug-ospfv2">Debug OSPFv2<a class="headerlink" href="#debug-ospfv2" title="Permanent link">¶</a></h4>
|
|
<p>Using NETCONF and the YANG model <em>ietf-routing</em> it is possible to read
|
|
the OSPF routing table, neighbors and more, that may be useful for
|
|
debugging the OSPFv2 setup. The CLI has various OSPF status commands
|
|
such as <code>show ospf neighbor</code>, <code>show ospf interface</code> and <code>show ospf
|
|
routes</code>.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show ospf neighbor
|
|
|
|
Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL
|
|
10.1.1.2 1 Full/- 3h46m59s 30.177s 10.1.1.2 e0:10.1.1.1 0 0 0
|
|
10.1.1.3 1 Full/- 3h46m55s 34.665s 10.1.1.3 e1:10.1.1.1 0 0 0
|
|
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>For more detailed troubleshooting, OSPF debug logging can be enabled to
|
|
capture specific protocol events. Debug messages are written to the
|
|
routing log file (<code>/var/log/routing</code>).</p>
|
|
<div class="admonition warning">
|
|
<p class="admonition-title">Caution</p>
|
|
<p>Debug logging significantly increases log output and may impact
|
|
performance. Only enable debug categories needed for troubleshooting,
|
|
and disable them when done.</p>
|
|
</div>
|
|
<p>To enable specific OSPF debug categories:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit routing control-plane-protocol ospfv2 name default ospf debug
|
|
admin@example:/config/routing/…/ospf/debug/> set bfd true
|
|
admin@example:/config/routing/…/ospf/debug/> set nsm true
|
|
admin@example:/config/routing/…/ospf/debug/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>Available debug categories include:</p>
|
|
<ul>
|
|
<li><code>bfd</code>: BFD (Bidirectional Forwarding Detection) events</li>
|
|
<li><code>packet</code>: Detailed packet debugging (all OSPF packets)</li>
|
|
<li><code>ism</code>: Interface State Machine events</li>
|
|
<li><code>nsm</code>: Neighbor State Machine events</li>
|
|
<li><code>default-information</code>: Default route origination</li>
|
|
<li><code>nssa</code>: Not-So-Stubby Area events</li>
|
|
</ul>
|
|
<p>All debug options are disabled by default. Refer to the <code>infix-routing</code>
|
|
YANG model for the complete list of available debug options.</p>
|
|
<p>To view current debug settings:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show running-config routing control-plane-protocol
|
|
</code></pre></div>
|
|
<p>To disable all debug logging, simply delete the debug settings or set
|
|
all options back to <code>false</code>:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> delete routing control-plane-protocol ospfv2 name default ospf debug
|
|
admin@example:/config/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h3 id="rip-routing">RIP Routing<a class="headerlink" href="#rip-routing" title="Permanent link">¶</a></h3>
|
|
<p>The system supports RIP dynamic routing for IPv4, i.e., RIPv2. To enable
|
|
RIP and set active interfaces:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/> edit routing control-plane-protocol ripv2 name default rip
|
|
admin@example:/config/routing/…/rip/> set interfaces interface e0
|
|
admin@example:/config/routing/…/rip/> set interfaces interface e1
|
|
admin@example:/config/routing/…/rip/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<div class="admonition tip">
|
|
<p class="admonition-title">Tip</p>
|
|
<p>Remember to enable <a href="#ipv4-forwarding">IPv4 forwarding</a> for all the
|
|
interfaces you want to route between.</p>
|
|
</div>
|
|
<h4 id="rip-interface-settings">RIP interface settings<a class="headerlink" href="#rip-interface-settings" title="Permanent link">¶</a></h4>
|
|
<p>By default, interfaces send and receive RIPv2 packets. To control the
|
|
RIP version per interface:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/routing/…/rip/> edit interfaces interface e0
|
|
admin@example:/config/routing/…/rip/interfaces/interface/e0/> set send-version 1
|
|
admin@example:/config/routing/…/rip/interfaces/interface/e0/> set receive-version 1-2
|
|
admin@example:/config/routing/…/rip/interfaces/interface/e0/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>Valid version values are <code>1</code>, <code>2</code>, or <code>1-2</code> (both versions).</p>
|
|
<p>To configure a passive interface (advertise network but don't send/receive
|
|
RIP updates):</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/routing/…/rip/> edit interfaces interface e0
|
|
admin@example:/config/routing/…/rip/interfaces/interface/e0/> set passive
|
|
admin@example:/config/routing/…/rip/interfaces/interface/e0/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="rip-global-settings">RIP global settings<a class="headerlink" href="#rip-global-settings" title="Permanent link">¶</a></h4>
|
|
<p>RIP supports redistribution of connected and static routes:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/config/routing/…/rip/> set redistribute connected
|
|
admin@example:/config/routing/…/rip/> set redistribute static
|
|
admin@example:/config/routing/…/rip/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="debug-ripv2">Debug RIPv2<a class="headerlink" href="#debug-ripv2" title="Permanent link">¶</a></h4>
|
|
<p>The CLI provides various RIP status commands:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show ip rip
|
|
|
|
Default version control: send version 2, receive version 2
|
|
Interface Send Recv Key-chain
|
|
e0 2 2
|
|
e1 2 2
|
|
|
|
Routing for Networks:
|
|
e0
|
|
e1
|
|
|
|
Routing Information Sources:
|
|
Gateway BadPackets BadRoutes Distance Last Update
|
|
10.0.1.2 0 0 120 00:00:16
|
|
Distance: (default is 120)
|
|
|
|
admin@example:/> show ip rip neighbor
|
|
|
|
ADDRESS BAD-PACKETS BAD-ROUTES
|
|
10.0.1.2 0 0
|
|
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>For more detailed troubleshooting, RIP debug logging can be enabled to
|
|
capture specific protocol events. Debug messages are written to the
|
|
routing log file (<code>/var/log/routing</code>).</p>
|
|
<div class="admonition warning">
|
|
<p class="admonition-title">Caution</p>
|
|
<p>Debug logging significantly increases log output and may impact
|
|
performance. Only enable debug categories needed for troubleshooting,
|
|
and disable them when done.</p>
|
|
</div>
|
|
<p>To enable specific RIP debug categories:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> edit routing control-plane-protocol ripv2 name default rip debug
|
|
admin@example:/config/routing/…/rip/debug/> set events true
|
|
admin@example:/config/routing/…/rip/debug/> set packet true
|
|
admin@example:/config/routing/…/rip/debug/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<p>Available debug categories include:</p>
|
|
<ul>
|
|
<li><code>events</code>: RIP events (sending/receiving packets, timers, interface changes)</li>
|
|
<li><code>packet</code>: Detailed packet debugging (packet dumps with origin and port)</li>
|
|
<li><code>kernel</code>: Kernel routing table updates (route add/delete, interface updates)</li>
|
|
</ul>
|
|
<p>All debug options are disabled by default. Refer to the <code>infix-routing</code>
|
|
YANG model for the complete list of available debug options.</p>
|
|
<p>To view current debug settings:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show running-config routing control-plane-protocol
|
|
</code></pre></div>
|
|
<p>To disable all debug logging, simply delete the debug settings or set
|
|
all options back to <code>false</code>:</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> configure
|
|
admin@example:/config/> delete routing control-plane-protocol ripv2 name default rip debug
|
|
admin@example:/config/> leave
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h3 id="view-routing-table">View routing table<a class="headerlink" href="#view-routing-table" title="Permanent link">¶</a></h3>
|
|
<p>The routing table can be inspected from the operational datastore, XPath
|
|
<code>/routing/ribs</code>, using sysrepocfg, NETCONF/RESTCONF, or using the CLI.</p>
|
|
<h4 id="ipv4-routing-table">IPv4 routing table<a class="headerlink" href="#ipv4-routing-table" title="Permanent link">¶</a></h4>
|
|
<p>This CLI example shows the IPv4 routing table with a few connected
|
|
routes and some routes learned from OSPF. See the next section for
|
|
an explanation of route preferences (PREF).</p>
|
|
<p>The <code>></code> at the start of a line marks a selected route (in the IETF YANG
|
|
model referred to as <em>active</em>), if there are more than one route with
|
|
the same destination the <code>*</code> marks the next-hop used and installed in
|
|
the kernel FIB (the YANG model refers to this as <em>installed</em>).</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show ip route
|
|
DESTINATION PREF NEXT-HOP PROTO UPTIME
|
|
>* 0.0.0.0/0 110/2 10.0.23.1 ospfv2 4h2m43s
|
|
>* 10.0.0.1/32 110/4000 10.0.13.1 ospfv2 4h2m43s
|
|
10.0.0.3/32 110/0 lo ospfv2 4h2m57s
|
|
>* 10.0.0.3/32 0/0 lo direct 4h2m58s
|
|
10.0.13.0/30 110/2000 e5 ospfv2 4h2m57s
|
|
>* 10.0.13.0/30 0/0 e5 direct 4h2m58s
|
|
10.0.23.0/30 110/1 e6 ospfv2 4h2m57s
|
|
>* 10.0.23.0/30 0/0 e6 direct 4h2m58s
|
|
192.168.3.0/24 110/1 e2 ospfv2 4h2m57s
|
|
>* 192.168.3.0/24 0/0 e2 direct 4h2m58s
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="ipv6-routing-table">IPv6 routing table<a class="headerlink" href="#ipv6-routing-table" title="Permanent link">¶</a></h4>
|
|
<p>This CLI example show the IPv6 routing table.</p>
|
|
<div class="highlight"><pre><span></span><code>admin@example:/> show ipv6 route
|
|
DESTINATION PREF NEXT-HOP PROTO UPTIME
|
|
>* ::/0 1/0 2001:db8:3c4d:50::1 static 0h1m20s
|
|
>* 2001:db8:3c4d:50::/64 0/0 e6 direct 0h1m20s
|
|
>* 2001:db8:3c4d:200::1/128 0/0 lo direct 0h1m20s
|
|
* fe80::/64 0/0 e7 direct 0h1m20s
|
|
* fe80::/64 0/0 e6 direct 0h1m20s
|
|
* fe80::/64 0/0 e5 direct 0h1m20s
|
|
* fe80::/64 0/0 e4 direct 0h1m20s
|
|
* fe80::/64 0/0 e3 direct 0h1m20s
|
|
* fe80::/64 0/0 e2 direct 0h1m20s
|
|
>* fe80::/64 0/0 e1 direct 0h1m20s
|
|
admin@example:/>
|
|
</code></pre></div>
|
|
<h4 id="route-preference">Route Preference<a class="headerlink" href="#route-preference" title="Permanent link">¶</a></h4>
|
|
<p>The operating system leverages FRRouting (<a href="https://frrouting.org/">Frr</a>) as routing engine
|
|
for both static and dynamic routing. Even routes injected from a DHCP
|
|
client, and IPv4 link-local (IPv4) routes, are injected into Frr to let
|
|
it weigh all routes before installing them into the kernel routing table
|
|
(sometimes referred to as FIB).</p>
|
|
<p>Routes have different weights made up from a <em>distance</em> and a <em>metric</em>.
|
|
The kernel routing table only talks about <em>metric</em>, which unfortunately
|
|
is <strong>not the same</strong> -- this is one of the reasons why the term <em>route
|
|
preference</em> is used instead. It is recommended to use the CLI, or any
|
|
of the other previously mentioned YANG based front-ends, to inspect the
|
|
routing table.</p>
|
|
<p>Default distances used (lower numeric value wins):</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><strong>Distance</strong></th>
|
|
<th><strong>Protocol</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>0</td>
|
|
<td>Kernel routes, i.e., connected routes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>1</td>
|
|
<td>Static routes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>5</td>
|
|
<td>DHCP routes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>110</td>
|
|
<td>OSPF</td>
|
|
</tr>
|
|
<tr>
|
|
<td>254</td>
|
|
<td>IPv4LL (ZeroConf) device routes</td>
|
|
</tr>
|
|
<tr>
|
|
<td>255</td>
|
|
<td>Route will not be used or redistributed</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Hence, a route learned from OSPF may be overridden by a static route set
|
|
locally. By default, even a route to the same destination, but with a
|
|
different next-hop, learned from a DHCP server wins over an OSPF route.</p>
|
|
<p>The distance used for static routes and DHCP routes can be changed by
|
|
setting a different <em>routing preference</em> value.</p>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>The kernel metric is an unsigned 32-bit value, which is read by Frr as
|
|
(upper) 8 bits distance and 24 bits metric. But it does not write it
|
|
back to the kernel FIB this way, only selected routes are candidates
|
|
to be installed in the FIB by Frr.</p>
|
|
</div>
|
|
<h4 id="source-protocol">Source protocol<a class="headerlink" href="#source-protocol" title="Permanent link">¶</a></h4>
|
|
<p>The source protocol describes the origin of the route.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>Protocol</strong></th>
|
|
<th style="text-align: left;"><strong>Description</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">kernel</td>
|
|
<td style="text-align: left;">Added when setting a subnet address on an interface</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">static</td>
|
|
<td style="text-align: left;">User created, learned from DHCP, or IPv4LL</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">ospfv2</td>
|
|
<td style="text-align: left;">Routes learned from OSPFv2</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The YANG model <em>ietf-routing</em> support multiple ribs but only two are
|
|
currently supported, namely <code>ipv4</code> and <code>ipv6</code>.</p>
|
|
<div class="footnote">
|
|
<hr>
|
|
<ol>
|
|
<li id="fn:1">
|
|
<p><code>(source MAC XOR destination MAC XOR EtherType) MODULO num_links</code> <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
|
|
</li>
|
|
<li id="fn:2">
|
|
<p>Link-local IPv6 addresses are implicitly enabled when enabling
|
|
IPv6. IPv6 can be enabled/disabled per interface in the
|
|
<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip</a> YANG model. <a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">↩</a></p>
|
|
</li>
|
|
<li id="fn:3">
|
|
<p>For example, IPv4 groups are mapped to MAC multicast addresses by
|
|
mapping the low-order 23-bits of the IP address in the low-order 23
|
|
bits of the Ethernet address 01:00:5E:00:00:00. Meaning, more than
|
|
one IP multicast group maps to the same MAC multicast group. <a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">↩</a></p>
|
|
</li>
|
|
<li id="fn:4">
|
|
<p>A YANG deviation was previously used to make it possible to set
|
|
<code>phys-address</code>, but this has been replaced with the more flexible
|
|
<code>custom-phys-address</code>. <a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">↩</a></p>
|
|
</li>
|
|
<li id="fn:5">
|
|
<p>MAC bridges on Marvell Linkstreet devices are currently limited to
|
|
a single MAC database, this may be a problem if the same MAC address
|
|
appears in different MAC bridges. <a class="footnote-backref" href="#fnref:5" title="Jump back to footnote 5 in the text">↩</a></p>
|
|
</li>
|
|
<li id="fn:6">
|
|
<p>Ethernet counters are described in <em>ieee802-ethernet-interface.yang</em>
|
|
and <em>infix-ethernet-interface.yang</em>. There is a dedicated document on
|
|
<a href="../eth-counters/">Ethernet Counters</a> that provide additional details
|
|
on the statistics support. <a class="footnote-backref" href="#fnref:6" title="Jump back to footnote 6 in the text">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
Copyright © 2022-2025 The KernelKit Team
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
|
|
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["toc.follow", "navigation.path", "navigation.instant", "navigation.instant.progress", "navigation.tracking", "navigation.indexes", "search.highlight", "search.share", "content.code.copy", "content.code.annotate", "content.footnote.tooltips"], "search": "../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.e71a0d61.min.js"></script>
|
|
|
|
|
|
|
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
document$.subscribe(()=>{ lightbox.reload(); });
|
|
</script></body></html> |