OSPF(Open Shortst Path First,开放式最短路径优先)协议是目前网络中应用最广泛的动态路由协议之一,也属于内部网关路由协议,能够适应各种规模的网络环境,是典型的链路状态(Link State)协议。
海成公司规模的越来越大,路由器的数量也逐渐增多,已经达到了8台。该公司的网络管理员经过考虑,发现原有的RIP路由协议也已不再适合现有公司的应用了,因此,决定在公司的路由器之间使用动态的OSPF路由协议,实现网络的互联。
由于公司的网络规模越来越大,管理员发现使用OSPF路由协议再适合不过了,因为OSPF路由协议可以实现快速的收敛,并且出现环路的可能性不大,适合中大型企业网络。
所需设备:
(1)Cisco 2911路由器2台。
(2)Cisco 3560-24PS交换机1台
(3)PC机3台。
(4)交叉线2条。
(5)直通线2条。
(6)DCE串口和DTE串口线1条
(7)Console线1条。
任务拓扑,见图4-2-18所示。
图4-2-18 配置OSPF协议单区域拓扑
配置如表4-2-6所示。
表4-2-6 交换机和PC机IP地址网络参数设置
| 设备 | 端口 | IP | Mask | 网关 1 |
| Switch-A | G0/1 | 192.168.1.1 | 255.255.255.0 | 无 |
| F0/1 | 192.168.10.1 | 255.255.255.0 | 无 | |
| Router-A | g0/1 | 192.168.1.2 | 255.255.255.0 | 无 |
| g0/0 | 192.168.20.1 | 255.255.255.0 | 无 | |
| S0/0/0 | 192.168.2.1 | 255.255.255.0 | 无 | |
| Router-B | S0/0/0 | 192.168.2.2 | 255.255.255.0 | 无 |
| G0/0 | 192.168.30.1 | 255.255.255.0 | 无 | |
| PC1 |
| 192.168.10.2 | 255.255.255.0 | 192.168.10.1 |
| PC2 |
| 192.168.20.2 | 255.255.255.0 | 192.168.20.1 |
| PC3 |
| 192.168.30.2 | 255.255.255.0 | 192.168.30.1 |
步骤1:按照如图4-2-18所示,连接网络拓扑结构图。
步骤2:按照如表4-2-6所示,配置计算机的IP地址、子网掩码和网关。
步骤3:配置Switch-A的名称及其接口IP地址。。
Switch>
Switch>enable
Switch#conf t
Switch(config)#host Switch-A 修改主机名
Switch-A(config)#ip routing 开启通信功能
Switch-A(config)#int fa0/1 进入端口
Switch-A(config-if)#no switchport 转换端口为路由端口
Switch-A(config-if)#ip add 192.168.10.1 255.255.255.0 配置IP和子网
Switch-A(config-if)#no shut 开启端口
Switch-A(config-if)#int g0/1 进入端口
Switch-A(config-if)#no switchport 开启端口
Switch-A(config-if)#ip add 192.168.1.1 255.255.255.0 配置网络
Switch-A(config-if)#no shut 开启端口
Switch-A(config-if)#exit
步骤4:配置Router-A的名称及其接口IP地址。。
Router>enable
Router#conf t
Router(config)#host Router-A 修改主机名
Router-A(config)#int g0/1 进入端口
Router-A(config-if)#ip add 192.168.1.2 255.255.255.0 修改主机名
Router-A(config-if)#no shut 开启端口
Router-A(config-if)#int g0/0
Router-A(config-if)#ip add 192.168.20.1 255.255.255.0
Router-A(config-if)#no shut
Router-A(config-if)#int s0/0/0
Router-A(config-if)#clock rate 64000 时钟速率设置为64000
Router-A(config-if)#ip add 192.168.2.1 255.255.255.0
Router-A(config-if)#no shut
Router-A(config-if)#
步骤5:配置Router-B的名称及其接口IP地址。。
Router>en
Router#conf t
Router(config)#host Router-B
Router-B(config)#int g0/0
Router-B(config-if)#ip add 192.168.30.1 255.255.255.0
Router-B(config-if)#no shut
Router-B(config-if)#int s0/0/0
Router-B(config-if)#ip add 192.168.2.2 255.255.255.0
Router-B(config-if)#no shut
Router-B(config-if)#
这个时候测试网络通信是不能实现全网互通的,要实现全网互通需要进行动态路由OSPF的配置
步骤6:在Switch-A上配置动态单区域OSPF路由。
Switch-A>en
Switch-A#conf t
Switch-A(config)#router ospf 1 进入ospf组1
Switch-A(config-router)#log-adjacency-changes 防止黑洞路由的产生
Switch-A(config-router)#network 192.168.10.0 0.0.0.255 area 0 允许通过的网段 区域为0
Switch-A(config-router)#network 192.168.1.0 0.0.0.255 area 0
注释:在思科OSPF协议里面,网段的子网掩码要用反掩码,
不过可以输入正常的掩码,思科系统会自动换算成反掩码
步骤7:在Router-A上配置动态单区域OSPF路由。
Router-A>
Router-A>enable
Router-A#conf t
Router-A(config)#router ospf 1 进入ospf动态路由组1
Router-A(config-router)#log-adjacency-changes 防止黑洞路由的产生
Router-A(config-router)#network 192.168.1.0 0.0.0.255 area 0 允许通过网段 区域0
Router-A(config-router)#network 192.168.2.0 0.0.0.255 area 0
Router-A(config-router)#network 192.168.20.0 0.0.0.255 area 0
Router-A(config-router)#
注释:在思科OSPF协议里面,网段的子网掩码要用反掩码,
不过可以输入正常的掩码,思科系统会自动换算成反掩码
步骤8:在Router-B上配置动态单区域OSPF路由。
Router-B#
Router-B#conf t
Router-B(config)#router ospf 1
Router-A(config-router)#log-adjacency-changes 防止黑洞路由的产生
Router-B(config-router)#network 192.168.2.0 0.0.0.255 area 0
Router-B(config-router)#network 192.168.30.0 0.0.0.255 area 0 允许通过的网段
Router-B(config-router)#
注释:在思科OSPF协议里面,网段的子网掩码要用反掩码,
不过可以输入正常的掩码,思科系统会自动换算成反掩码
步骤9:配置路由协议后,验证网络的连通性。在PC1上ping PC2、3,如图所示可以互相通信

