《TCP/IP详解卷2:实现》笔记--Radix树路由表

本文详细介绍了TCP/IP中的路由表结构,特别是Radix树如何用于高效存储和查找路由信息。通过具体的例子解释了路由表的查找过程,包括与主机、网络和默认地址的匹配。同时,文章还讨论了路由表的初始化、选路插口、函数调用以及相关数据结构,揭示了路由选择背后的实现细节。
摘要由CSDN通过智能技术生成

由IP完成的路由选择是一种选路机制,它通过搜索路由表来确定从哪个接口把分组发送出去,它与选路策略不一样,选路策略

是一组规则的集合,这些规则用来确定哪些路由可以编入到路由表中,Net/3内核实现选路机制,而选路守护进程,典型地如

routed或gated,实现选路策略。

1.路由表结构

下图是某主机上的路由表。


对于Flags列需要简单说明下。

G  该路由通向一个网关(路由器),这种路由被称为间接路由。如果没有设置本标志,则表明路由的目的地与本机直接相连,

称为直接路由。

H  该路由通往一台主机,也就是说,目的地址是一个完整的主机地址。如果没有设置本标志,则路由通往一个网络,目的地址

是一个网络地址:一个网络号,或一个网络号与子网号的组合。

S  该路由是静态的。

C  该路由可被克隆以产生新的路由。在本路由表中有两条路由设置了这个标志:一条是到本地以太网140.252.13.32的路由,

ARP通过克隆该路由创建到以太网中其他特定主机的路由;另一条是到多播组224的路由,克隆该路由可以创建到特定多播

组(如224.0.0.1)的路由。

L  该路由含有链路层地址。本标志应用于单播地址和多播地址。由ARP从以太网路由克隆而得到的所有主机路由都设置了本标志。

R  环回驱动器(为设有本标志的路由而设计的普通接口)将拒绝所有使用该路由的数据报。

Net/3路由表采用Patricia树结构来表示主机地址和网络地址。待查找的地址和树中的地址都看成比特序列。这样就可以用相同

的函数来查找和维护不同类型的数。

查找路由表的目的就是为了找到一个最能匹配给定目标的特定地址。我们称这个给定的目标位查找键(search key)。所谓

最能匹配的地址,也就是说,一个能够匹配的主机地址要优于一个能够匹配的网络地址;而一个能够匹配的网络地址要优于

默认地址。

每条路由表项都有一个对应的网络掩码,尽管在主机路由中没有存储掩码,但它隐含了一个全1比特的掩码。我们对查找键和

路由表项的掩码进行逻辑与运算,如果得到的值与该路由表项的目的地址相同,则称该路由表项是匹配的。对于某个给定的

查找键,我们会从路由表中找到多条这样的匹配路由。

下图给出了上面路由表的内部结构。


标有end的两个阴影框是该书结构中带有特殊标志的叶节点,该标志代表树的端点。左边的那个拥有一个全0键,而右边的

拥有一个全1键,左边的两个标有end和default的框叠在一起,这两个框有特殊的意义,它们与重复键有关。

方角框被称为内部结点或简称为结点,圆角框被称为叶子。每一个内部结点对应于测试查找键的一个比特位,其左右各有

一个分支。每一个叶子对应于一个主机地址或者对应于一个网络地址。如果在叶子下面有一个十六进制数,那么这个叶子

就对应于一个网络地址,该十六进程数就是叶子的网络掩码。如果在叶子下面没有十六进制的掩码,那么这个叶子就是一个

主机地址,其隐含的掩码是0xffffffff。

有一些内部节点也含有网络掩码,这些掩码在回溯过程中使用。

比特比较式运用在插口地址结构上的,因此,在上图给出的比特位置是从插口地址结构中的起始位置开始算的。下图给出了

sockaddr_in结构中的比特位置。


