OSPF进程号的意义及多进程OSPF
OSPF进程号的意义及多进程OSPF—吴锦霖分享
1. OSPF进程号的概念
在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个OSPF进程的进程号(Process-Id),进程号用于在一台路由器上区分不同的OSPF进程。这就有点像人格分裂的感觉 —— 一个自然人有多种不同人格,每种人格之间相互独立,互不影响。进程号的取值范围是1-65535。
上图所示的拓扑中,R1使用进程号10创建了一个OSPF进程,同时激活了自己的直连接口FE0/0,而R2使用进程号20创建了一个OSPF进程,同时也在自己的直连接口上激活了OSPF。虽然这两个进程号不一样,但是R1-R2之间的邻居关系建立是完全没有问题的。因为OSPF进程号只具有本地意义,路由器之间交互的所有OSPF报文中,都不会体现任何关于进程号的信息。进程号只在一台路由器上用于区分多个OSPF进程,因此对于R1而言,它并不关心它的直连OSPF邻居R2使用的是什么OSPF进程号,10也号,20也罢,这就有点像“自己的事自己知道就行“ -- 本地意义。
当然,在实际的网络部署中,除非有特定的需求,我们还是建议全网使用统一的进程号,虽然每台设备使用不同的进程号对OSPF的运行没什么影响,但是却给网络的管理和维护带来了多余的成本,你不会这么干的,对吧?
2. 多个OSPF进程
上面的拓扑很有意思,在R2上,常规的做法是用一个进程号创建一个OSPF进程,同时将自己的两个直连接口都宣告进这个OSPF进程,但是为了讲解OSPF进程ID的本地意义,我这里在R2上使用两个进程号分别创建了两个OSPF进程,并且分别宣告了R2的两个直连接口,换句话说,R2使用OSPF进程12与R1建立邻居关系,使用OSPF进程23与R3建立OSPF邻居关系。如此一来,R2在本地就有了两个OSPF进程,使用进程号12及23进行区分。整个网络中也就出现了两个OSPF域(OSPF Domain)。这两个OSPF进程,都会各自从其邻居R1和R3学习到OSPF路由,但是值得强调的是:
· 这两个OSPF进程相互独立和隔离(两个OSPF Domain),两个进程独立维护各自的LSDB。换而言之R2通过OSPF进程12从R1学习到的OSPF路由(严格的说,应该是LSA),例如描述1.1.1.0/24的LSA,缺省时不会传递到进程23的(这是因为在R2,这两个OSPF进程互相独立互相隔离),当然,从R3学习过来的OSPF路由,R2虽然自己能学习到,但是照样不会传递给R1,这就好像,这两个进程虽然都在R2上,但是彼此之间有着一道鸿沟,世界上最遥远的距离,莫过于此啊。
· 再者,R2这两个OSPF进程虽然说彼此隔离,但是都可以为R2自身贡献路由,例如如果R1更新过来一条路由1.1.1.0/24,R3更新过来一条3.3.3.0/24,那么在R2的全局路由表里都是能看到这两条路由的。但这两条路由不会互相灌进对方的OSPF进程(造成的直接结果是R1没有R3的路由,R3没有R1的路由),除非 -- 对了,路由重发布,你懂的。
3. OSPF进程之间的路由重发布
同一台路由器上的不同OSPF进程相互独立,各自维护自己的LSDB。如果要把一个OSPF进程内的路由注入到另一个进程中,就需要部署路由重发布,例如上图所示,R2作为一台ASBR,要把进程12中的路由注入到进程23中,配置如上。当然,如果要实现全网路由互通,则还需要在OSPF进程12中,将进程23的路由重发布进来。
4. 什么时候会使用不同的OSPF进程
我们知道一台路由器可以创建多个OSPF进程,而且进程之间相互隔离。一般情况下,当我们在做网络建设时,整个网络就是一个统一的路由选择域,如果选用OSPF作为路由协议,则所有的OSPF路由器使用一个OSPF进程即可。
上图展示了一个大型企业的网络拓扑,R1、R2、R3及R4是省公司的设备,SW1、SW2及往下是市公司的设备,R5是区县站点设备(实际上有多个区县站点,此处只显示了一个)。为了实现市公司与各区县站点的网络互通,我们在市公司所有设备,以及区县站点的所有路由器上都配置了OSPF并且进行了多区域的规划。由于整个企业数据网络的规模较大,要想打通整个网络的路由,使用一个OSPF域直接从区县站点往上拉到省公司,显然是不靠谱的,一来整个域太大,路由前缀数量太多,二来OSPF的多区域设计在面对这么大规模网络的时候显得还是有点力不从心,三来总公司并不希望看到分公司以及下面的子站点的路由明细,路由汇总势必是要考虑的,加之对流量的走向还有严格的要求,策略部署上如何考虑?因此为省公司网络规划了另外一个OSPF域,在省公司的边界设备R3、R4上创建两个OSPF进程,进程1面向总公司,进程2面向下面的市公司及区县站点。两个进程相互独立不互相干扰,而R3及R4又能够学习到省公司、分公司及各个区县站点的路由,两个OSPF域可以独立规划,域内Area的设计又变得更加宽松和灵活。
当然,省公司、总干以及地市公司是需要相互通信的,这时候由于省公司的网络属于OSPF进程1,而市分公司及区县站点的网络属于OSPF进程2,相互独立,为了把路由打通,就需要在R3和R4上执行OSPF进程之间的路由相互重发布。一旦把R3、R4设计为路由重发布的执行点,他俩瞬间就变得非常重要和牛逼了,因为在重发布的过程中,可以执行路由策略、可以做路由过滤,更可以做路由汇总,网络的设计和规划就变得非常有弹性了。
下面再来看多进程OSPF的另一个例子:
在上图所示的网络中,存在两个不同的业务。生产及办公,两个业务各有自己的服务器网络,两台Router分别连接着这两个业务的服务器网络。而终端用户则连接在SW上,现在终端用户需要访问各自业务的服务器,那么SW当然是需要有相应的路由的。我们希望将生产及办公的业务进行隔离,但是这两个业务的终端用户又都是连接在SW上,如何隔离?很简单,在SW上创建两个OSPF进程,其中进程1用于生产业务,进程2用于办公业务。在OSPF进程1中,激活VLAN10及VLAN20对应的SVI,并激活与SC-Router对接的三层接口;在OSPF进程2中,激活VLAN30、40对应的SCI,并激活与BG-Router对接的三层接口,如此一来办公及生产服务器网段的路由通过这两个OSPF进程在SW上进行了隔离。
这的确是一种好方法,但是虽然OSPF进程是隔离的,SW的全局路由表中却拥有者生产及办公两个业务的路由,也就是说两个业务的路由实际上在SW这个点上是打通的,显然不够安全,如果有人从办公网络登到办公终端,然后再从办公终端跳转,去访问生产服务器就麻烦了。所以,我们又引入了另一个概念——VRF(Virtual Routing Forwarding,虚拟路由转发),所谓的VRF你可以理解为虚拟设备,通过在SW上创建VRF实例,并且将生产的OSPF进程关联到一个VRF实例中,从而彻底将生产路由与办公路由进行隔离(办公路由及业务跑在根设备上,生产路由及业务跑在VRF实例上,两者完全隔离,可以想象为两台SW)。关于VRF的进一步内容,请查阅相关文档,这里篇幅所限,不做详细探讨。
OSPF进程号的意义及多进程OSPF的更多相关文章
- OSPF ProcessID(进程号)详解
一.OSPF ProcessID本地有效 首先明确一下,OSPF ProcessID,范围为1-65535,用于在路由器本地标识OSPF进程. 看上图,R1使用进程号10创建了一个OS ...
- win7命令行 端口占用 查询进程号 杀进程
打开CMD窗口 win+R–>cmd 根据端口号查找进程号 netstat -nao|grep 端口号 根据进程号得到进程名 tasklist |findstr 进程号 杀进程 taskkill ...
- Shell 脚本 ,, 根据进程号退出 从而关机
#!/bin/bash fun(){ ps -ef | grep "$1" | awk '{print $2 $8}' > /usr/file while read line ...
- linux查询进程号,出现两个进程
[root@ADM01B ~]# ps -ef|grep iesmgr root 5929 5321 0 09:38 pts/7 00:00:00 grep iesmgr root 9798 1 0 ...
- 【Linux】查看进程号
1.查看占用8080端口的进程号 lsof -i: | awk '{print $2}' | uniq | grep -P -o "[0-9]{2,5}" 2.查看使用java进程 ...
- cmd代码:查端口占用,查进程号,杀进程
@echo off :main cls ::|findstr "8080" ::查找进程占用tasklist|findstr "XXXX" ::杀进程taskk ...
- 通过awk获取netstat命令中的进程号
需要如下: 获取进程号
- lsof根据端口返回进程号杀死进程的方法
参考自:http://newmiracle.cn/?p=661 Linux shell根据端口返回进程号杀死进程的方法 kill -9 `lsof -t -i:8888` 这个就是杀死8888端口的进 ...
- 通过端口号查找进程号并杀掉进程window和Linux版本
window版本: cmd下执行: 1.查找某端口号下的进程: netstat -ano|findstr 8080 如果该端口号存在进程,执行完命令后会出现列表,最后一列的数字表示该端口号下的进程号 ...
随机推荐
- python数据类型及基本运算符
1.数据类型 (1)什么是数据类型? 变量值是我们存储的数据,所以数据类型就是变量值的不同种类 (2)为什么要分类型? 变量值是为了保存现实世界中的状态,针对于不同的状态应该用不同的类型去表示 (3) ...
- ab测试工具
我们可以模拟100个并发用户,对一个页面发送1000个请求 输入命令:ab -n1000 -c100 http://www.jb51.net/ 结果: ##首先是apache的版本信息 This is ...
- 开车旅行 [NOIP 2012]
Description 小A 和小B决定利用假期外出旅行,他们将想去的城市从1到N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i的海拔高度为Hi,城市 i ...
- Java 构造器 通过私有构造器强化不可实例化的能力
只有当类不包含显式的构造器时,编译器才会生成一个公有的.无参的缺省构造器.只要让一个类包含私有构造器,这个类就不能被实例化了.示例: // 工具类 public class UtilityClass ...
- Codeforces Round #443 (Div. 1) A. Short Program
A. Short Program link http://codeforces.com/contest/878/problem/A describe Petya learned a new progr ...
- 【贪心】经营与开发 @upc_exam_5500
目录 经营与开发 @upc_exam_5500 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 SOLUTION CODE 经营与开发 @upc_exam_5500 PROBLEM 题 ...
- web项目上传图片需要刷新文件夹才能显示
问题:上传图片到指定的目录,比如上传到项目文件夹中E:\briup\workspace\Buddhism\WebContent\userImage,但是上传呢完毕之后需要手动刷新该文件夹,网页上才能正 ...
- YUV420、YUV422、RGB24转换
//平面YUV422转平面RGB24static void YUV422p_to_RGB24(unsigned char *yuv422[3], unsigned char *rgb24, int ...
- .Net转Java.07.IDEA和VS常用操作、快捷键对照表
功能 IDEA 2017.1 快捷键 Visual Studio 2015 快捷键 文档 格式化整个文档 Ctrl+Alt+L Ctrl+E,D 或者 Ctrl+K,D 文件 显示最近的 ...
- Hadoop Ls命令添加显示条数限制參数
前言 在hadoop的FsShell命令中,预计非常多人比較经常使用的就是hadoop fs -ls,-lsr,-cat等等这种与Linux系统中差点儿一致的文件系统相关的命令.可是细致想想,这里还是 ...