三层交换机路由打通过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.

PC B

(1)PC A 和PC B接在直连网络的两个接口上,假设要从PC A 路由到PC B。请描述从开

始到网络连通的每一个步骤;(包括HFC的设置,ARP的学习过程描述等)

(2)如果(1) 中S2端在网络连通之前PC B 断开,情况怎样?如果建立连通之后,PC B 断

开,又如何?

答:

(1)

网络接口S1和S2连接到PC上时,这两个网络接口被激活,此时会往L2_TABLE添加两条mac为各自网络接口的mac,l3字段置1的表项。往L3_TABLE表项中添加两条ip为各自网络接口ip,输出端口为CPU口的主机路由表项,用于将相应ip报文送往CPU处理。同时在DEFIP表中添加各自网段的网络路由表项,表项最终指向L3_TABLE中表示的主机路由表项。

此时,PC A欲往PC B发送IP报文时,首先它通过主机自身的子网掩码的设置,发现PC B 不在其网络范围内,于是PC A明白此时它要走路由,即把报文发给网关(S1)处理,于是PC A先搜索自身的ARP缓存看是否有网关S1的ARP地址,如果没有,则向主机设定的网关(S1)发送ARP请求,S1收到该请求之后,发送ARP应答。此时网关S1的mac-ip映射就被保存在PC A的ARP缓存中,供下次使用。然后PC A向S1发送一个目的IP地址为pcB_ip(在S2的网络范围内),目的MAC为S1_mac(网关mac)的IP报文,该报文到达交换机之后,先搜索L2_TABLE,发现对应的表项的L3位置1。根据ip=pc B的key来搜索L3_TABLE表项,未搜索到,接着查找DEFIP的表项,搜索到相应表项(因为PC B在S2的网络范围内),对应的L3_TABLE表现的输出端口为CPU口,于是该报文被送往CPU。(此时送CPU的目的在于指示发送ARP报文查询下一跳MAC地址,用于建立硬件表项)

CPU接收到该报文之后,在L3_TABLE中添加一条ip为pcB_ip(目的ip),输出端口为DROP 口的表项,用于丢弃报文,防止主机被砸死,然后向网络接口S2的所有成员端口发送请求ip为pcB_ip的ARP请求报文,此时PC B接收到该ARP报文,发送一个ARP响应。S2收到该响应之后,删除原先添加的DROP表项,往L3_TABLE中添加一条,IP为pcB_ip,mac 为pcB_mac,输出端口为PC B所连的端口的表项。此时路由打通。

(2)

如果(1)中S2端在网络连通之前PC B断开,由于此时PC B连接的交换机端口是link down 的,因此ARP请求报文不会往该端口发送,但是如果此时网络接口S2还处于up状态的话,它依然会往其他成员端口发送ARP请求报文,同时在发送之前也照样添加一个DROP表项,用于丢弃报文,当在规定时间内没有收到ARP应答时(没有后续IP报文到达),便将该DROP 表项去除。然后如果有相同目的IP的报文来,依然是转发到CPU。

建立连通之后,PC B断开,此时相应主机路由表项会被删除。

二.

PC B

(1)PC A 和PC B接在网络的两个接口上,假设要从PC A 路由到远程网络的PC B。请描

述从开始到网络连通的每一个步骤;

(2)如果(1) 中S3端在网络连通之前断开,情况怎样,连通之后断开呢?如果PC B 在网络

连通之前断开,如何,在网络连通之后断开呢?

答:

(1)

要使PC A 和PC B能够连通,那么在初始情况下,必然要通过动态路由协议或手动添加静态路由的方式,往Swtich A中添加一条目的网络为S4,下一跳为S3_ip的网络路由。或目的ip为pcB_ip,下一跳为S3_ip的主机路由。假设是通过静态路由来设置,设置静态路由时,如果是主机路由,那么直接设置到L3_TABLE中,但是输出端口为CPU口。用途是相应ip报文会被转发到CPU口,然后CPU发送arp查询下一跳mac地址。如果是网络路由,那么设置到DEFIP表,然后输出索引指向L3_TABLE中相应网络接口地址的表项。输出端口也为CPU口。

