序文
ネットワークサービスの劣化の理由を分析するとき、タイムマシンが必要になることがあります。まあ、または少なくともルート測定の履歴を記録する何か...あなたがそのような状況に自分自身を見つけたことがあれば、おそらくそれは興味深いでしょう。
ルーティングIPパケット、またはむしろそれらが提供するサービスに基づく最新のネットワークは、実際にはBGPによって制御されています。このプロトコルは、1980年代後半に3つのナプキンで設計されました。はい、それ以来、VPNルーティング情報の交換、トラフィックフィルタリングルール、その他の便利な機能など、多くの機能がこのプロトコルに追加されていますが、3つのナプキンで説明されているように、基本は同じです。そして、これにはプラスがあります。なぜなら、このプロトコルは本質的に非常に単純だからです。
しかし、私はその単純さについてではなく、ネットワーク運用サービス、またはNOC(ネットワーク運用センター(そしておそらくセンター))がしばしば直面する「戦いの後に拳を振る」ことについて話したかったのです。
" ", " -, 5 ". 5 . ? . , "" 5 , ? , - , , . - . ( ) . - , . , bgplay. . , , , .
. ( , ). , - ? , .
. , , BGP - exabgp. . , , - python. , . , . python (, GIL), , . ( ) , . BGP (, golang!). ? , , bgp- . . .
Rust — . BGP . exabgp BGP FSM , Rust API, std , . zettabgp, — bgpexplorer.
. Bgpexplorer bgp-, ( route reflector) bgp-, . RIB (Routing Information Database) , . -. - , .
- . , () .
, git rust.
$ git clone https://github.com/wladwm/bgpexplorer
...
$ cd bgpexplorer
$ cargo build
...
. .
Cisco, :
! 65535 ,
router bgp 65535
! , IBGP
neighbor 10.1.1.1 remote-as 65535
!
neighbor 10.1.1.1 update-source Loopback0
!
neighbor 10.1.1.1 transport connection-mode passive
address-family ipv4
!
neighbor 10.1.1.1 activate
!
neighbor 10.1.1.1 route-reflector-client
! ipv4 labeled-unicast
neighbor 10.1.1.1 send-label
address-family vpnv4
! VPNv4
neighbor 10.1.1.1 activate
neighbor 10.1.1.1 send-community extended
$ cat > bgpexplorer.ini <<EOF
[main]
httplisten=0.0.0.0:8080
httproot=contrib
session=s0
whoisjsonconfig=whois.json
[s0]
mode=bmpactive
bgppeer=10.0.0.1
peeras=65535
EOF
main :
httplisten — http
httproot — . index.html .
Whoisjsonconfig whois
Session – , bgp, s0
(s0 ) :
bgppeer — BGP
Peeras —
protolisten — :, BGP BMP
Mode —
mode :
bgppassive —
bgpactive —
bmpactive — BMP
bmppassive — BMP
ini- bgpexplorer, ,
cargo run
.
RIB - IPv4, IPv6, VPN ..
, - .
. , .
community, aspath, nexthop, route-target, route-distinguisher.
ASnにカーソルを合わせると、ルーターのアドレス、whoisまたはDNSへのクエリが実行され、受信した情報がポップアップに表示されます。長い場合もありますが、便利な場合もあります。
このツールが他の人に役立つといいのですが。見つかった問題、願い、アイデア、建設的な批判は大歓迎です。