配置静态路由以出接口方式为啥会每次都需要arp请求而下一跳只需要进行一次arp请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置静态路由以出接口方式为啥会每次都需要arp请求而下一跳只需要进行一次arp请求相关的知识,希望对你有一定的参考价值。
这是因为出接口形式的静态路由,被路由器认为是直连,所以直接发了ARP 参考技术A 思科设备的话静态路由配出接口做了N次ARP是ARP代理问题,被认为出了接口就是直连。这个网上好找资料,楼上也有回答就不多说了。
静态路由下一跳做了一次ARP是思科CEF分两个表,FIB和AIB,AIB记录邻接关系,也就是下一跳的出接口MAC与IP对应关系以及自己的出接口MAC,三个东西组成了AIB表。为了完成FIB中adjacency这个表项,路由器的通用CPU发起ARP请求来完成AIB,从而完成FIB。这个不容易找资料,可以做实验验证,用关闭CEF和开启CEF两种情况去配置静态路由看有无ARP解析发出。推荐企业网核心CCNP and CCIE ENCOR 350-401,第一章Forwarding有详细说明。
ipvsadm DR模型的实现方式
DR模型的lvs
————
在实现DR模型的时候所有RS都要屏蔽掉ARP请求的响应
实现方法:
1.可以用路由器绑定静态VIP:MAC(DVIP)
2.可以使用arptables
3.可以使用 kernel parmeter(内核参数)
{ arp_ignore:接受到arp请求时的响应级别
级别 0:只要本机接口配置了相应地址就响应;
1:仅在目标IP是本地地址并且是配置在这个请求进来的对应接口才响应;
arp_announce:将自己的地址向外通告时的通告级别
级别 0:将本机任何接口的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅将与本地接口匹配的网络通告 }
linux中响应报文的源地址一定要是报文流出接口的地址
arp_ignore和arp_announce在/proc/sys/net/ipv4/conf
————
RS上:
{sysctl -w net.conf.eth0.arp_announce=2
sysctl -w net.conf.all.arp_announce=2
sysctl -w net.conf.eth0.arp_ignore=1
sysctl -w net.conf.all.arp_ignore=1}
RS: ifconfig lo:0 xx.xx.xx.xx broadcast xx.xx.xx.xx netmask 255.255.255.255 up
DS: ifconfig eth0:0 xx.xx.xx.xx broadcast xx.xx.xx.xx netmask 255.255.255.255 up
RS: route add -host xx.xx.xx.xx dev lo:0
DS: route add -host xx.xx.xx.xx dev eth0:0
————
例:
制定ipvsadm规则
制定规则前先 -C 清空之前规则
ipvsadm -A -t xx.xx.xx.xx:80 -s wrr
RS1 :ipvsadm -a -t xx.xx.xx.xx:80 -r xx.xx.xx.xx -g -w 2
RS2 :ipvsadm -a -t xx.xx.xx.xx:80 -r xx.xx.xx.xx -g -w 1
以上是关于配置静态路由以出接口方式为啥会每次都需要arp请求而下一跳只需要进行一次arp请求的主要内容,如果未能解决你的问题,请参考以下文章