<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<style>
html {
line-height: 1.2;
font-family: serif;
font-size: 0.9em;
color: black;
background-color: white;
}
body {
margin: 0;
margin-right: auto;
max-width: 36em;
padding: 1em;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 11pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: black;
}
a:visited {
color: black;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 0.5em;
padding-left: 0.5em;
border-left: 2px solid #e6e6e6;
color: #444;
}
code {
font-family: 'Lucida Console', monospace;
font-size: 95%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
max-width: unset;
width: fit-content;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
max-width: unset;
white-space: pre-wrap;
}
pre code span {
white-space: pre;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
code.diff span.kw,
code.diff span.dt {
font-weight: bold;
}
code.diff span.va {
background-color: rgba(192, 255, 192, 64);
color: rgb(0, 64, 0);
}
code.diff span.st {
background-color: rgba(255, 192, 192, 64);
color: rgb(64, 0, 0);
}
pre.diff {
background-color: rgb(240, 240, 240);
padding: 0.4em;
border: 1pt solid grey;
}
hr {
background-color: black;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
th {
border-top: 1px solid black;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
q { quotes: "„" "”" "»" "«"; }
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<p>Dear Matthieu,</p>
<p>thank you for your patch!</p>
<p>On Wed, Jan 14, 2026 at 07:50:29AM +0000, Matthieu Gouel via
Bird-users wrote:</p>
<blockquote>
<p>Currently, the (preliminary) BMP protocol implementation in BIRD does
not support ADJ-RIB-Out monitoring. Only ADJ-RIB-In pre- and post-policy
are supported at the moment.</p>
<p>I have implemented support for ADJ-RIB-Out post-policy monitoring,
which is relatively straightforward to add. The proposed implementation
is available here:</p>
<p>https://github.com/CZ-NIC/bird/compare/master…matthieugouel:bird:bmp-adj-rib-out</p>
<p>I have not implemented ADJ-RIB-Out pre-policy yet, as this would
require more intrusive changes related to export tables.</p>
</blockquote>
<p>I suspect that you don’t export from the <code>out_table</code>
actually, you are using the main table instead if I read your patch
correctly.</p>
<p>Also, your commit is missing documentation in
<code>doc/bird.sgml</code>, as well as supported RFC in
<code>proto/bmp/bmp.c</code> header.</p>
<p>You should also check mergability of your patch with the thread-next
branch, as if I remember correctly, the out_table is implemented there
completely differently.</p>
<p>Last but not least, I would love to see a commit on top of
https://gitlab.nic.cz/labs/bird-tools/ in the <code>netlab</code> folder
as an automatic test suite. David Petera (cc) is currently working on
BMP tests for other scenarios, and it might be worth consulting this
topic with him.</p>
<blockquote>
<p>I would be interested to know whether this is something you would
consider merging. More generally, is there interest in extending BMP
support in BIRD with additional features? I know that BMP is still
marked as preliminary and not production-ready, but it is a protocol I
personally rely on quite heavily.</p>
</blockquote>
<p>BMP should be production-worthy and we do consider merging BMP
extensions.</p>
<p>Please note, however, that BGP export is a very hot path and one
should very much think about what is being done there, performance-wise.
That deserves at least a warning in the documentation, so that somebody
doesn’t unknowingly turn their router into a traffic generator.</p>
<p>More specifically, the BMP implementation still severely lacks update
merging, and there have been some very serious thoughts about merging
the BMP TX with BGP TX data structures (which would do the update
merging). With that, I would suggest informing us about your plans
beforehand, so that we can plan around accordingly.</p>
<p>Have a nice day!<br />
Maria</p>
<p>–<br />
Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.</p>
</body>
</html>