下图为路由表中各个IP地址的比特表示形式。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文名: TCP.IP路由技术[第二](CCIE职业发展系列) 原名: Routing TCP.IP,Volume 2 作者: Jeff Doyle译者: 毕立波资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115100962发行时间: 2002年 地区: 大陆 语言: 简体中文,英文 简介: 掌握BGP-4(事实上的域间路由协议标准)的操作、配置及故障检测与排除:理解NAT的操作、配置及故障检测与排除:   通过一系列案例研究及练习题来理解IP多播路由的部署、配置及故障检测与排除;   熟悉IPv6(下一代IP协议)的设计目标以及当前的发展状态;通过大最经专家验证的方法来管理路由器:   通过大量实用且全面的复习题、配置练习题及故障检测与排除练习题来测试和验证各种所学知识:   在掌握高级TCPIP路由技术的同时。还可以进一步加强CCIE的认证准备工作。 为了管理日益增大的互连网络,需要全面理解路由器的操作行为,理解外部网关协议的各种复杂运行机制,包括TCP连接、消息状态、路径属性、内部路由协议互操作。以及建立邻居连接等内容。本书为读者全面理解BGP一4(边界网关协议版本4)、多播路由、NAT(网络地址转换)、IPv6,以及有效管理路由器等提供了各种翔实的专业知识。Jeff Doyle丰富的实践经验,易于阅读的写作风格及内容全面的论述。使得本书成为所有网络专家的案头宝典。 本书大大扩展了第一的主题内容:网络增长所带来的可扩展性和管理性要求。第二从第一的内部网关协议扩展到了自治系统间的路由协议,以及包括多播和IPv6在内的许多特殊路由问题,并且沿用了在第一中所采取的有效的信息组织结构。即在讨论完主题基础知识之后,辅之以一系列能充分展现现实网络世界中各种概念的配置案例。并通过各种经过验证的故障检测与排除方法来解决网络中可能出现的各种问题。本书不但可以帮助广大读者在自己的名字之后获得极具价值的CCIE。号。而且还能帮助大家掌握现实网络中所需的大量专家级网络知识和技巧。无论您是在准备CCIE认证考试。还是在准备CClE再认证考试,或是在寻求有关高级路由问题的专家建议。本书都将帮助您理解各种基本概念,并应用各种最佳实践技巧来应对网络的日益增长和有效管理等问题。内容简介本书在《TCP/IP路由技术(第一)》的基础上,深入系统地阐述了TCP/IP相关高级路由技术,包括BGP、多播、IPv6以及网络管理等内容。为便于读者深入掌握各章所学知识,本书提供了大量的案例分析材料,内容涵盖协议配置、故障检测与排除等方方面面。并且,在各章结束时都提供了大量的复习题和练习题,以加强读者对所学知识的记忆与理解。   本书除了面向众多备考的准CCIE以及需要通过再认证的CCIE之外,还非常适合从事大型IP网络规划、设计和实施工作的工程技术人员及网络管理员参考。 作者简介 Jeff Doyle,(CCIE#1919)是科罗拉多州丹佛市JuniperNetworks公司的专业服务咨询师,其主要研究方向是IP路由协议和MPLS流量工程技术。Jeff曾经设计和实现的大规模Intemet服务提供商网络遍及北美、欧洲和亚洲?并且在NANOG(NorthAmerican Network Operators’Group,北美网络运营团体)和APRICOT(Asia Pacific Regional Internet Conference onOperational Technologies,亚太地区互联网运营技术协会)等服务提供商论坛讲授高级网络互联技术。在加入Juniper Neworks公司之前,Jeff曾经是INS(Intemational Network Services,国际网络服务)公司的高级网络系统咨询师。 书摘与插图第1部分 外部网关协议   第1章 外部网关协议   聪明的读者一定会问(也应该问):“为什么要浪费纸张专门花一个章节来描述像EGP(Exterior Gateway Protocol,外部网关协议)这样一种已经被废除了的协议?”毕竟EGP已经被’BGP(Border-Gateway Protocol,边界网关协议)协议广泛替代了。该问题的答案有二。   首先,虽然目前已经很少有人在用EGP了,但某些特殊场合仍然会遇到。例如,在写作本书时仍然可以在某些美国军用互联网络中见到EGP的影子。因而作为一名CCIE,仍然应该为这种罕见应用做好知识储备。   其次,本章内容作为一种历史铺垫,其目的是解释外部网关协议的发展驱动力,并说明最初的外部网关协议存在的不足,以便引出后面两章的内容。而且,在了解了BGP的演进根源之后,可以更好地认识到BGP的重要性。   1.1 EGP的起源   在20世纪80年代早期,构成.ARPANET(现代互联网的前身)的路由器(网关)设备上都运行了一种距离向量路由协议——GGP(Gateway-to-Gateway Protocol,网关到网关协议)。但是随着ARPANET的不断发展,与当今许多负责管理日益增长的互联网络的网管员一样,ARPANET的架构师们也预见到了相同的问题:现在运行的路由协议没有很好的扩展性。 目录: 第一部分 外部网关协议(EGP) 第1章 外部网关协议 2 1.1 EGP的起源 2 1.2 EGP的操作 3 1.2.1 EGP拓扑问题 3 1.2.2 EGP的功能 5 1.2.3 EGP消息格式 12 1.3 EGP的不足 18 1.4 配置EGP 19 1.4.1 案例研究:一个EGP末梢网关 19 1.4.2 案例研究:一个EGP核心网关 22 1.4.3 案例研究:间接邻居 25 1.4.4 案例研究:缺省路由 27 1.5 EGP的故障排除 28 1.5.1 解释邻居表 29 1.5.2 案例研究:聚合到Syrup的速度 30 1.6 尾注 31 1.7 展望 32 1.8 复习问题 32 1.9 配置练习 33 1.10 故障排除练习 36 第2章 BGP4简介 38 2.1 无类域间路由 38 2.1.1 归纳摘要 39 2.1.2 无类路由 40 2.1.3 路由总结:优势、劣势以及不对称性 43 2.1.4 Internet:经过多年后还保持着分层结构 45 2.1.5 CIDR:减轻了路由表的爆炸性增长 48 2.1.6 CIDR:降低了B类地址空间的消耗 51 2.1.7 CIDR遇到的问题 51 2.2 谁需要BGP 54 2.2.1 一个单宿主自治系统 55 2.2.2 多宿主到一个单一的AS 57 2.2.3 多宿主到多个自治系统 60 2.2.4 “负载均衡”中应当注意的一个问题 62 2.2.5 BGP的危险 63 2.3 BGP基础知识 64 2.3.1 BGP消息类型 66 2.3.2 BGP有限状态机 67 2.3.3 路径属性 70 2.3.4 管理权值 78 2.3.5 AS_SET 79 2.3.6 BGP决策过程 80 2.3.7 路由抑制 82 2.4 IBGP和IGP的同步 83 2.5 管理大型BGP对等关系 88 2.5.1 对等组 88 2.5.2 团体 88 2.5.3 路由反射器 88 2.5.4 联盟 93 2.6 BGP消息格式 94 2.6.1 Open消息 95 2.6.2 Update消息 96 2.6.3 Keepalive消息 97 2.6.4 Notification消息 97 2.7 尾注 99 2.8 展望 99 2.9 推荐的读物 99 2.10 复习题 99 第3章 BGP4的配置以及故障排除 105 3.1 基本的BGP配置 105 3.1.1 案例研究:建立BGP路由器之间的对等 105 3.1.2 案例研究:向BGP中注入IGP路由 110 3.1.3 案例研究:向IGP注入BGP路由 115 3.1.4 案例研究:没有IGP的IBGP 120 3.1.5 案例研究:IGP上的IBGP 126 3.1.6 案例研究:EBGP多跳 132 3.1.7 案例研究:聚合路由 135 3.1.8 管理BGP连接 150 3.2 路由策略 153 3.2.1 重置BGP连接 153 3.2.2 案例研究:通过NLRI过滤路由 155 3.2.3 案例研究:通过AS_PATH过滤路由 161 3.2.4 案例研究:通过路由图过滤路由 164 3.2.5 案例研究:管理权值 166 3.2.6 案例研究:管理距离以及后门路由 173 3.2.7 案例研究:使用LOCAL_PREF 属性 178 3.2.8 案例研究:使用MULTI_EXIT_DISC属性 182 3.2.9 案例分析:附加AS_PATH 187 3.2.10 案例分析:路由标记 190 3.2.11 案例分析:路由抑制 194 3.3 大型BGP 197 3.3.1 案例分析:BGP对等组 198 3.3.2 案例分析:BGP 团体 201 3.3.3 案例分析:专用AS号 212 3.3.4 案例分析:BGP 联盟 215 3.3.5 案例分析:路由反射器 225 3.4 展望 230 3.5 推荐的读物 230 3.6 命令归纳 231 3.7 配置练习 235 3.8 故障排除练习 240 第二部分 高级IP路由问题 第4章 网络地址翻译 250 4.1 NAT的操作 250 4.1.1 NAT的基本概念 250 4.1.2 NAT和IP地址的保存 252 4.1.3 NAT和ISP的变更 254 4.1.4 NAT和多宿主AS 255 4.1.5 端口地址翻译 257 4.1.6 NAT和TCP负载分配 258 4.1.7 NAT和虚拟服务器 259 4.2 NAT的问题 260 4.2.1 信头校验和 260 4.2.2 分段 260 4.2.3 加密 260 4.2.4 安全性 261 4.2.5 具体协议涉及到的问题 261 4.3 配置NAT 268 4.3.1 案例研究:静态NAT 268 4.3.2 案例研究:动态NAT 274 4.3.3 案例研究:网络合并 278 4.3.4 案例研究:用NAT实现ISP多宿 281 4.3.5 端口地址翻译 286 4.3.6 案例研究:TCP负载均衡 287 4.3.7 案例研究:服务分配 288 4.4 NAT故障排除 290 4.5 尾注 292 4.6 展望 292 4.7 命令归纳 292 4.8 配置练习 293 4.9 故障排除练习 295 第5章 IP多播路由介绍 297 5.1 对IP多播的要求 299 5.2 组成员概念 303 5.2.1 加入和退出组 304 5.2.2 因特网组管理协议(IGMP) 308 5.2.3 Cisco组员资格协议(CGMP) 313 5.3 多播路由的问题 320 5.3.1 多播的前转 320 5.3.2 多播路由 321 5.3.3 稀疏与密集拓扑的比较 322 5.3.4 隐式加入与显式加入的比较 323 5.3.5 基于源的与共享的比较 325 5.3.6 多播的范围 326 5.4 距离向量多播路由协议(DVMRP)的操作 329 5.4.1 对邻居的发现和维护 330 5.4.2 DVMRP路由表 330 5.4.3 DVMRP包的前转 332 5.4.4 DVMRP消息的格式 332 5.5 MOSPF的操作 338 5.5.1 MOSPF基础 339 5.5.2 区域间的MOSPF 340 5.5.3 AS间的MOSPF 342 5.5.4 MOSPF扩展的格式 343 5.6 基于核心的(CBT)的操作 345 5.6.1 CBT基础 345 5.6.2 寻找核心 346 5.6.3 CBT指定路由器 347 5.6.4 成员与非成员的多播源 348 5.6.5 CBT消息格式 349 5.7 与协议无关的多播(PIM)的介绍 353 5.8 与协议无关多播,密集模式(PIM-DM)的操作 354 5.8.1 PIM-DM基础 354 5.8.2 Prune 消息的覆盖 359 5.8.3 单播路由的改变 361 5.8.4 PIM-DM指定路由器 361 5.8.5 PIM前转器的选举 361 5.9 与协议无关的多播,稀疏模式(PIM-SM)的操作 364 5.9.1 PIM-SM基础 364 5.9.2 查找会聚点 365 5.9.3 PIM-SM和共享 367 5.9.4 源的注册 369 5.9.5 PIM-SM与最短路径 375 5.9.6 PIMv2消息格式 379 5.10 尾注 385 5.11 展望 386 5.12 推荐读物 386 5.13 命令归纳 386 5.14 复习问题 388 第6章 IP多播路由的配置和故障排除 394 6.1 配置IP多播路由 394 6.2 案例研究:配置与协议无关多播,密集模式(PIM-DM) 395 6.3 配置与协议无关多播,稀疏模式(PIM-SM) 403 6.3.1 案例研究:静态配置RP 403 6.3.2 案例研究:配置Auto-RP 409 6.3.3 案例研究:配置稀疏——密集模式 416 6.3.4 案例研究:配置自举协议 419 6.4 案例研究:多播负荷分担 423 6.5 IP多播路由的故障排除 429 6.5.1 使用mrinfo 430 6.5.2 mtrace与mstat的使用 432 6.6 展望 436 6.7 配置练习 436 6.8 排错练习 438 第7章 大范围IP多播路由 441 7.1 多播范围控制 441 7.2 案例学习:多播穿过非多播域 443 7.3 连接到DVMRP网络 445 7.4 AS间多播 448 7.4.1 BGP的多协议扩展(MBGP) 450 7.4.2 多播源发现协议(MSDP)运行 451 7.4.3 MSDP消息格式 453 7.5 案例学习:配置MBGP 456 7.6 案例学习:配置MSDP 460 7.7 案例学习:MSDP全连接组 464 7.8 案例学习:泛播 RP 466 7.9 案例学习:MSDP缺省对等实体 470 7.10 命令归纳 473 7.11 尾注 474 7.12 展望 474 7.13 复习问题 474 第8章 IPv6 476 8.1 IPv6的设计目标 476 8.1.1 提高可扩展性 477 8.1.2 易于配置 477 8.1.3 安全性 478 8.2 当前IPv6状态 478 8.2.1 IPv6规范(RFC) 478 8.2.2 厂商支持 479 8.2.3 实现 479 8.3 IPv6包格式 480 8.3.1 IPv6地址 480 8.3.2 地址空间 481 8.3.3 地址的文字表示 481 8.3.4 地址前缀的文字表示 482 8.3.5 地址类型分配 482 8.4 地址结构 484 8.4.1 可聚合全球地址格式 484 8.4.2 IPv6头 493 8.5 IPv6功能 497 8.5.1 在Cisco路由器上使能IPv6能力 497 8.5.2 ICMPv6 498 8.5.3 邻居发现 499 8.5.4 自动配置 506 8.5.5 路由 509 8.5.6 泛播处理过程 521 8.5.7 多播 522 8.5.8 服务质量 526 8.6 从IPv4向IPv6过渡 526 8.6.1 双协议栈 527 8.6.2 DNS 527 8.6.3 IPv4中的IPv6隧道 528 8.6.4 网络地址翻译-协议翻译 530 8.7 尾注 530 8.8 展望 530 8.9 推荐书目 531 8.10 复习问题 531 8.11 参考文献 533 第9章 路由器管理 535 9.1 规则和程序定义 536 9.1.1 服务等级协议 536 9.1.2 改变管理 536 9.1.3 扩大提交过程程序 538 9.1.4 更新规则 538 9.2 简单网络管理协议 538 9.2.1 SNMP概述 538 9.2.2 CiscoWorks 540 9.2.3 路由器的SNMP配置 540 9.3 RMON 545 9.3.1 RMON概述 545 9.3.2 路由器的RMON配置 546 9.4 记录日志 548 9.5 系统日志(Syslog) 551 9.5.1 Syslog概述 551 9.5.2 路由器上Syslog的配置 552 9.6 网络时间协议(NTP) 553 9.6.1 NTP概述 553 9.6.2 路由器的NTP配置 554 9.7 记账 557 9.7.1 IP记账 558 9.7.2 NetFlow 559 9.8 配置管理 564 9.9 故障管理 565 9.10 性能管理 567 9.11 安全管理 567 9.11.1 口令类型和加密 568 9.11.2 控制交互式访问 568 9.11.3 减少拒绝服务攻击的危险 569 9.11.4 TACACS+ 570 9.11.5 RADIUS 575 9.11.6 安全的命令解释器 576 9.12 设计支持管理程序的服务器 577 9.13 网络健壮性 577 9.13.1 HSRP 577 9.13.2 多组HSRP 578 9.13.3 配置HSRP 579 9.13.4 配置MHSRP 582 9.14 实验室 583 9.15 推荐书目 584 9.16 尾注 585 9.17 展望 585 9.18 命令归纳 585 9.19 复习问题 589 9.20 配置练习 590 9.21 参考文献 590 第三部分 附录 附录A show ip bgp neighbors的显示 594 附录B 正则表达式指南 599 附录C 保留的多播地址 603 附录D 复习问题的答案 619 附录E 配置练习的答案 631 附录F 故障排除练习答案 664
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值