小结:
(1)每个路由器的OSPF进程号可以不同,一个路由器可以有多个OSPF进程。
(2)OSPF是无类路由协议,一定要加掩码。
(3)第一个区域必须是区域0。
开放最短路径优先 (OSPF) 协议是一种链路状态路由协议,旨在替代距离矢量路由协议 RIP。 RIP 是网络和 Internet 早期广为接受的路由协议。 但是,RIP 依靠跳数作为确定最佳路由的唯一度量,很快便呈现出了问题。 在拥有速度各异的多条路径的大型网络中,使用跳数无法很好地扩展。 OSPF 与 RIP 相比具有巨大优势,因为它既能快速收敛,又能扩展到更大型的网络。其特性如下:
(1)适应范围广——支持各种规模的网络,最多可支持几百台路由器。
(2)收敛快速——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
(3)无自环——OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
(4)区域划分管理——允许自制系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
(5)路由分级——使用4类不同等级的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
(6)支持验证——支持基于接口的报文验证以保证路由计算的安全性。
(7)可以多播发送——在有多播发送能力的链路层上以多播地址收发报文,既达到了广播的作用,又最大程度地减少了对其它网络的干扰。
OSPF路由协议通过向全网通告自己的路由信息,使网络中每台设备最终同步一个具有全网链路状态的数据库(LSDB),然后路由器采用SPF算法,以自己为根,计算到达其他网络的最短路径,最终形成全网路由信息。
在大型的网络环境中,OSPF支持区域的划分,将网络进行合理规划。划分区域时必须存在area0(骨干区域)。其他区域和骨干区域直接相连,或通过虚链路的方式连接。
要创建OSPF路由进程,在全局命令配置模式下,执行以下命令:
router#config
router_config#router ospf process-id !启动ospf路由进程
router_config_router_process-id#network address wildcard-mask area area-id
router_config_router_process-id#
(1)OSPF路由进程process-id必须指定范围在1-65535,多个OSPF进程可以在同一个路由器上配置,但最好不这样做。多个OSPF进程需要多个OSPF数据库的副本,必须运行多个最短路径算法的副本。process-id只在路由器内部起作用,不同路由器的process-id可以不同。
(2)wildcard-mask 是子网掩码的反码, 网络区域ID area-id在0-4294967295内的十进制数,也可以是带有IP地址格式的x.x.x.x。当网络区域ID为0或0.0.0.0时为主干域。不同网络区域的路由器通过主干域学习路由信息。
OSPF动态路由协议多区域的实现
当大型 OSPF 区域分成较小的区域时,即称为多区域 OSPF。 多区域 OSPF 在大型网络部署时很有用,能减少处理和内存开销。
例如,每当路由器收到有关拓扑的新信息时,就像链路的添加、删除或修改,路由器必须重新运行 SPF 算法,创建新的 SPF 树并更新路由表。 SPF 算法会占用很多 CPU 资源,且其耗费的计算时间取决于区域大小。 一个区域中有过多路由器会使 LSDB 更大并增加 CPU 的负载。 因此,将路由器有效分区可以把一个巨大的数据库分成更小、更易管理的数据库。
多区域 OSPF 需要使用分层网络设计。 主要区域称为主干区域(区域 0)而且所有其他区域都必须连接到主干区域。 采用分层路由后,各个区域之间仍然能够进行路由(区域间路由);但许多繁琐的路由操作(例如重新计算数据库)在区域内进行。
对于复杂的网络,OSPF可使用多个区域以分层方式实施。 所有区域必须连接到主干区域(区域 0)。 互联各个区域的路由器称为区域边界路由器 (ABR)。
利用多区域 OSPF,OSPF 可以把一个大型自治系统 (AS) 划分为更小的区域,以支持分层路由。 采用分层路由后,各个区域之间仍然能够进行路由(区域间路由),但许多处理器密集型的路由操作(例如重新计算数据库)在区域内进行。
注意:拓扑更改以距离矢量格式分布到其他区域中的路由器。 换句话说,这些路由器只会更新其路由表,无需重新运行 SPF 算法。
一个区域中有过多路由器会使 LSDB 非常大并增加 CPU 的负载。 因此,将路由器有效分区可以把巨大的数据库分成更小、更易管理的数据库。
多区域 OSPF 的分层拓扑具有以下优势:
路由表减小 - 路由表条目减少,因为区域之间的网络地址可以总结。 默认情况下不启用路由总结。
链路状态更新开销减少 - 将处理和内存要求降到最低。
SPF 计算频率降低 - 使拓扑变化仅影响区域内部。 例如,由于 LSA 泛洪在区域边界终止,它使路由更新的影响降到最小。
每日一言:
一年中和一生中的秋天,时光很短暂,但是更加晴朗而缺少变化。
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba