OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是一个链路状态协议。

OSPF的特点

  1. OSPF是一种无类路由协议,支持VLSM可变长子网掩码。支持IPV4和IPV6.
  2. 组播地址:224.0.0.5 224.0.0.6。
  3. OSPF度量:从源到目的所有出接口的度量值,和接口带宽反比(10^8/带宽)。
  4. 收敛速度极快,但大型网络配置很复杂。
  5. IP封装,协议号89

OSPF运行原理

OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过SPF算法,计算最佳路径(cost最小)后放入路由表。 
设计要求:1.必须配置骨干区域0 
                  2.其他区域连接到骨干区域 
好处:  1.减小路由表(通过域间汇总) 
          2.本地拓扑变化值影响一个区域(也是通过汇总) 
          3.某些LSA之子本地泛红,不泛洪到其他区域 
注:OSPF区域划分基于接口而不是设备

OSPF区域及路由器身份

OSPF区域

骨干区域(区域0):骨干区域必须连接所有的非骨干区域,而且骨干区域不可分割,有且只有一个,一般情况下,骨干区域内没有终端用户。 
非骨干区域(非0区域):非骨干区域一般根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。一般情况下,费骨干区域主要连接终端用户和资源。

DR、BDR的选举

DR、BDR的选举规则:比较router-id,router-id有以下获得方式:

  1. 由工程师指定
  2. 这台设备最大的环回口ip
  3. 没有环回口的话,物理接口ip地址最大的。

选举规则:

  1. 最高优先级值的路由器被选为DR(默认优先级相同:1),次高优先级的为BDR
  2. 若优先级相同,则比较router-id,拥有最高router-id的成为DR,次高的成为BDR
  3. 优先级被设置为0的不参与选举
  4. OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。
  5. DR与BDR不可以抢占
  6. 当DR小时之后,BDR直升DR,重新选BDR
  7. 所有DR,BDR,DRothers说的都是接口,而不是设备
  8. 不同网段间选DR,BDR,而不是以OSPF区域为单位

OSPF状态

  1. Down State
  2. Init State:发送了Hello包(还没收到)
  3. Two-way State:收到了一个Hello包且Hello包中包括自己的router-id(对方回复的)
  4. Exstart State:First DBD确认主从关系,router-id大的为主,先发包
  5. Exchange State:交互DBD 相互学习
  6. Loading State:LSR与LSU的交互过程
  7. Full State:所有交互已经完成

注:DBD只是一个目录的性质,并且第一个DBD只是用来协商之后的DBD由谁先发送。

OSPF数据包类型

  1. Hello:10秒发送一次,死亡时间40s,4倍关系,可以修改。
  2. DBD:Database Description 仅仅是一个对本地数据库的概念性叙述,供路由器核对数据库是否同步
  3. LSR:Link-State Request 请求链路状态,在数据库同步过程中使用,请求其他角色发送自己失去的LSA最新版本。
  4. LSU:Link-State Update 链路状态更新,LSU包括几种类型的LSA,LSU负责泛洪LSA,和相应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居,进行泛洪的时候,邻居路由负责把收到的LSA信息重新封装在新的LSU中。
  5. LSACK:链路状态确认,路由器必须对每个收到的LSA进行LSACK确认,但可以用一个LSACK确认多个LSA。

OSPF更新

  1. OSPF是一种触发更新的机制。一旦拓扑发生变化便会更新。
  2. OSPF也有周期性更新(30分钟一次)
  3. 当收到一条LSA之后: 
    首先查看是否在LSDB中,若没有则假如LSDB,回复LSACK。继续泛洪出去,并且通过SPF算法计算最佳路径并加入路由表。若存在,则比较谁的更“新”(看序号),序号大者新,若本地不如收到的信更新本地LSDB并泛洪,且通过SPF算法计算最佳路径并加入路由表,若比收到的新,则将本地的泛洪出去。

注:LSA序列号,4字节,16进制 
0x80000001-0x7FFFFFFF

OSPF邻居建立

邻居的两个状态 
Neighbors:邻居 
Adjacency:邻接

    1. 邻居不一定是邻接,邻接一定是邻居,只有交互了LSA的OSPF邻居才成为OSPF的邻接,之交互Hello包的支撑位邻居,
    2. 在点对点网络中,所有邻居都能成为邻接。
    3. MA(广播多路访问网络,比如以太网)网络类型中,DR,BDR,DRothers三者关系为: 
      DR、BDR与所有的邻居形成邻接,DRothers之间只是邻居而不交换LSA

影响OSPF邻居建立的原因:

    1. Hello与Dead Time时间不一致(改Hello的话Dead自动*4,单改Dead的话Hello不变)
    2. 区域ID必须一致
    3. 认证(password一致)
    4. Stub标识一致(与特殊区域有关,之后介绍)
    5. MTU-携带在DBD报文中,两端口必须一致
    6. 掩码,如12.1.1.1/30——12.1.1.2/24 这种情况是可以ping通的,但邻居关系起不来 
      (OSPF对环回口,无论掩码多少位,都按32位处理,所以建议环回口直接/32,或者在环回口下还原真实掩码)
    7. ACL(是否放行OSPF)

ospf举例

AR1配置

配置ip

<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]ip address 192.168.10.1 24
[Huawei-GigabitEthernet0/0/0]q
[Huawei]

Please check whether system data has been changed, and save data in time

Configuration console time out, please press any key to log on

配置router id,宣告网段

