BGP-LS(Link-State)是通过BGP协议来传递IGP链路状态的一种BGP多协议扩展,通过BGP-LS,可以很容易获取到多IGP域的相关拓扑信息。常见的链路状态协议就两种: OSPF和ISIS。
当前各厂商主流路由器和三层交换机都支持BGP-LS。
bgp 2000
router-id 1.1.1.1
peer 12.0.0.230 as-number 2000
peer 192.168.200.141 as-number 2000
peer 192.168.200.141 connect-interface M-GigabitEthernet0/0/0
#
address-family link-state
peer 12.0.0.230 enable
peer 192.168.200.141 enable
peer 192.168.200.141 reflect-client
//将link-state发往SDN控制器200.141
ospf 1 router-id 1.1.1.1
distribute bgp-ls
// 将OSPF 的 LSDB 信息传递给 BGP link-state address-family
area 0.0.0.0
network 11.11.11.11 0.0.0.0
network 12.0.0.0 0.0.0.255
show ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Table
Topology base (MTID 0)
Routing for network
Destination Cost Type NextHop AdvRouter Area
23.0.0.0/24 2 Transit 12.0.0.230 2.2.2.2 0.0.0.0
33.33.33.33/32 3 Stub 12.0.0.230 3.3.3.3 0.0.0.0
11.11.11.11/32 0 Stub 0.0.0.0 1.1.1.1 0.0.0.0
2.2.2.230/32 1 Stub 12.0.0.230 2.2.2.2 0.0.0.0
12.0.0.0/24 1 Transit 0.0.0.0 2.2.2.2 0.0.0.0
Total nets: 5
Intra area: 5 Inter area: 0 ASE: 0 NSSA: 0
或者 show ip routing-table protocol ospf
Summary count : 5
OSPF Routing table status : <Active>
Summary count : 3
Destination/Mask Proto Pre Cost NextHop Interface
2.2.2.230/32 O_INTRA 10 1 12.0.0.230 Vlan229
23.0.0.0/24 O_INTRA 10 2 12.0.0.230 Vlan229
33.33.33.33/32 O_INTRA 10 3 12.0.0.230 Vlan229
//下面的几条inactive状态是因为它们是本地直连路由,直连路由比OSFP路由优先级更高。
OSPF Routing table status : <Inactive>
Summary count : 2
Destination/Mask Proto Pre Cost NextHop Interface
11.11.11.11/32 O_INTRA 10 0 0.0.0.0 Loop2
12.0.0.0/24 O_INTRA 10 1 0.0.0.0 Vlan229
show ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 1165 48 800000B1 0
Router 1.1.1.1 1.1.1.1 1569 48 8000002C 0
Router 2.2.2.2 2.2.2.2 1570 60 800000F9 0
Network 23.0.0.2 2.2.2.2 570 32 80000031 0
Network 12.0.0.230 2.2.2.2 1564 32 80000002 0
show bgp link-state 展示很多信息,下面依次进行介绍
Total number of routes: 16
//bgp link-state entry 的数量为16
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Prefix codes: E link, V node, T IP reachable route, u/U unknown,
I Identifier, N local node, R remote node, L link, P prefix,
L1/L2 ISIS level-1/level-2, O OSPF, D direct, S static,
a area-ID, l link-ID, t topology-ID, s ISO-ID,
c confed-ID/ASN, b bgp-identifier, r router-ID,
i if-address, n peer-address, o OSPF Route-type, p IP-prefix
d designated router address
在BGP-LS协议中存在对应Node、Link、Prefix三种NLRI封装格式和其它链路状态相关的属性值。这三种NLRI分别携带网络节点信息、链路信息和前缀信息。
就本次实验而言,介绍几个常用的:
Prefix codes | 含义 |
---|---|
E | link |
V | node |
N | local node |
R | R remote node |
p | IP-prefix |
r | router-ID |
a | area-ID |
d | designated router address 。DR 是OSPF中路由器的重要角色 |
b | bgp-identifier |
T | IP reachable route ,可达的有效路由前缀 |
i | if-address 。表示接口地址, 用在Link entry 中,表示链路的起点 |
n | peer-address 。对端地址,用在Link entry 中,表示链路的终点 |
首先介绍5条 [V] 开头的 Node entry:
前三条代表拓扑图中的三台路由器。后两条指出谁是 OSPF 中的 DR 路由器(d 标志)。
双层中括号中的信息,比如 [N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1]] 描述一个节点的信息。
* > Network : [V][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1]]/376
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [V][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]]/376
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [V][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r3.3.3.3]]/376
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [V][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1d12.0.0.229]]/408
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [V][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2d23.0.0.2]]/408
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
[E] 开头的代表 Link entry:
双层中括号中的信息,比如 [L[i12.0.0.229][n12.0.0.229]] 描述了一条链路。
i 表示接口地址,i12.0.0.229表示链路的起点;
n 表示接口地址,n12.0.0.229 表示这条链路的终点。
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1]][R[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1d12.0.0.229]][L[i12.0.0.229][n12.0.0.229]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]][R[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1d12.0.0.229]][L[i12.0.0.230][n12.0.0.229]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]][R[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2d23.0.0.2]][L[i23.0.0.2][n23.0.0.2]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r3.3.3.3]][R[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2d23.0.0.2]][L[i23.0.0.234][n23.0.0.2]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1d12.0.0.229]][R[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1]][L[i12.0.0.229][n12.0.0.229]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1d12.0.0.229]][R[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]][L[i12.0.0.229][n12.0.0.230]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2d23.0.0.2]][R[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]][L[i23.0.0.2][n23.0.0.2]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [E][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2d23.0.0.2]][R[c2000][b1.1.1.1][a0.0.0.0][r3.3.3.3]][L[i23.0.0.2][n23.0.0.234]]/824
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
[T] 开头的代表 有效的 路由前缀 entry :
这几条分别代表拓扑图中的3个loopback 网络:
* > Network : [T][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r1.1.1.1]][P[o0x01][p11.11.11.11/32]]/488
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [T][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r2.2.2.2]][P[o0x01][p2.2.2.230/32]]/488
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i
* > Network : [T][O][I0x0][N[c2000][b1.1.1.1][a0.0.0.0][r3.3.3.3]][P[o0x01][p33.33.33.33/32]]/488
NextHop : 0.0.0.0 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : i