点击上方蓝字关注我们



资源放送 
华为认证小白入门到进阶实战课
↓ 扫一扫 实战视频在线观看↓


移动IP


移动IP是英特网工程任务组IETF开发的一种技术[RFC3344],该技术使得移动主机在各网络之间漫游时,任然能够保持其原来的IP地址不变。移动IP技术还为英特网中的非移动主机提供了相应的机制,使得它们能够将IP数据报正确的发送到移动主机。

移动IP技术的相关基本概念

归属网络(家乡网络HN):每个移动主机都有一个默认连接的网络或初始申请接入的网络,称为归属网络(Home Network)。

归属地址(家乡地址HoA):移动主机在归属网络中的IP地址在其整个移动通信过程中是始终不变的,因此称为永久地址(Permanent Address)或归属地址(Home Address)。

归属代理(家乡代理HA):在归属网络中,代表移动主机执行移动管理功能的实体称为归属代理(Home Agent)。归属代理通常就是连接归属网络上的路由器,然而它作为代理的特定功能则是在网络层完成的。

外地网络:移动主机当前漫游所在的网络称为外地网络(Foreign Network)或被访问网络(Visited Network)。

外地代理(CA):在外地网络中,帮助移动主机执行移动管理功能的实体称为外地代理(Foreign Agent)。

转交地址(CoA):外地代理通常就是连接在外地网络上的路由器,外地代理会为移动主机提供一个临时使用的术语外地网络的转交地址。

基本模型:双向隧道

上图是一个移动IP基本模型双向隧道的示例结构图,在示例中移动节点MN的HoA和CoA之间关联,称为移动网络(MN)绑定。在这个通信基本模型中移动IP支持节点改变自己的网络连接点,同时保持网络连接操作的能力,移动节点的家乡代理为移动服务转发流量,并对路由加以优化,通过允许移动,以及在通信节点之间直接通信,从而提高路由性能。

基本模型工作在一个MN的CN不使用MIPv6协议的情况下,在整个网络中移动的情况下,这个模型称为网络移动(NEMO[RFC3963])。当MN连接到网络中的一个新位置时,它接收自己的CoA,并向自己的HA发送一个绑定更新消息。这个HA使用一个绑定确认来响应。如果一切顺利,这个MN和CA之间的流量通过MN的HA来路由,并使用一种双向的IPv6分组隧道,称为双向隧道[RFC2473]。这些消息通常使用IPsec的封装安全有效负载(ESP)来保护,这样做可以确保一个HA不会在接收到一个伪造的MN绑定更新时被欺骗。

在这个基本模式中,数据报的传输通讯方式是:

当移动节点向一个英特网上的某个主机发送数据报时:移动节点将数据报通过外地代理将数据报直接发送给目的主机;

当英特网上的某个主机向处于外地网络中的移动节点发送数据报时:该数据报会首先发送给移动节点的家乡代理,家乡代理基于移动节点通过外地代理注册的移动网络绑定信息中的外地代理地址建立的隧道发送给外地代理,外地代理通过报文中的目的地址(即移动节点家乡地址)和基于漫游的移动节点注册的转交地址信息,将数据报发送给移动节点。

简单的来说,在这个模型中移动节点如果进入一个外地网络,它要向外地网络中的外地代理路由注册一个转交地址,作为移动节点在外地网络中的临时通信地址。并且外地代理需要基于移动节点的家乡地址向移动节点的家乡代理发送一个注册信息,通过这个注册信息家乡代理为漫游的移动节点建立一个通信隧道,这个通信隧道可以简单的看作是移动节点的家乡地址与转交地址的映射关系,基于这个映射关系,当家乡代理接收移动节点的数据报时,家乡代理就将数据报转发给转交地址。

路由优化

在前面介绍了基于双向隧道的移动IP服务模式,这种模式在移动节点接收数据时是非常低效的,特别是当给移动节点发送数据报的主机与移动节点很近时,双向隧道会显得很鸡肋。

为了解决这个问题,移动节点和与其通信的主机都在自身设置一个通信代理转发,在双方各自的代理上注册各自的信息,当彼此通信时,双方直接通过彼此的代理向彼此收发数据,而不再通过移动节点的家乡代理转发。

