Statistics
| Branch: | Revision:

iof-docs / specs / bgp_graphml.tex @ a6b51dd0

History | View | Annotate | Download (3.45 KB)

1
\documentclass[twocolumn, 10pt]{article}
2
\usepackage{acronym} 
3
\usepackage{tikz} 
4
\usepackage{cleveref} 
5
\usetikzlibrary{calc,shapes,arrows}
6

    
7
\title{BGP graphml specification}
8
\begin{document}
9
\maketitle
10

    
11
\newcommand{\mandatory}{\textcolor{red}}
12

    
13
\acrodef{AS}{autonomous system}
14
\acrodef{ADV}{advertisement}
15

    
16
This document describes the graphml representation of a BGP network.
17
Graphml is a standard for representing graphs enabling attribute embedding.
18

    
19
A BGP network is a simple undirected graph $G(V, E)$ (no self-loops, no multi-edges) modeling BGP \ac{ADV} communication.
20

    
21

    
22
\begin{itemize}
23
\item \textbf{A node} is an eBGP speaker node representing an \ac{AS};
24
\item \textbf{An edge} represents a BGP \ac{ADV} communication link (hence undirected).
25
\end{itemize}
26

    
27
\section{Attributes}
28

    
29
We indicate with \textit{destination\_string} a concatenation of IP subnets, in the form of: {\footnotesize{\verb[<ip_address>/<mask_bits>,<ip_address>/<mask_bits>,...[ }}
30
\\
31

    
32
Node attributes (mandatory in red):
33
\begin{itemize}
34
\item \mandatory{type}: \{T,M,C,CP\}, which respectively indicates if a node is tier-1, mid-level, customer or content provider;
35
\item destinations: [destination\_string], it indicates the destinations exposed by the node.
36
\end{itemize}
37

    
38
Edge attributes (mandatory in red):
39
\begin{itemize}
40
\item \mandatory{type}: \{transit, peer\}, which for a couple $(i, j)\in V\times V$, indicates whether there is a customer-provider or peer-to-peer relationship among $i$ and $j$.
41
\item \mandatory{customer}: $z\in V$, in case the edge $(i,j)$ type is \textit{transit}, $z$ identifies the customer among $i,j$ (the relationship provider is hence the other node). It is undefined in the case the edge type is not \textit{transit};
42
\item node\_a: $i\in (i, j)$;
43
\item node\_b: $j\in (i, j)$;
44
\item preference\_a: [integer], it indicates preference of node\_a to pick edge $(i,j)$ among node\_a neighbouring links;
45
\item preference\_b: [integer], it indicates preference of node\_b to pick edge $(i,j)$ among node\_b neighbouring links;
46

    
47
\item mrai: [interval] in seconds, it indicates the per link $(i,j)$ minimum route \ac{ADV} interval. Note, node-based mrai setup (Fabrikant gadget) can be described by setting all its mrai edge intervals to the same value.
48
\end{itemize}
49

    
50
\section{Example}
51
The following is a basic graphml example with mandatory attributes only.
52

    
53
\footnotesize
54
\begin{verbatim}
55
<?xml version='1.0' encoding='utf-8'?>
56
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
57
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
58
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
59
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
60
<key attr.name="type" attr.type="string" for="edge" id="d2"/>
61
<key attr.name="customer" attr.type="long" for="edge" id="d1"/>
62
<key attr.name="type" attr.type="string" for="node" id="d0"/>
63
<graph edgedefault="undirected">
64
<node id="1">
65
  <data key="d0">T</data>
66
</node>
67
<node id="2">
68
  <data key="d0">M</data>
69
</node>
70
<node id="3">
71
  <data key="d0">C</data>
72
</node>
73
<node id="4">
74
  <data key="d0">CP</data>
75
</node>
76
<edge source="2" target="1">
77
  <data key="d2">transit</data>
78
  <data key="d1">2</data>
79
</edge>
80
<edge source="3" target="2">
81
  <data key="d2">transit</data>
82
  <data key="d1">3</data>
83
</edge>
84
<edge source="4" target="2">
85
  <data key="d2">transit</data>
86
  <data key="d1">4</data>
87
</edge>
88
<edge source="3" target="4">
89
  <data key="d2">peer</data>
90
</edge>
91

    
92
</graph></graphml>
93
\end{verbatim}
94

    
95
%\bibliographystyle{IEEEtran}
96
%\bibliography{biblio}
97

    
98
\end{document}