linux通用邻居基础架构

1、为每一个协议提供一个缓存来存放L3到L2的转换结果。

2、提供在缓存中添加、删除、改变和查找一个特定映射项的函数。查找函数必须要快,因为它会影响整个系统的性能。

3、为每一个协议缓存的数据项提供一种老化机制。

4、当缓存已满时并且正好要创建新的映射项时,提供选择替换策略。

5、为每一个邻居提供一个请求队列。当准备要发送一个封包并且其L2地址还不在地址缓存中是,就必须把这个封包放到缓冲区中,直到发出solicitation请求,并且收到应答。参见27章排队一节。

为了让每一种协议都适应邻居自系统的行为,Linux定义了一组占位符(placeholder)或虚函数,这样的每个协议都可以在其中插入它想用的函数。这与Linux允许用户定制内核的方式有些类似,邻居层也提供了一组可调参数对其进行配置。配置这些参数可以通过用户空间命令、/proc文件系统或者协议本身。最后,所有协议访问缓存的函数都是相同的,但是不同的协议可能会用不同字节长度的关键字(地址)。因此,基础架构提供了一种通用方式来定义关键字使用的类型。

终端主机需不需要进行任何配置或者使用任何特殊的浏览器。这种代理称为透明代理。

主机需要配合成使用proxy来访问internet。代理服务器只有在其自身缓存不命中时,才会使用路由器访问Internet。

 

邻居协议的代理服务器是一台主机,对请求不属于自己的地址的solicitation应答,它能够代替拥有这些地址的主机做出应答。因为有了代理,位于不同LAN中的主机可以相互通信,就好像他们处于同一个LAN中。

 

arp代理代理的主机,不能和自己在同一个子网中,否则,目的主机将和代理同事应答,发送方不知道应该选择哪一个。

对于代理arp问题,自己确实有段时间也有所困惑,于是乎便去用真机做实验验证,现将验证结果反馈给你。
【网络拓扑为双路由器互联(RT1--RT2),一台pc(xp系统)上联到RT1的以太接口上,网段为192.168.1.X/24】
(1)PC不设置网关
在真机上开启抓包工具,动作为 PC ping 路由器RT1的loopback 1接口 1.1.1.1 ,发现无arp请求信息,无数据包流通。
(2)网关设置为自己
在真机上开启抓包工具,动作为 PC ping 路由器RT1的loopback 1接口 1.1.1.1 ,发现有arp请求,并且直接请求ping命令后的ip地址所对应的arp。
(3)网关设置为路由器RT1的loopback接口1.1.1.1
在真机上开启抓包工具,动作为 PC ping 路由器RT1的loopback 2接口 10.10.10.10 ,发现有arp请求,并且请求的是网关1.1.1.1,能够通信。
小结:路由器收到一个arp请求包,是否做代理取决于该路由器上是否有arp目标ip的对应路由条目存在。
测试:
(4)在RT2上配置loopback接口2.2.2.2,在RT1和RT2上做相应的静态路由,保证路由的可达性。
A:重复上述第(2)动作(ping的目标ip改为2.2.2.2),发现可以正确的实现二层封装。
B:撤销路由器RT1的路由条目,发现A步骤的实验结果为不可二层封装!
C:在B的基础上,在路由器RT1上写缺省路由,出接口为连接pc的以太网接口,做ping的目标ip改为2.2.2.2动作,结果可定是ping不同,更为重要的是在pc中arp条目的生成都没有(有arp请求包,但无应答)!

总结:路由器从开启arp代理的接口收到一个arp请求,并且该目标ip地址是自己可达的,并且这个对应路由条目的出接口不是收到该arp请求的接口,那么路由器将执行代理arp功能!

 

device based     ipv4    该设备接收到的所有有效请求都会被处理。这是IPV4中最常见的情况,IPV6中不使用。

Destination based    ipv4+ipv6  在决定是否要进行代理时,同时考虑目的地址和设备两个属性。也就是说代理可以对选定IP地址的请求作出应答。基于目的地址的代理时IPV6网络的标准,在IPV4也可以使用。

在共享介质中,任意主机发出的任何帧都会被直接连接到该介质上的所有主机收到。

以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时, 由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这 是捕获数据包的物理基础。
以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据 的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。
网卡具有如下的几种工作模式:
1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。
2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。
3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。
4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。
网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

当一个主机收到一个对本地子网外某一个地址的solicitation请求时,这台主机若是启动了代理功能就可以处理它。首先邻居子系统检查是否开启全局代理,没有的话在检查是否被配置成可以代理那个特定的地址。

在接收请求的代理服务器上已开启转发功能。

因为代理服务器是插入到主机之间的,所以它必须接受两个端点间转发的流量。代理和转发独立配置。

arp solicitation请求总是发往L2广播地址。这就保证了所有共享介质上的主机都可以收到它。这样代理服务器不需要把其任何借口配置成混杂模式,就可以截取是他代理的主机的请求。

ND协议使用L3广播地址处理solicitation请求和应答。当路由器想代理一个特定的IP地址时,它必须接受对应的L3多播地址。

 

 

posted on 2016-04-30 00:06  与非朋仔  阅读(438)  评论(0编辑  收藏  举报

导航