同址转换:移动主机需要运行额外的外地代理软件,外地网络也需要提供相应的机制,是移动主机能够自动获取一个外地网络中的地址作为自己的IP地址和外地代理地址,这个地址被称为同址转交地址。有了这个地址,其他主机就可以直接向移动节点发送数据报了,而不需要再经过移动节点的家乡代理进行转发了。

三角形路由问题解决方法:三角形路由问题就是前面提到的当与移动节点通信的主机与移动节点距离很近时,如果还经过家乡代理转发就会浪费网络带宽资源,同时效率也很低。前面讲过了同址转换,但实际给移动主机发送数据报时还是移动节点的家乡地址,如果只在移动节点的主机上设置一个代理,还不能完全解决问题。解决三角问题,就是在与移动节点通信的其他主机上设置一个代理,通信代理先从家乡代理获取移动节点的转交地址,之后发送给移动主机的IP数据报,都利用转交地址直接通过IP隧道发送给移动节点的主机外地代理,这样就不用再通过移动节点的家乡代理来转发了。

计算机网络原理—Internet协议【下】
上面这些路由解决方案也被称为路由优化(RO),它实际上涉及很多安全问题,为了解决RO安全问题和可用的方法相当复杂,详细可以参考[RFC6275]和[RFC4866]。

RO的操作实现分为两个部分:一部分涉及注册绑定的建立和维护,另一方面涉及所有绑定建立后的数据交换方法,为了与其他主机建立一个绑定,移动节点必须向每个于其通信的其他主机证明自己的真实身份,这通过一个返回路由程序(RRP)来完成。通过前面的介绍可以知道,RRP不适用双向隧道传输数据,但需要基于双向隧道来建立地址映射关系。

RRP使用以下这些移动消息,它们是IPv6移动扩展头部的子类型:家乡测试初识化(HoT1)、家乡测试(HoT)、转交测试初识化(CoT1)、转交测试(CoT)。这些消息向与移动节点通信的主机验证一个特定移动节点的家乡地址(HoT1和HoT)和转交地址(CoT1和CoT)可到达。参考下面基于RRP的RO通信注册过程示意图来理解:



IP数据报的主机处理


虽然路由器再转发分组时通常不会考虑将哪个IP地址放在分组的源IP地址和目的IP地址字段中,但主机必须考虑它们。应用程序(例如Web浏览器)可能尝试连接一台指定的主机或服务器,它们也可能有多个地址。因此,发送数据报时使用哪个地址(和IP版本)就有问题。这里需要探讨一个更微妙的情况,如果流量到达一个错误的接口(即接收的数据报中存在未配置的目的的地址),是否接收发送到本地IP地址的流量。

主机模式

确定一个单播数据报是否匹配一台主机的IP地址并被处理,它取决于接收系统的主机模式[RFC1122],以及它是否为最相关的多宿主主机。这里存在两种情况:强主机模式和弱主机模式。

强主机模式:只有当目的IP地址与数据报到达的接口配置的IP地址匹配时,才会把数据报交付本地协议栈;

弱主机模式:一个数据报携带的目标地址与它到达的任何接口的任何本地地址匹配,无论它到达哪个网络接口,它都会被接收的协议栈处理。

以上的两种主机模式也适应于发送行为,主要发送的数据报的源IP地址与接口配置地址的主机模式相匹配,该主机就可以将数据报从这个接口发送出去。弱主机模式相对强主机模式存在一些安全问题,例如恶意用户生成一个目的地址的分组,这个分组可能包括伪造("欺骗")的源IP地址,如果Internet将这个分组路由到目标主机,如果目标主机应用程序基于源IP地址的访问控制决策,这样目标主机就可能会跟一个伪造的终端进行通信。

地址选择

当一台主机发送一个IP数据报时,它必须将自己的IP地址写入数据报的源IP地址字段,在它已知多个地址的情况下,数据报的目的地确定一台特定的目的主机。有些情况下源地址是已知的,因为它可以由一个应用程序提供,或者响应同一连接的前一个分组而发送该分组。

在当前IP实现中,数据报的源IP地址和目的IP地址使用的IP地址,是通过一组称为源地址选择程序和目的地址选择程序获得的。从网络发展的历史角度来看,大多数Internet主机只有一个IP地址用于外部通信,因此选择地址并不困难。

