这要从一个问题说起

公司有一台设备,在联网并从同一个cdn节点上获取数据,发现用着用着从cdn节点上获取数据就失败了,但是这时设备在ping百度以及上其它网还是正常的,在当时这还是很令人费解的。在分析app,设备网络特性以及公司网络架构后发现了这一问题的原因是icmp redirect导致的问题。

ICMP重定向消息是路由器发现主机针对某个目的ip有一个更好的路由策略,其使用ICMP redirect方式通知主机。icmp redirect 能避免带宽的不必要浪费。公司网络架构把不是同一个网段地址作为redirect,这导致了问题。

公司的网络架构如下。

设备在开始访问公网的一个cdn节点时,通过默认网关192.168.1.1发送网络,数据包到达公司出口路由器后,发现要访问的是外网,于是通过.66端口发送给.65,这一流程走的是红色路线,但是随着访问同一cdn节点量变大,路由器发现针对该机器的请求有一个更优的路径,

原本的路径是(红色)

机器1---》交换机(进)--》交换机(出)---》路由器1(进)---》路由器1(出)--》交换机(进)----》交换机(出)---》路由器2(进)------

更优路径是(绿色):

机器1--》交换机(进)---》交换机(出)---》路由器2(进)---

这时将会发送icmp重定向包

知道其下一跳是.65后,其发送ARP包,请求.65的MAC地址以期望进行封包,但是由于不在同一个网段,ARP包无法被.65收到,这就导致了访问失败。

Linux是如何处理ICMP redirect

linux路由分三种:

1,根据本机ip获取同一个网段作为路由一种

2.手工命令指定

3.网上协议指定,如dhcp,icmp redirect等

可以发现arp请求失败后其mac地址的信息是不知道的,所以显示incomplete状态。

路由cache里的信息

路由cache里包含了该路由信息,

路由表信息是正确的,关闭cache是一种解决方法,当然还有接口是关闭redirect功能

将其删除ip route flush cache,后可以上网

ICMP redirect相关推荐

  1. ICMP重定向(ICMP Redirect)

     网络中的路由器通过相互之间的共同努力,将用户的数据包转发到目的地.通常情况下,主机都会将去往远程网络的数据包发送到路由器,路由器再尽最大努力转发数据.但是在某些情况下,收到数据包的路由器可能并不是去 ...

  2. 关于ICMP Redirect路由的一个不是bug的bug

    在新公司碰到的第一个网络问题竟然是关于重定向路由的,这个不常被关注的问题竟然花费了我整整一下午时间来整理,本文介绍Linux协议栈是如何对待重定向路由的. 路由项的生成方式 任何具备网络功能的设备在内 ...

  3. 693-详解ICMP 协议

    什么是 ICMP 协议 IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失.重复.延迟和乱序等各种情况, 但是 IP 协议对这些糟糕的情况并不拥有有效的检 ...

  4. ICMP协议简介(一)

    ICMP协议简介(一) 1. ICMP介绍 架构IP网络时需要特别注意两点: 1.确认网络是否正常工作 2.遇到异常时进行问题诊断 ICMP的主要功能: 1.确认IP包是否成功送达目标地址. 2.通知 ...

  5. ICMP协议和ICMP重定向详解

    ICMP协议 internet消息控制协议(ICMP)指定了多种消息类型,这些消息的共同目的就是管理网络,详见RFC792.ICMP的消息可以分为错误消息.请求消息和响应消失.ICMP数据包格式如图所 ...

  6. Cisco Nexus 之“ip redirect”

    ICMP Redirect引起的网络丢包 场景 当网络设备发下发送给自己的数据包,下一跳地址和发送源地址在同一个子网时,就会回复一个icmp redirect报文,用于向发送源设备指出存在一个更加优化 ...

  7. ping的整个流程详解(icmp)

    原文:ping好几年 ?今天终于把 ping 的原理搞懂了,打算图解教你!_小林coding-CSDN博客 原文的大佬一整个系列都写的非常优秀,转载只为了个人记录 文章目录 前言 正文 IP协议的助手 ...

  8. 设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)

    Sysctl是一个允许您改变正在运行中的Linux系统的接口.它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能.用sysctl可以读取设置超过五百 ...

  9. 听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!

    来自:小林coding 每日一句英语学习,每天进步一点点: 前言 在日常生活或工作中,我们在判断与对方网络是否畅通,使用的最多的莫过于 ping 命令了. "那你知道 ping 是如何工作的 ...

最新文章

  1. RMQ+1/-1算法
  2. Python中常用字符串 函数-转
  3. C++使用Windows API CreateMutex函数多线程编程
  4. 流式视频处理架构设计
  5. 百度十亿级流量的搜索前端,是怎么做架构升级的?
  6. APP设计没有灵感?让那些小众但富有创意的页面告诉你!
  7. php抓娃娃机器,vue制作抓娃娃机 - osc_icwhzig7的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 力扣——204. 计数质数
  9. python绘制多边形_在python-matplotlib中绘制3D多边形
  10. HDU 2014 - 青年歌手大奖赛_评委会打分
  11. js中this指向的三种情况
  12. 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
  13. 无人值守地磅称重系统方案的设计原理
  14. python_pygame_alpha-beta剪枝算法_玩中国象棋
  15. 03-多线程下载网图
  16. 网络工程师配置安全设备,防火墙基本配置管理
  17. 徒步新纪录--从植物园到北理
  18. c语言float代码,[求助]float
  19. 基于STM32人群定位,调速智能风扇设计
  20. 先科sast x6盒子拆机解决散热问题

热门文章

  1. java 增强for循环效率_java – 为什么增强for循环的循环效率比正常
  2. 关于MFC框架下的TextOut()函数输出变量的值
  3. LCD显示器缺陷自动化检测方案
  4. BAS入侵和攻击模拟 简析(一)
  5. 洛谷 T63713 合并果子
  6. 中国为什么不能Ubuntu?
  7. 《全网唯一》解决华为OpenEuler 22.03LTS重启后,docker丢失自定义网络,docker-compose报错: network not found
  8. 详解:生产线平衡改善的四大方法与八大步骤!
  9. 我的 IP 地址(View IP address)
  10. 2018春运火车票务系统:每天1500亿浏览量,1秒卖票700张