虚拟IP与arp协议

一、虚拟IP

      虚拟IP(Vrtual IP Address),是一种不与特定计算机或者特定计算机网卡相对应的IP地址。所有发往这个IP地址的数据包最后都会经过真实的网卡到达目的主机的目的进程。
引用维基上面的定义:https://en.wikipedia.org/wiki/Virtual_IP_address
A virtual IP address (VIP or VIPA) is an IP address that doesn't correspond to an actual physical network interface (port). Uses for VIPs include network address translation (especially, one-to-many NAT), fault-tolerance, and mobility.
虚拟IP主要是用来网络地址转换,网络容错和可移动性。
       虚拟IP比较常见的一个用例就是在系统高可用性(High Availability HA)方面的应用,通常一个系统会因为日常维护或者非计划外的情况而发生宕机,为了提高系统对外服务的高可用性,就会采用主备模式进行高可用性的配置。当提供服务的主机M宕机后,服务会切换到备用主机S继续对外提供服务。而这一切用户是感觉不到的,在这种情况下系统对客户端提供服务的IP地址就会是一个虚拟IP,当主机M宕机后,虚拟IP便会漂浮到备机上,继续提供服务。
       在这种情况下,虚拟IP就不是与特定计算主机或者特定某个物理网卡对应的了,而是一种虚拟或者是说逻辑的概念,它是可以自由移动自由漂浮的,这样一来既对外屏蔽了系统内部的细节,又为系统内部的可维护性和扩展性提供了方便。

二、arp协议

        arp协议属于TCP/IP协议族里面一种用户将IP地址解析为MAC地址的协议。该协议是用户局域网内解析IP地址对应的物理地址。通常一个主机A给另一个主机B通过网络发送一个IP数据报的时候,首先会发送到主机A所在的路由器上面,然后路由器会判断目的地址是否在本网络内,是则直接转发到本网络内的目的主机,否则会继续传递到下一个路由,直到到达指定的网络的路由器。指定网络的路由器会将此数据报发送到目的主机。整个过程最后都会涉及到由某一个网络中的路由器发送到网内某一主机的过程。这个过程通常是由路由器发送一个arp广播请求,请求IP地址为数据包目的地址的主机将它自己的MAC地址发送过来,因为数据链路层的数据传输是通过物理地址传输的。arp请求会广播到所有网内的主机,网内其他主机收到这个arp请求后,首先会检查发送arp请求的主机的IP地址,然后将该IP地址和其对应的MAC地址存放在缓存中,然后会检查这个arp请求中请求的IP地址是否为自己的IP地址,是则发送一个arp应答,应答包含自己的IP地址和对应的MAC地址。当得到了MAC地址后,便可以将数据包正确传输到目的主机上了。
        arp协议中比较重要的内容之一就是arp缓存,主机操作系统会将IP地址与MAC地址的映射关系存放在主机的一片高速缓存中。
缓存失效:该缓存会在一定时间内失效,失效后,请求该IP地址时需要广播arp请求重新获取IP地址对应的MAC地址
缓存更新:当收到ARP请求时,会将发送ARP请求的主机IP地址与MAC地址记录下来,然后去更新本机arp缓存中对应的记录。

三、虚拟IP与arp协议

虚拟IP和arp协议

虚拟IP常用于系统高可用性的场景,那么虚拟IP实现的原理是什么?虚拟能够自由漂浮的原理是什么?

从前文介绍arp协议里面来看,主机与主机的通信过程都会涉及到一个ip地址转换mac地址的过程,那么虚拟IP的通信也不会例外。因此,IP地址在主机通信的过程中其实就是一个逻辑地址。我们知道,每一个主机都存放着网络内一些主机的逻辑地址与物理地址(MAC地址)的映射,问题来了,当虚拟IP VIP在主机A上时,主机A的MAC地址为MAC_A某主机M的arp缓存中存放着一个映射关系:VIP ---à MAC_A;当主机A宕机后,虚拟IPVIP漂浮到了主机B,主机B的MAC地址为MAC_B,那么此时主机M想与虚拟IP通信时,是做不到,因为它的arp高速缓存中的虚拟IP VIP的映射还指向主机A的MAC地址。这个问题解决的思路就是当虚拟IP漂浮后,刷新所有其他主机的arp缓存。

那么虚拟IP是如何实现漂浮后,是如何刷新所有其他主机的arp缓存的呢?

这里就会引入另一个概念,garp()简称无端arp或者免费arp,主要是用来当某一个主机C开机时,用来确认自己的IP地址没有被人占用而做的一个检测。广播发送这个arp,请求得到本机IP地址的MAC地址,主机C并不希望此次arp请求会有arp应答,因为应答意味着IP地址冲突了。当其他主机收到这个arp请求后,会刷新关于这个arp请求源的主机IP地址的映射。

Garp的作用主要有两个:

1.      检测IP地址是否有冲突

2.      刷新其他主机关于本次IP地址的映射关系

集群管理软件Pacemaker里面的资源代理ocf:heartbeat:IPaddr2中,在虚拟IP漂浮后,会向网络内广播发送garp请求,以此来刷新其他主机的arp缓存。

