前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解密BGPaaS代理是如何工作的

解密BGPaaS代理是如何工作的

作者头像
Tungsten Fabric
修改2020-08-04 17:52:31
4260
修改2020-08-04 17:52:31
举报

作者:Umberto Manferdini 译者:TF编译组

BGPaaS是允许虚拟机与Tungsten Fabric(注:原文为Contrail,本文以功能一致的Tungsten Fabric替换)进行BGP对话的一个功能。

请记住,Tungsten Fabric虚拟网络是存在于计算节点上的VRF。这些计算节点就像我们熟知的PE。同样,VM也可以被视为CE。在这种情况下,BGPaaS带来的BGP会话,就像我们在经典VPN中所具有的PE-CE协议一样。

使用BGPaaS的VM最多可以有2个邻居:VN网关(通常为.1)或VN服务地址(通常为.2)。

假设我有一个属于192.168.100.0/24的VM,其vmi(虚拟端口)地址是192.168.100.3。在这种情况下,如果在该端口上配置了BGPaaS,则VM可以建立2个BGP会话:一个指向192.168.100.1,另一个指向192.168.100.2。

即使BGP邻居地址是vRouter上的(“分布式”)IP,也不会在vRouter级别实现BGP逻辑。

Tungsten Fabric与Junos设备没有太大不同。例如,在MX中,控制平面和转发平面完全分离:路由引擎实现路由协议,而PFE实现转发功能。

同样,在Tungsten Fabric中,vRouter代表转发平面。控制平面位于Tungsten Fabric控制节点内。

因此,BGPaaS会话必须以某种方式到达控制节点。这可以通过让vRouter将任何BGPaaS会话代理到控制节点来实现。

端到端的BGP会话是在VM和控制节点之间运行的。

在POC环境中,我们可能只有一个控制节点,因此所有BGPaaS会话都将被代理到该节点。

另一方面,在实际设置中,为了实现HA,我们将有3个控制节点。创建BGPaaS时,vRouter将使用哈希函数来确定会话必须代理到哪个控制节点。

这也意味着即使vRouter没有任何问题,控制节点故障也将导致BGP会话中断。

这也是为什么要建议,同时建立指向VN网关(gateway)和VN服务(service)地址的会话。这样,一个会话(到.1)将被代理到一个控制节点(例如control1),而另一个会话(到.2)将被代理到另一个控制节点(例如control2),从而使服务能够抵御控制节点的故障。

实际上的过程,比这要复杂一些。最佳解决方案需要一个称为控制节点区域(control node zone)的额外对象,但这不在本讨论的范围之内。

由于vRouter充当了代理角色,这意味着它将把端到端BGP会话分为两个会话:

– 一个在VM和vRouter之间

– 一个在vRouter和控制节点之间

为了端到端监视并解决出现的任何问题,将这两个会话链接起来就变得很重要。

通过introspect可以很容易地实现这一点。

必须针对正确的计算节点运行“BgpAsAServiceSandeshReq”请求。这提供了在该计算节点上配置的BGPaaS对象的列表。

在返回的信息中,我们可以轻松地使用“Vm Nat Source Port”;在这种情况下为50027。

此外,虚拟机端口地址为192.168.135.11。

这足以将vm-vrouter会话映射到vrouter-control_node会话。

一旦知道了这些信息,就可以轻松地验证BGP数据包是否端到端流动。

我们可以通过在vRouter容器中使用vRouter cli实用程序“vifdump”,来检查在vrouter-vm会话上流动的数据包:

代码语言:javascript
复制
1.(vrouter-agent)[root@cpt3-dpdk /]$ vifdump -i vif0/6 port 179 and host 192.168.135.2  
2.vif0/6      PMD: tap5e37b408-81 NH: 80  
3.tcpdump: verbose output suppressed, use -v or -vv for full protocol decode  
4.listening on mon6, link-type EN10MB (Ethernet), capture size 262144 bytes  
5.09:47:15.762169 IP 192.168.135.2.bgp > 192.168.135.11.11133: Flags [P.], seq 2026783022:2026783041, ack 1247350197, win 210, options [nop,nop,TS val 918606763 ecr 607079479], length 19: BGP  
6.09:47:15.784239 IP 192.168.135.2.bgp > 192.168.135.11.11133: Flags [.], ack 20, win 210, options [nop,nop,TS val 918606785 ecr 607082480], length 0  
7.09:47:15.784246 IP 192.168.135.11.11133 > 192.168.135.2.bgp: Flags [P.], seq 1:20, ack 19, win 8326, options [nop,nop,TS val 607082480 ecr 918606763], length 19: BGP  

接下来,我们执行相同的操作,但是是在计算节点物理接口vif0/0上执行。

在这里,我们可以捕获流量,并通过之前确定的“Vm Nat Source Port”对其进行过滤。

如果我们通过Wireshark分析捕获的流量,那么可以发现很多东西:

端点正在交换KEEPALIVE消息,表明会话状态良好。

这里关键的细节是IP端点:

– 163.162.83.233是计算节点的vhost0地址;

– 163.162.83.204是控制节点的地址。BGP被代理到了这个控制节点!

从Tungsten Fabric的角度来看,这使我们可以再次使用introspect来验证端到端BGPaaS会话工作正常。

这次,我们对从wireshark抓包中识别出的控制节点运行自省请求。我们选择“bgp_peer”模块并请求“ShowBgpNeighborSummaryReq”。

幸运的是,会话状态已建立。

一切正常!这下没什么神秘的东西了~

推荐阅读

Tungsten Fabric入门宝典系列

  1. 首次启动和运行指南
  2. TF组件的七种“武器”
  3. 编排器集成
  4. 关于安装的那些事(上)
  5. 关于安装的那些事(下)
  6. 主流监控系统工具的集成
  7. 开始第二天的工作
  8. 8个典型故障及排查Tips
  9. 关于集群更新的那些事
  10. 说说L3VPN及EVPN集成
  11. 关于服务链、BGPaaS及其它
  12. 关于多集群和多数据中心
  13. 多编排器用法及配置

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 推荐阅读
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档