随着接口可使用多个地址和支持多个地址范围的IPv6的使用,有些程序必须开始用。当两台实现IPv4和IPv6(“双协议栈”主机见[RFC4213])的主机之间通信时,这个情况变得更复杂。地址选择失败可能导致非对称路由、不必要的过滤或丢弃分组。

[RFC3484]给出了IPv6默认地址的选择规则,纯IPv4主机通常不会面临这样复杂的问题,一般情况应用程序可以调用特定的API执行默认操作,但也可能遇到棘手的部署问题[RFC5220]。下面分别来了解默认地址选择规则[RFC3484]和解决棘手的部署问题的源地址地址选择算法及目的地选择算法[RFC5220]。

默认地址选择规则:

[RFC3484]中默认规则是优先在相同在相同范围内选择成对的源/目的地址,优先选择更小而不是更大范围以避免在其他地址可用时使用临时地址,以及优先选择具有更长的通用前缀的成对地址。当全球地址有效时,优先选择它而不是临时地址。这个范围也包括“管理覆盖”默认规则的方法,默认选择通过一个策略表来控制,它存在于每台主机中。它是一个最长匹配前缀查找表,类似于IP路由使用的转发表。

假设对于一个地址A,在该表中进行一次查找过程,对A生成一个优先级P(A),以及一个标签L(A)。优先级的数值越大,表示更加偏好;标签用于相似地址类型的分组。例如,如果L(S)=L(D),该算法倾向于使用该对(S,D)作为源/目的地址对,如果没有规定其他策略,[RFC3484]建议使用下表中的策略值:

在这个表或一个管理配置参数在站点中配置的表,用于驱动地址选择算法。函数CPL(A,B)或“通用前缀长度”,是在IPv6地址A和B中从最左边的位开始一个最长通用前缀的位长度。函数S(A)将IPv6地址A的范围映射到一个数值,范围越大,映射的值越大:

  • 如果A是链路范围,B是全球范围,则S(A)<S(B);
  • 函数M(A)将IPv4地址A映射为一个IPv4映射的IPv6地址,由于IPv4地址范围是基于地址自身,因此需要定义以下关系S(M(169.254.xx))=S(M(127.xxx))<S(M(专用地址空间))<S(M(任何其他地址));
  • 如果A地址是一个过期地址,而B是一个首选地址,则∧(A)<∧(B);
  • 如果A是一个家乡地址,则H(A)为真;如果A是一个转交地址,则C(A)为真;

源地址选择算法:

[RFC5220]中源地址选择算法定义了一个源地址的候选集合CS(D),它基于一个特定的目的地址D。这里有一个限制,如果任何D不是任播、组播、未指定地址地址的CS(D),使用符号R(A)表示地址A在集合CS(D)中的等级。A比B的等级更高(即RA(A)值更大),表示R(A)>R(B),意味者优先选择A而不是B作为到达地址D的源地址,表达式R(A)*>R(B)表示在CS(D)中为A分配一个比B更高的等级。符号I(D)表示选择到达目的地D的接口,符号@(i)是分配给接口i的集合。如果A是一个临时地址,T(A)为布尔值true,否则T(A)为false。

以下规则用于为目的地D建立A和B在CS(D)中的局部顺序:

1.优先选择相同地址:if A=D,R(A)*>R(B);if B=D,R(B)*>R(A);

2.优先选择适当范围:if S(A)<S(B) and S(A)<S(D),R(B)*>R(A) else R(A)*>R(B);if S(B)<S(A) and S(B)<S(D),R(A)*>R(B) else R(B)*>R(A);

3.避免过期地址:if S(A)=S(B) ,{if ∧(A)<∧(B),R(B)*>R(A) else R(A)*>R(B)};

4.优先选择家乡地址:if H(A) and C(A) and - (C(B) and H(B)), R(A)*>R(B);if H(B) and C(B) and - (C(A) and H(A)), R(B)*>R(A); if(H(A) and - C(A)) and (- H(B) and C(B)), R(A)*>R(B); if (H(B) and - C(B)) and (-H(A) and C(A)),R(B)*>R(A);

5.优先选择输出接口:if A ∈ @(I(D)) and B ∈ @(I(D)), R(A)*>R((B)); if B ∈ @(I(D)) and A ∈ @(I(D)), R(B)*>R(A);

