dylandreimerink/gobgp-php

dev-master 2017-11-05 21:56 UTC

This package is not auto-updated.

Last update: 2024-09-25 07:48:42 UTC


README

GoBGP gRPC 客户端的一个PHP封装

要求

安装

  1. 按照以下安装说明安装 gRPC PHP 扩展
  2. 需要此包:composer require dylandreimerink/gobgp-php

目标

本项目有两个主要目的

  1. 如果您想使用 GoBGP API,则必须手动为 PHP 生成 gRPC 客户端代码,这很麻烦。
  2. 一旦您获得了 GoBGP API,由于从 GoBGP API 发送和接收的大多数数据都是编码的,且文档不完整,因此很难开始。

本项目的目标是解决这两个问题。即使我可能决定将预生成的客户端代码移动到单独的仓库和包中。

到目前为止,只有 GoBGP API 的一小部分被封装,但我希望尽快全面覆盖。完成之后,整个代码库应该接受单元测试。

帮助和贡献总是受欢迎

贡献指南

生成 GoBGP gRPC API 客户端代码

客户端代码是从/api/gobgp.proto 文件生成的,该文件位于 /api/gobgp.proto。此文件采用protocol buffers格式,gRPC 使用 protocol buffers 作为 API 调用的格式。因此,我们需要安装 protoc(protocol buffers 编译器)并编译 gRPC php 插件用于 protoc

步骤-by-步骤

  1. 首先遵循正常安装说明
  2. 按照安装说明安装 protoc
  3. 按照说明安装 gRPC PHP protoc 插件
  4. 从 GoBGP 获取最新的 .proto 文件,生成最新的客户端代码,并用新生成的客户端代码替换 /lib 中的代码

当前版本客户端代码是从提交 #3678607 的 .proto 文件生成的

文档和参考

大部分工作是在解码和编码到正确的格式。大部分格式来自接受的 BGP RFC 或草案。到目前为止,我使用以下文档来找到我需要的内容

有时 GoBGP 可能会与最新的草案有所不同,在这些情况下,您必须逆向工程格式或查看源代码。

待办事项

  • 封装所有 API 调用
  • 为所有编解码函数编写单元测试
  • 添加规则构建器以进一步简化库的使用
  • 创建一种查询和过滤路由的简单方法

想法/用例

  • 使用两个GoBGP服务器和中间的一个php-gobgp实例,以便比BGP本身目前可能做到的更高级的输入过滤
  • 实现多个路由服务器之间的路由同步,以增加冗余
  • 为symfony和laravel创建该库的版本
  • 使用GoBGP的MRT转储和注入功能创建一个自动备份系统
  • 为BGP公告的变化创建自定义监控