Linux实现的ARP缓存老化时间原理解析

2012-02-11 22:00 1566人阅读 评论(0) 收藏 举报

一.问题

众所周知,ARP是一个链路层的地址解析协议,它以IP地址为键值,查询保有该IP地址主机的MAC地址。协议的详情就不详述了,你可以看RFC,也可以看教科书。这里写这么一篇文章,主要是为了做一点记录,同时也为同学们提供一点思路。具体呢,我遇到过两个问题:

1.使用keepalived进行热备份的系统需要一个虚拟的IP地址,然而该虚拟IP地址到底属于哪台机器是根据热备群的主备来决定的,因此主机器在获得该虚拟IP的时候,必须要广播一个免费的arp,起初人们认为这没有必要,理由是不这么做,热备群也工作的很好,然而事实证明,这是必须的;

2.ARP缓存表项都有一个老化时间,然而在linux系统中却没有给出具体如何来设置这个老化时间。那么到底怎么设置这个老化时间呢?

二.解答问题前的说明

ARP协议的规范只是阐述了地址解析的细节,然而并没有规定协议栈的实现如何去维护ARP缓存。ARP缓存需要有一个到期时间,这是必要的,因为ARP缓存并不维护映射的状态,也不进行认证,因此协议本身不能保证这种映射永远都是正确的,它只能保证该映射在得到arp应答之后的一定时间内是有效的。这也给了ARP欺骗以可乘之机,不过本文不讨论这种欺骗。

像Cisco或者基于VRP的华为设备都有明确的配置来配置arp缓存的到期时间,然而Linux系统中却没有这样的配置,起码可以说没有这样的直接配置。Linux用户都知道如果需要配置什么系统行为,那么使用sysctl工具配置procfs下的sys接口是一个方法,然而当我们google了好久,终于发现关于ARP的配置处在/proc/sys/net/ipv4/neigh/ethX的时候,我们最终又迷茫于该目录下的N多文件,即使去查询Linux内核的Documents也不能清晰的明了这些文件的具体含义。对于Linux这样的成熟系统,一定有办法来配置ARP缓存的到期时间,但是具体到操作上,到底怎么配置呢?这还得从Linux实现的ARP状态机说起。 如果你看过《Understading Linux Networking Internals》并且真的做到深入理解的话,那么本文讲的基本就是废话,但是很多人是没有看过那本书的,因此本文的内容还是有一定价值的。

Linux协议栈实现为ARP缓存维护了一个状态机,在理解具体的行为之前,先看一下下面的图(该图基于《Understading Linux Networking Internals》里面的图26-13修改,在第二十六章):

linux系统中arp老化时间计算,Linux实现的ARP缓存老化时间原理解析相关推荐

  1. linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

    用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...

  2. linux系统中的进程调度采用( ),Linux系统中的进程调度.ppt

    Linux系统中的进程调度.ppt 第3章 处理机调度 本章重点 3.1 调度级别 3.2 作业调度 3.3 进程调度 一.基本概念 二.调度级别 一.基本概念 处理机调度是操作系统的重要功能之一,其 ...

  3. linux系统中定时器使用方法,Linux下实现定时器Timer的几种方法

    使用sleep()和usleep() 其中sleep精度是1秒,usleep精度是1微妙,具体代码就不写了.使用这种方法缺点比较明显,在Linux系统中,sleep类函数不能保证精度,尤其在系统负载比 ...

  4. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  5. linux系统中find怎么用,Linux系统中查找命令find的使用方法(一)

    今天达内Linux培训小编要跟大家分享的文章是关于Linux系统中中查找命令find的使用方法.熟悉Linux系统的小伙伴们都知道,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Li ...

  6. Linux系统中read的用法,Linux系统中read的使用技巧

    今天小编要跟大家分享的文章是Linux系统中read的使用技巧.正在从事Linux运维工作的小伙伴们,为了大家更好的从事Linux运维工作,今天小编为大家准备了这篇read的使用技巧的文章,下面来和小 ...

  7. 在linux系统中 通过使用shell,linux系统中的shell和vi编辑器应用详细介绍

    shell和vi编辑器 一.Shell 1.什么时shell Shell就是用户与操作系统内核之间的接口,起着协调用户和系统的一致性和用户在系统之间的交互作用.具体如下图: 2.shell的功能 Sh ...

  8. linux系统中find怎么用,linux系统中‘find’的详细用法

    "find"指令是linux系统下较为常用的指令,它常见的用法我们也需要掌握,下面主要是对'find'指令的常见用法作一下总结,希望能够对其他人有所帮助. 在linux系统下用&q ...

  9. 在linux系统中如何查看cpu,Linux中如何查看CPU的信息

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. top - 02:53:32 up 16 days, ...

  10. linux系统中怎样抓logo,linux启动成功修改logo

     1:获得.png图片,可以截图获得,千万注意图片不能大于lcd屏幕,最好小点,大了有时显示不了.我几次没有显示就是图片原因. 2 使用Linux命令将图片转换为ppm图片:也可以使用logoma ...

最新文章

  1. 五分钟体验分布式事务框架Seata
  2. python有时候没有智能提示_python没有报错提示
  3. c#.net URL参数传递及在js中引用
  4. 【正则表达式】值匹配汉字的正字表达式
  5. show profile 分析SQL
  6. joomla建站-双语CMS系统开发的实现
  7. html支持移动端吗,bootstrap支持手机端吗?
  8. mysql 安全问题_浅谈MySQL数据库的Web安全问题
  9. Mysql的日期查询方法
  10. OpenShift 4 - 通过 secret 访问受保护的镜像
  11. Spring Security 3.0控制一个帐号只允许登录一次的问题
  12. hadoop学习笔记之-NFS配置
  13. 程序员叫啥名字_网友:什么是好程序员?程序员:用心给自己起个“配”自己的网名...
  14. 计算机网络实验 IP网络规划与路由设计
  15. python:实现abbreviation缩写算法(附完整源码)
  16. 报名 微信 投票 php,女神微信投票PHP源码带PC报名和手机报名吸粉做微信活动必备...
  17. Android-----将 Ijkplayer 集成到Android Studio中(一)
  18. Java部分集合以及部分常用类
  19. 从我做起 - 抵制1024程序员节-不要再自黑了
  20. 计算机专业职业生涯规划书,计算机信息专业职业生涯规划书

热门文章

  1. oracle yyyy和yy,日期格式 ccyy和yyyy 有什么区别
  2. XVF3600-熙光技术
  3. 微信小程序使用加速计实现摇一摇功能(一)
  4. 读 J. Gregory 之《游戏引擎架构》
  5. CSS设置超链接样式
  6. docker swarm 布署minio集群
  7. 16-U盘重装纯净版Windows10系统以及激活(U盘+PE+UEFI+小米游戏本)
  8. 拿走不谢!4100套iOS源码,40G!
  9. Graph Correspondence Transfer for Person Re-Identification论文笔记
  10. Java学习笔记7-面向对象(续)