GoBGP的安装和使用

 

相关介绍

GoBGP 是一个用 Go 语言实现的开放源代码,用于在服务器上实现BGP的功能。主要是利用 Go 语言的特性来提供高效、可靠的 BGP 路由功能。GoBGP 支持多种 BGP 特性,包括路由服务器、路由反射器、策略管理、MRT、BMP、EVPN、Flowspec 等。

具体步骤

安装Go语言环境

1、推荐的操作系统包括一下三种。我本次使用linux的centos进行安装和使用:

  • Linux (Ubuntu, CentOS, etc.)
  • macOS
  • Windows (通过 WSL)

2、下载、解压Go语言安装包。https://golang.org,访问不了,我是用了阿里云的镜像:

#下载 Go
wget https://mirrors.aliyun.com/golang/go1.22.12.linux-amd64.tar.gz

# 解压到 /usr/local
tar -C /usr/local -xzf go1.22.12.linux-amd64.tar.gz

 3、在如下文件中,添加环境变量,并立即生效:

[root@localhost ~]# cat /etc/profile.d/go.sh

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.cn,direct
export GO111MODULE=on

  [root@localhost ~]# source /etc/profile.d/go.sh

4、创建Go工作目录:

mkdir -p ~/go/{bin,src,pkg}

5、完成安装,查看版本:

#查看版本
[root@localhost ~]# go version go version go1.22.12 linux/amd64
#查看环境配置 [root@localhost
~]# go env GO111MODULE='on' GOARCH='amd64' GOBIN='' GOCACHE='/root/.cache/go-build' GOENV='/root/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/root/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/root/go' GOPRIVATE='' GOPROXY='https://goproxy.cn,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.22.12' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/dev/null' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build441529636=/tmp/go-build -gno-record-gcc-switches'

6、运行一个测试程序:

#创建一个测试程序
[root@localhost test-go]# cat hello.go
package main
import "fmt"
func main() {
fmt.Println("Go 安装成功!")
fmt.Println("恭喜!CentOS 上的 Go 环境已经配置完成")
}

#运行测试程序
[root@localhost test-go]# go run hello.go
Go 安装成功!
恭喜!CentOS 上的 Go 环境已经配置完成

安装GoBGP

1、下载GoBGP:

#下载GoBGP源代码
git clone https://github.com/osrg/gobgp.git

2、安装必要依赖:

#更新软件包列表
yum check-update

# 安装开发工具组
sudo yum groupinstall -y "Development Tools"

# 也可以逐个安装 build-essential 的组件
sudo yum install -y gcc gcc-c++ make automake autoconf kernel-devel

# 安装 SNMP 开发库
sudo yum install -y net-snmp-devel

# 安装其他可能的依赖
sudo yum install -y libcap-devel

3、使用Go Build编译:

# 编译 gobgp 命令行工具
go build -o gobgp ./cmd/gobgp

# 编译 gobgpd 守护进程
go build -o gobgpd ./cmd/gobgpd

4、做启动准备:

# 将二进制文件复制到系统路径
sudo cp gobgp gobgpd /usr/local/bin/

# 验证安装
which gobgp
which gobgpd
gobgp --version

5、配置BGP。主要配置信息有本地AS,邻居AS,对端建立邻居的地址:

[root@localhost test-go]# mkdir -p /etc/gobgp
[root@localhost test-go]# cat /etc/gobgp/gobgp.conf
[global.config]
as = 65001
router-id = "35.78.20.254"
[[neighbors]]
[neighbors.config]
neighbor-address = "35.78.20.254"
peer-as = 100
[root@localhost test-go]#

使用GoBGP

1、启动GoBGP:

方法1:

# 前台运行
sudo gobgpd -f /etc/gobgp/gobgp.conf

# 或后台运行
sudo gobgpd -f /etc/gobgp/gobgp.conf -d

方法2(推荐):

#创建服务文件
[root@localhost test-go]# cat /etc/systemd/system/gobgpd.service
[Unit]
Description=GoBGP Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gobgpd -f /etc/gobgp/gobgp.conf
Restart=always
RestartSec=5
User=root

[Install]
WantedBy=multi-user.target
[root@localhost test-go]#
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable gobgpd
sudo systemctl start gobgpd

# 检查状态
sudo systemctl status gobgpd

2、对端交换机配置:

[5700B-bgp]bgp 100
[5700B-bgp]peer 35.78.20.1 as-number 65001

3、查看BGP邻居状态:

【GoBGP查看方式】
# 查看邻居状态
gobgp neighbor

# 查看全局路由表
gobgp global rib

# 查看 BGP 信息摘要
gobgp summary


【交换机查看方式】
[5700B-bgp]dis bgp peer 35.78.20.1 verbose

邻居建立为established:

1d5d80b6b5a2dd8d2718d8ebd520711c

92814d404af8476abb6e9b98e0b1233a

 

posted @ 2025-11-21 17:10  1234roro  阅读(81)  评论(0)    收藏  举报