当前位置: 首页 > news >正文

BGP的“聪明选路”遇上了TCP的“路径洁癖”,需人工调和

在路由器R1上有两条外网,WAN1和WAN2。

R1上做了域名分流功能,全局网址分到WAN1,指定域名分到WAN2(优先级更高)。

症状是用户反馈部分网页无法打开。

于是各种检查尝试......  2天过去了......

最终结论是:即使SYN请求通过R1发出,服务器响应的目标IP(R1的公网地址)可能被BGP策略判定为“通过R2更优”,导致响应包从R2进入用户网络。

分析过程:

对TCP三次握手的影响:路径不对称导致连接失败

TCP协议要求连接路径​​双向一致​​(对称性),否则会破坏传输层的可靠性机制。以下是具体冲突点:

​​1.TCP序列号(Sequence Number)校验失败​​ ​​

请求阶段​​:客户端通过R1发送SYN包(序列号Seq=X),服务器记录此序列号。 ​​

响应阶段​​:若SYN-ACK通过R2返回,客户端预期确认号为Ack=X+1,但R2转发的包可能因路径延迟或修改导致序列号不匹配。 ​​

结果​​:客户端丢弃SYN-ACK包,重传SYN请求(Wireshark显示TCP Retransmission) 。 ​​

2.NAT会话表失效

路由器在转发SYN请求时执行​​SNAT​​(源地址转换),将客户端内网IP替换为R1的公网IP,并记录会话表。

当SYN-ACK从R2进入时,路由器发现此包不匹配R1的会话表条目,可能丢弃或错误转发。

3.实际现象​​

Chrome开发者工具显示ERR_CONNECTION_RESET或超时。

TCP状态机因路径不一致进入死锁(客户端等待SYN-ACK,服务器等待ACK确认)

NAT会话表失效​​

路由器在转发SYN请求时执行​​SNAT​​(源地址转换),将客户端内网IP替换为R1的公网IP,并记录会话表。 当SYN-ACK从R2进入时,路由器发现此包不匹配R1的会话表条目,可能丢弃或错误转发 。 ​​实际现象​​ Chrome开发者工具显示ERR_CONNECTION_RESET或超时。 TCP状态机因路径不一致进入死锁(客户端等待SYN-ACK,服务器等待ACK确认)

以下是BGP的逐包独立选路特性,​​ BGP路由器对每个数据包的转发决策是独立的,基于以下优先级顺序 :

​​本地优先级​​:若R2所在路径的优先级更高(如运营商策略优化),则优先选择;

AS路径长度(AS Path)​​:若通过R2的路径经过的AS数量更少(如AS Path更短),则优选; ​​

MED值(多出口鉴别器)​​:若R2所在入口的MED值更小(如成本更低),则流量被导向R2;

​​其他规则​​:如权重(Weight)、下一跳IGP开销等。

http://www.lryc.cn/news/592185.html

相关文章:

  • jar命令提取 JAR 文件
  • Esbuild-新一代极速前端构建打包工具
  • PE系统机器视觉实战(直播回放)
  • 提示工程核心概念:与AI清晰沟通的艺术
  • wx小程序设置沉浸式导航文字高度问题
  • ::v-deep 是 Vue 中用于 ‌样式穿透(深度选择器)‌ 的语法
  • 自然语言处理:AI 如何听懂人类的 “话”?​
  • 香港服务器SSH安全加固方案与密钥认证实践
  • 多模态大模型重构人机交互,全感官时代已来
  • 从算力到智能资产:Sol long引领A I A g ent赋能设备的价值重构
  • 雪豹大模型驱动效率革命 华鼎冷链科技重构餐饮供应链神经网络
  • Mock 单元测试
  • 物流3D工业相机:解锁自动化物流新纪元
  • Python Pandas 实践学习笔记(1)
  • GISBox切片器技术解析:RVT模型到3DTiles瓦片的高性能转换方案
  • elasticsearch+logstash+kibana+filebeat实现niginx日志收集(未过滤日志内容)
  • 使用 C++ 和 OpenCV 进行表面划痕检测
  • 算法-动态规划
  • Paimon对比基于消息队列(如Kafka)的传统实时数仓方案的优势
  • 【动态规划 解析】
  • centos7安装MySQL8.4手册
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • Vue常见指令
  • Webpack 项目优化详解
  • mac mlx大模型框架的安装和使用
  • LangChain 源码剖析(三):连接提示词与大语言模型的核心纽带——LLMChain
  • FastAdmin后台登录地址变更原理与手动修改方法-后台入口机制原理解析-优雅草卓伊凡
  • 反序列化漏洞1-PHP序列化基础概念(0基础超详细)
  • 【C# in .NET】18. 探秘接口:契约精神
  • ARM64高速缓存,内存属性及MAIR配置