<Huawei>
<Huawei>
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei-ospf-1]q
[Huawei]router id 1.1.1.1
Info: Router ID has been modified, please reset the relative protocols manually
to update the Router ID.
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255

 

AR2

配置ip
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]interface GigabitEthernet //
[Huawei-GigabitEthernet0//]ip address 192.168.10.2
[Huawei-GigabitEthernet0//]q
[Huawei]interface GigabitEthernet //
[Huawei-GigabitEthernet0//]ip address 192.168.20.1
Sep ::-: Huawei %%01IFNET//LINK_STATE(l)[]:The line protocol
IP on the interface GigabitEthernet0// has entered the UP state.
[Huawei-GigabitEthernet0//]q
配置router id,宣告网段
[Huawei]router id 2.2.2.2
Info: Router ID has been modified, please reset the relative protocols manually
to update the Router ID.
[Huawei]ospf
[Huawei-ospf-]area
[Huawei-ospf--area-0.0.0.0]netwo
[Huawei-ospf--area-0.0.0.0]network 192.168.10.0 0.0.0.255
[Huawei-ospf--area-0.0.0.0]q

AR3

<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]interface GigabitEthernet //
[Huawei-GigabitEthernet0//]ip address 192.168.20.2
[Huawei-GigabitEthernet0//]q
<Huawei>system-view
[Huawei]router id 3.3.3.3
[Huawei]osp
[Huawei]ospf
[Huawei-ospf]area
[Huawei-ospf--area-0.0.0.1]network 192.168.20.0 0.0.0.255
[Huawei-ospf--area-0.0.0.1]q
[Huawei-ospf-]q

网络设备之ospf2的更多相关文章

  1. OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)

    上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态. 控制节点 ifconfig 显示控制节 ...

  2. linux网络设备驱动程序

    4.linux网络设备驱动程序体系结构 -------------------------------------- | 数据包发送 | 数据包接收 | ----->网络协议接口层 | dev_ ...

  3. 谢欣伦 - OpenDev原创教程 - 网络设备查找类CxNetworkHostFind & CxNetworkAdapterFind

    这是一个精练的网络设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxNetworkHostFind的使用如下: void ...

  4. 从veth看虚拟网络设备的qdisc

    背景 前段时间在测试docker的网络性能的时候,发现了一个veth的性能问题,后来给docker官方提交了一个PR,参考set tx_queuelen to 0 when create veth d ...

  5. 用OSSIM轻松分析网络设备日志

    用OSSIM轻松分析网络设备日志 基于插件的日志收集与处理模式,使得用户可以轻松的利用OSSIM来分析异构网络环境下的各种网络设备日志,下面展示一些硬件设备日志的实例,我们在RAW LOG界面里,搜索 ...

  6. xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。

    昨天一不小心误删了xamarin 开发环境下的虚拟设备网络设备.名称为:vEthernet(internal Ethernet Port Windows Phone Emulator).导致原来能正确 ...

  7. CCNA网络工程师学习进程(4)网络设备的基本配置和详细介绍

        网络设备(路由器.交换机和防火墙等)与计算机一样需要操作系统.网络设备采用专用的操作系统,统称为IOS(Internetwork Operating System,网络操作系统).     ( ...

  8. CCNA网络工程师学习进程(2)基本的网络设备

      在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...

  9. Ansible用于网络设备管理 part 0 安装和登录网络设备

    真实在是累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-too ...

随机推荐

  1. python使用C扩展

    CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/C API.每 ...

  2. ( 2018 Multi-University Training Contest 2)

    2018 Multi-University Training Contest 2) HDU 6311 Cover HDU 6312 Game HDU 6313 Hack It HDU 6314 Mat ...

  3. datagridview连接数据库的简单实现

    对于需要从数据库获取数据的列,在DataPropertyName填写对应的列名字. 在Load函数中添加如下代码,先关闭自动生成列选项,然后得到一个查询的datatable,并将其绑定到datasou ...

  4. C. On Number of Decompositions into Multipliers 组合数学

    http://codeforces.com/contest/397/problem/C 给出n个数字,m = a[1] * a[2] * a[3] ... * a[n] 要求把m分成n个不一样的乘积, ...

  5. python flask学习(2)

    本文主要整理下几个Flask扩展: 0.Flask-Bootstrap:集成Twitter开发的一个开源框架Bootstrap.1.Flask-Script:为Flask程序添加一个命令行解析器2.F ...

  6. MVC 下载相关

    前台: location.href = "/Flow/SB1SP?clxxid=8099b23c-aa5a-44a3-97ef-85eed78145ba"; 后台: publci ...

  7. HTML 5的革新——更简洁的结构

    今天我们阐述HTML 5的革新之一:更简洁的结构. 新的文档类型 DOCTYPE 先来解释一下文档类型 DOCTYPE:文档类型位于HTML源文件的第一行,在HTML4的标准中,DOCTYPE在被归在 ...

  8. two.js基本操作

    今天介绍一个网络上并不常用的插件two.js,two.js是一款网页二维绘图软件,可以在指定区域内产生自设的各种动画效果 下载网址如下: https://two.js.org/#download 一: ...

  9. 用户登陆界面(jquery)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Oracle数据仓库创建教程

    Oracle数据仓库创建教程.如何创建一个数据仓库,创建实例,以为毕业设计要求,最近开始Oracle的数仓建模实践,详细记录了图形界面下的 Oracle database 12C 数据仓库创建过程. ...