当PC A要发送报文到PC B时,过程同题目一,先要通过ARP取得S1的mac地址。然后发送报文packetA2B(dst_ip=pcB_ip, dst_mac=S1_mac),报文到达SwitchA时,先根据dst_mac 搜索L2_TABLE,发现相应L3字段值为1。于是根据dst_ip搜索l3_table,因为之前有设置过静态路由,不管是网络路由还是主机路由,它的输出端口均为CPU口。于是该报文被送到CPU。

CPU收到该IP报文之后,同题目一一样,先在L3_TABLE中建立一条ip=pcB_ip,输出端口为DROP的表项,用于丢弃报文,防止交换机被砸死,然后查找系统中的ARP缓存,看是否有下一跳S3_ip的ARP映射表项,如果有,那么删除L3_TABLE中的对应的DROP表项,根据arp缓存中的信息,直接将相关信息设置到L3_TABLE硬件,此时switchA到switchB 的硬件路由打通。

如果没有,那么switchA向switchB发送ARP请求,查询IP地址为S3_ip的MAC地址,S3接收到该ARP请求之后,发现IP地址为自身的IP地址,于是它发送了一个ARP应答。告诉S2关于S3_ip和S3_mac的映射信息。S2收到ARP应答之后,删除L3_TABLE中的

DROP表项,然后将相关信息设置到L3_TABLE硬件。此时switchA到switchB的硬件路由打通。此时经过三层交换的packetA2B报文变为(dst_ip=pcB_ip, dst_mac=S3_mac)

packetA2B(dst_ip=pcB_ip, dst_mac=S3_mac)报文到达swtichB之后,查询L2_TABLE表项,发现L3字段置1,于是接着以dst_ip为key搜索L3_TABLE表项,未果,转而查找DEFIP 表项,hit!索引指向L3_TABLE表项(该表项ip=S4_ip,输出端口为CPU),然后该报文被送(接下来过程同题目一)CPU建立DROP项,然后发出ARP查询,查找dst_ip=pcB_ip 往CPU,

的MAC地址,收到ARP应答之后,删除L3_TABLE中的DROP表项,建立起真正的硬件表项路由。

(2)

如果(1) 中S3端在网络连通之前断开,那么switch A向s2网络接口的成员端口发送ip=S3_ip 的ARP查询时(因为端口时,系统中相关的ARP缓存也被清除,因此也要发ARP查询),没有得到应答,然后删除DROP表项。恢复之前的送CPU的表项。直到再有该IP报文进来,送CPU,建立DROP表项,发送ARP查询,没有收到应答,删除DROP表项。如此循环。如果(1)中S3端在连通之后断开,那么L3_TABLE中ip=pcB_ip的表项会被恢复为原来的值(原来不存在的,那么被删除,原来是静态设置的,那么输出端口被恢复为送往CPU),此时再有相关IP报文进来,送到CPU,还会由CPU发送做相关的ARP请求。

如果PC B 在网络连通之前断开,那么就和题目一中的情况相似,此时L3_TABLE表项中的输出端口还是为送CPU,报文被送往CPU,CPU建立DROP表项,发送ARP,没有收到ARP,删除DROP表项恢复为送CPU。如此循环。

如果PC B 在网络连通之后断开,那么ip=pcB_ip的主机路由表项会被删除,此时报文进来时,又和最初没有连通的一样,搜索L3_TABLE,搜索未果,接着搜索DEFIP,发送关联的L3是送往CPU,于是报文送到CPU,CPU建立DROP项,发ARP请求,没有收到ARP 应答,删除DROP恢复为送CPU,如此循环。

可以改进之处:

当交换机收到一条ARP应答之后,如果软件路由表中存在相关IP(和arp中的ip相同)的路由表项,不会修改硬件信息,还是会等到IP报文上来之后才修改硬件信息。

可以改进为:收到ARP应答之后,如果软件路由表中存在相关IP的路由表项,直接可以设置硬件表项。

路由压缩算法之中,合并关系的压缩不会节省什么表项。包含关系能够节省表项。

相关文档
最新文档