6.优先选择匹配标签:if L(A)=L(D) and L(B) ≠ L(D), R(A)*>R(B); if L(B) = L(D) and L(A) ≠ L(D), R(B)*>R(A);

7.优先选择非临时地址:if T(B) and -T(A), R(A)*>R(B); if T(A) and -T(B), R(B)*>R(A);

8.使用最长匹配前缀:if CPL(A,D) > CPL(B,D), R(A)*>R(B); if CPL(B,D) > CPL(A,D), R(B)*>R(A)。

局部顺序规则可用于形成CS(D)中所候选地址的全局顺序。Q(D)表示为目的地D选择一个最高等级的源地址,它由目的地地址选择算法来使用。如果Q(D)=∅(空),可能无法为目的地D确定源地址。

关于源地址在复杂情况下的选择每个选择规则基于算法选择合适的地址形成地址集合,按照前面的顺序给出相应的优先级的值,最终匹配地址就跟默认地址选择方式一样了,按照优先级来选择使用。简单的来说就是:优先选择相同地址,优先选择适当范围,避免过期地址,优先选择家乡地址,优先选择输出接口,优先选择匹配标签,优先选择非临时地址,使用最长匹配前缀。

目的地址选择算法:

[RFC5220]目的地址选择算法也类似源地址选择的方式,在源地址算法中Q(D)是上面例子中为目的地D选择的源地址。如果目的地B不可达,则令U(B)为布尔值true。E(A)表示采用某些“封装传输”(例如,隧道路由)可到达目的地A。集合SD(S)采用与前面的成对元素A和B相同的结构,那么可以获得以下规则:

1.避免不可用的目的地:if U(B) or Q(B)=∅,R(A)*>R(B); if U(A) or Q(A)=∅, R(B)*>R(A);

2.优先选择匹配范围:if S(A)=S(Q(A) and S(B) ≠ S(Q(B)), R(A)*>R(B);if S(B)=S(Q(B)) and S(A) ≠ S(Q(A)), R(B)*>R(A);

3.避免过期地址:if ∧(Q(A)) < ∧(Q(B)),R(B)*>R(A); if ∧(Q(B))< ∧(Q(A)),R(A)*>R(B);

4.优先选择家乡地址:if H(Q(A)) and C(Q(A)) and - (C(Q(A)) and H(Q(B))), R(A)*>R(B);if (Q(B)) and C(Q(B)) and - (C(Q(A)) and H(Q(A))), R(B)*>R(A); if (H(Q(A)) and - C(Q(A))) and (-H(Q(B)) and C(Q(B))), R(A)*>R(B); if (H(Q(B)) and - C(Q(B))) and (- H(Q(A)) and C(Q(A))), R(B)*>R(A);

5.优先选择匹配标签:if L(Q(A)) = L(A) and L(Q(B)) ≠ L(B),R(A)*>R(B); if L(Q(A)) ≠ L(A) and L(Q(B)) = L(B), R(B)*>R(A);

6.优先选择更高优先级:if P(A)>P(B),R(A)*>R(B); if P(A)<P(B),R(B)*>R(A);

7.优先选择本地传输:if E(A) and -E(B), R(B)*>R(A);if E(B) and - E(A), R(A)*>R(B);

8.优先选择更小范围:if S(A)<S(B),R(A)*>R(B) else R(B)*>R(A);

9.使用最长匹配前缀:if CPL(A, Q(A)) > CPL(B, Q(B)), R(A)*>R(B); if CPL(A,Q(Q)) < CPL(B,Q(B)),R(B)*>R(A);

否则保持等级顺序不变:

还是跟源地址选择算法一样,根据不同优先级的算法匹配地址并获得相应的优先级值,然后基于优先级值确定目的地址。目的地址选择的优先级同样跟上面的顺序一样,那么目的地址选择的优先级是:避免不可用的目的地,优先选择匹配范围,避免过期地址,优先选择家乡地址,优先选择匹配标签,优先选择更高优先级,优先选择本地传输,优先选择更小范围,使用最长匹配前缀。







课程咨询添加:HCIE666CCIE
↑或者扫描上方二维码↑
你有什么想看的技术点和内容
可以在下方留言告诉小盟哦!

声明:内容来源于网络,在此致谢,如侵权请私信删除。

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。