在配置OpenStack控制节点高可用性的时候,出现过虚拟IP切换时,某一个主机不能通信的问题,后来发现是arp缓存没有刷新,有时候由于网络的原因,某些主机没有接收到此garp请求,因此ocf:heartbeat:IPaddr2资源代理中可以配置发送garp的次数,这里建议次数配置得多一点,这样可以保证其他主机成功刷新arp缓存。

虚拟IP与arp协议相关推荐

  1. MAC、IP、ARP协议

    文章目录 1. 综述 2. MAC 3. IP 4. ARP协议 1. 综述 MAC地址是以太网的MAC子层所使用的的地址,属于数据链路层 IP地址是TCP/IP体系结构网际层所使用的地址,属于网际层 ...

  2. TCP/IP笔记-ARP协议包结构相关笔记

    地址解析协议(Address Resolution Protocol,ARP):通过IP地址获取MAC地址,用于解决网络层和链路层衔接问题. 同一局域网的一台主机要和另外一台主机要通信,需要通过MAC ...

  3. IP包头ARP协议笔记

    一.IP包头分析 1.帧中的IP包头[从版本到可选项,其中2为帧头] 注:1)IP包头最小长度:20字节[即可选项以前部分,IP包头长度是可变的] 2)可选项最长可以是40个字节,故IP包头最长可以是 ...

  4. LVS专题-(3) 虚拟ip理解

    1.虚拟IP是什么? 要是单讲解虚拟 IP,理解起来很困难,所以干脆把 动态 IP .固定 IP .实体 IP 与虚拟 IP都讲解一下,加深理解和知识扩展 实体 IP:在网络的世界里,为了要辨识每一部 ...

  5. MAC地址、IP地址、ARP协议

    B站视频:计算机网络微课堂(有字幕无背景音乐版) 网址:https://www.bilibili.com/video/BV1c4411d7jb?p=61 说明:讲的不错,后期可以继续看此视频学习网络知 ...

  6. PPP协议和MAC地址、IP地址及ARP协议三者之间的关系(3.2)

    目录 点对点PPP协议 PPP协议封装的帧格式 PPP协议工作流程 媒体接入控制 媒体接入控制的分类 怎么解决"碰撞问题"?(随机接入方式) CSMA/CD(多址接入.载波监听.碰 ...

  7. 【计算机网络微课堂】3.7 MAC地址、IP地址以及ARP协议

    目录 MAC地址 IEEE802局域网的MAC地址格式 IEEE802局域网的MAC地址发送顺序 单播.广播.多播MAC地址 IP地址 ARP协议 MAC地址 IEEE802局域网的MAC地址格式 I ...

  8. 转: 虚拟IP(VIP)原理

    转自: 虚拟IP(VIP)原理_海阔天空sky的博客-CSDN博客_vip 虚拟ip原理高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计 ...

  9. 虚拟ip weblogic服务器,虚拟IP是什么

    原标题:虚拟IP是什么 虚拟IP(Vrtual IP Address),是一种不与特定计算机或者特定计算机网卡相对应的IP地址.所有发往这个IP地址的数据包最后都会经过真实的网卡到达目的主机的目的进程 ...

  10. 虚拟ip+keeplalived+nginx 负载实现

    什么是虚拟IP? 高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性.HA系统是目前企业防止 ...

最新文章

  1. 右边菜单_Excel – 如何始终显示下拉菜单右边的小箭头?
  2. java rpm_Java JDK rpm安装与配置
  3. .Net转Java自学之路—Hibernate框架篇三(查询方式)
  4. 分享:Android程序员,必备精品网站大汇总
  5. 批量调整word表格根据窗口调整内容
  6. P4231 三步必杀 二次差分
  7. python初学者代码示例_python基础示例
  8. 去哪儿-20-detail-animation
  9. web服务器集群(多台web服务器)后session如何同步和共享
  10. 光纤通信中的直接检测和相干检测系统
  11. java关键字static_Java中的static关键字
  12. 朋友易得,知己难求 堪哉
  13. 大学中计算机考查课不及格怎么办,大学体测不及格怎么办 有哪些补救方法
  14. chrome 通过插件来监控zabbix
  15. R语言中写入Excel的不同sheet表格
  16. ‘javah‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  17. 2022年全球市场GPS追踪装置总体规模、主要生产商、主要地区、产品和应用细分研究报告
  18. Halcon region区域提取及区域转图像
  19. linux 无线ap模式,在Linux(CentOS)上开启小度WIFI无线AP模式
  20. 旋转弹飞控系统半实物仿真平台ETest

热门文章

  1. logmmse降噪算法
  2. 神经网络的介绍与模型搭建
  3. linux系统上的图形化远程管理,Linux操作系统远程图形化管理的几种途径
  4. c#精彩编程200例百度云_每天宅家创客5分钟|智龙6号星球车:01唤醒星球车——温州中小学趣味信息技术云课程...
  5. 引导滤波 Guided Image Filtering
  6. getopt/getopt_long函数使用说明
  7. 开发笔记1 关于指针,结构体使用指针的问题
  8. java中简单的删除添加修改_教你数据库简单实现添加,显示,修改,删除的方法
  9. ​学习C语言的知识点整理
  10. 用Matlab求解高等数学中的问题(求极限,求导)