天天看點

ISIS協定與Quagga ISIS配置ISIS協定

ISIS協定

參考:

ISIS協定詳解

華為-ISIS路由協定(原理+配置實操)

quagga手冊 ISIS協定部分根據:RFC1195、RFC5308、ISO10589

協定-ISIS基礎知識

ISIS基礎知識——很詳細

原理

IS-IS是一種鍊路狀态路由協定,每一台路由器都會生成一個LSP,它是該路由器所有使能IS-IS協定接口的鍊路狀态資訊的集合。

  • 通過跟相鄰裝置建立IS-IS鄰接關系,互相更新本地的LSDB,使LSDB與整個IS-IS網絡其他裝置的LSDB同步,
  • 然後根據LSDB運用SPF算法計算出IS-IS路由。如果此IS-IS路由是到目的位址的最優路由,則此路由會記錄到IP路由表中,并指導封包的轉發。

ISIS是ISO定義的OSI協定棧中**無連接配接網絡服務CLNS(Connectionless Network Service)**的一部分,用于動态路由資料包。

CLNS由以下三個協定構成:

  • CLNP:類似TCP/IP中的IP協定。IP協定為TCP/IP傳輸層服務。CLNP為OSI傳輸層服務。
  • ISIS:中間系統的路由協定,類似于IP中的OSPF
  • ES-IS:主機系統與中間系統間的協定,就像IP中的ARP,ICMP等。

ISIS是封裝在二層中的,這點與IP中的協定是不同的。IS-IS是在鍊路層上直接封裝的路由協定,基于CLNS 構架,有節點概念 & 無接口概念,

拓撲結構與路由器類型

拓撲結構

  • IS-IS在自治系統内采用骨幹區域與非骨幹區域兩級的分層結構。
  • 一般來說:
    • 将Level-1路由器部署在非骨幹區域
    • 将Level-2路由器部署在骨幹區域
    • 每一個非骨幹區域都通過Level-1-2路由器與骨幹區域相連
  • IS-IS 的一個路由器的所有接口肯定在同一個區域

路由器類型

ISIS協定與Quagga ISIS配置ISIS協定
ISIS協定與Quagga ISIS配置ISIS協定

Level-1路由器

  • 負責區域内的路由
  • 隻與屬于同一區域的Level-1和Level-1-2路由器形成鄰居關系
  • 屬于不同區域的Level-1路由器不能形成鄰居關系
  • 隻負責維護Level-1的鍊路狀态資料庫LSDB(本區域的路由資訊)
  • 到本區域外的封包轉發給最近的Level-1-2路由器

Level-2路由器

  • 負責區域間的路由
  • 可以與同一或者不同區域的Level-2路由器或者其它區域的Level-1-2路由器形成鄰居關系
  • Level-2路由器維護一個Level-2的LSDB(包含區域間的路由資訊)
  • 所有Level-2級别(即形成Level-2鄰居關系)的路由器組成路由域的骨幹網,負責在不同區域間通信
  • 路由域中Level-2級别的路由器必須是實體連續的,以保證骨幹網的連續性
  • Level-2級别的路由器才能直接與區域外的路由器交換資料封包

Level-1-2路由器

  • 同時屬于Level-1和Level-2的路由器
  • 可以與同一區域的Level-1和Level-1-2路由器形成Level-1鄰居關系,也可以與其他區域的Level-2和Level-1-2路由器形成Level-2的鄰居關系
  • Level-1路由器必須通過Level-1-2路由器才能連接配接至其他區域
  • Level-1-2路由器維護兩個LSDB,Level-1的LSDB用于區域内路由,Level-2的LSDB用于區域間路由
ISIS協定與Quagga ISIS配置ISIS協定

九種封包

  • Hello:用于建立和維持鄰居關系,也稱為IIH(IS-to-IS Hello PDUs)
    • Broadcast L1-Hello 用于建立Level-1 的鄰居關系
    • Broadcast L2-Hello 用于建立Level-2 的鄰居關系
    • P2P Hello:點到點網絡的hello封包
  • LSP:(鍊路狀态PDU)類似于OSPF的LSU(Link-state update),分為Level-1、Level-2,用于交換鍊路狀态資訊,觸發更新或 15分鐘周期更新
  • CSNP(完全序列号資料包)類似于OSPF的DD(Database Description Packets)封包,分為Level-1、Level-2,包括LSDB中所有LSP的摘要資訊,進而可以在相鄰路由器間保持LSDB的同步。
  • PSNP(部分序列号資料包)類似于OSPF的LSRequest或LSAck封包,分為Level-1、Level-2
ISIS協定與Quagga ISIS配置ISIS協定

鄰居關系建立

網絡類型

  • 廣播網絡
  • 點到點網絡:
    • 2Way是屬于兩次握手,沒有可靠性保證。隻要收到鄰接發送的IIH封包,并檢測通過,維護鄰居的狀态為UP狀态。
    • 3Way是屬于三次握手,在點到點網絡中使用3way的方式保證鄰接建立的可靠性。

建立條件:

隻有同一層次的相鄰路由器才有可能成為鄰居。

對于Level-1路由器來說,區域号必須一緻。

鍊路兩端IS-IS接口的網絡類型必須一緻。

鍊路兩端IS-IS接口的位址必須處于同一網段。

ISIS鄰居路由器的類型對形成鄰接類型的規則

參考:

ISIS鄰居路由器的類型對形成鄰接類型的規則

形成鄰接關系的規則:

  • Level-1 和 Level-2 路由器 一定不能形成鄰居關系
  • Level-1或level-1-2的鄰居是Level-2路由器 不管Area ID是否相同都能形成Level-2鄰接關系
  • Level-1或level-1-2的鄰居是Level-1路由器 隻有Area ID相同才能形成Level-1鄰接關系
  • 兩台Level-1-2路由器之間 Area ID相同則為Level-1鄰接;不同則為Level-2鄰接關系

DIS(Designated Intermediate System)

在廣播網絡中,IS-IS需要在所有的路由器中選舉一個路由器作為DIS,在鄰居關系建立後,路由器會等待兩個Hello封包間隔,再進行DIS的選舉。——類似于OSPF的DR,但沒有BDR即備份的DIS。

作用:

  • 周期性10s發送CSNP封包,CSNP相當于DBD 接收PSNP請求,回複LSP應答(同時擔當ACK确認)
  • 建立和更新僞節點(Pseudonodes)
  • 負責生成僞節點的LSP(Link state Protocol Data Unit),用來描述這個網絡上有哪些網絡裝置。

hold time

用于設定鄰居在收到 hello 資料包後認為此路由器可運作(啟動)的時間長度。如果鄰居在指定時間内沒有收到另一個 hello 資料包,它會将此路由裝置标記為不工作(關閉)。保持時間本身在 hello 資料包中公布。

在測試收斂時,如果停止某個容器,會導緻對端的veth-pair也被删除,這對運作isis的容器似乎有較大影響:

  • isis都需要接口資訊,配置再zebra和isis配置檔案中,如果本機的接口也被删除,是不是不符合實際?

LSP互動

廣播網絡:

需要借助DIS。

  • 所有裝置:向多點傳播位址通告自己的LSP
  • **DIS:**收集LSP,并每隔10s發送一次CSNP。其中,CSNP封包中通告DIS裝置中LSDB中所有LSP的摘要資訊
  • 其他裝置:收到DIS的CSNP封包後:
    • 檢視在CNSP封包中是否包含自己的LSP,如果包含,說明DIS收到了自己發送的LSP;如果沒有需要重傳
    • 将CSNP中的摘要資訊和本地的LSDB做對比,檢視本地去缺少哪些LSP,後續通過PSNP封包向DIS請求自己缺少的LSP
  • DIS:收到PSNP封包後回複PSNP封包中請求的LSP

點對點網絡:

  • 首先建立鄰接關系。
  • 開始互相發送CSNP,在CSNP封包中包含本地LSBD中所有LSP的摘要資訊。
  • 收到鄰居發送的CSNP封包,需要将CSNP封包中的LSP摘要資訊和自己的LSDB做對比,檢視缺少的LSP,并通過PSNP封包請求缺少的LSP。
  • 收到PSNP請求後,回複LSP封包。
  • 收到LSP封包後回複PSNP确認接收到的LSP。

NET位址

概述

運作 IS-IS 協定的路由器必須有一個被稱為 NET (Network Entity Title)的網絡位址,NET 也稱為網絡實體名,可唯一辨別一台路由器,長度為 8 至 20 位元組,是可變長的,采用 16 進制寫法,兩位代表一個位元組。

從下圖可以看出:

  • area id是變長的,1-13位元組,L2路由選擇需要
  • system id是固定長度,6位元組,L1路由選擇需要
  • NET中的SEL總是為00

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-0bZe2vdm-1629967347759)(images/ISIS協定.assets/image-20210806211949069.png)]

NET位址的配置設定規則

Area ID

  • 同一區域中所有節點的區域ID必須相同

System ID

  • 同一路由選擇域中所有節點的系統ID長度必須相同
  • L2 IS的系統ID必須在路由選擇域範圍内唯一
  • L1 IS的系統ID必須在區域範圍内唯一
  • 同一路由器上的多個NET的系統ID必須相同(似乎一個路由器可以最多配置3個NET)

配置NET位址的方法

一台路由器使用接口Loopback0的IP位址1.1.1.1作為Router ID,那麼SystemID可以進行如下轉換:

1、配置System ID

  • 補足3位:将IP位址1.1.1.1的每一部分都擴充為3位,不足3位的在前面補0:001.001.001.001
  • 4位分割:将擴充後的位址001.001.001.001重新劃分為3部分,每部分由4位數字組成,得到的0010.0100.1001就是System ID

2、配置Area ID

  • 這台路由器屬于area 1區域,則區域号設定為49.0001

3、拼湊NET位址

  • 由于NET的SEL總是00
  • 這台路由器的NET位址為:49.0001. 0010.0100.1001. 00

4、根據楊甯老師的PPT,可以設定為最簡單的8位元組區域ID(一個位元組的area id也夠用)加系統ID格式:

  • 如:49. 0010.0100.1001. 00
  • 但又有文獻說49是固定格式,可以嘗試一下

ISIS和OSPF的相同點和差別

相同點

  • 鍊路狀态資料庫和基于Dijkstra的SPF算法
  • 使用Hello封包形成和維護鄰接關系
  • 使用區域構成階層化的拓撲結構
  • 支援區域間的路由彙總
  • 無類别路由選擇
  • 在廣播型多址網絡上選取DR
  • 更新、決定和泛洪處理
  • 收斂能力

區域差別

IS-IS區域

  • 沒有專門的骨幹區域,由L2和L1/L2路由器連接配接形成IS-IS骨幹,可穿越多個區域
  • 區域邊界在鍊路上(一個路由器隻屬于一個域)
  • 一台IS-IS路由器屬于一個區域

OSPF區域

  • 所有非骨幹區域連接配接在一個中心的骨幹區域(area0)上
  • 區域邊界在路由器上(一個路由器可能同時屬于多個域,看接口劃分域)
  • 一條鍊路屬于一個區域

其他差別

IS-IS

  • LS資訊:LSP,一個分組
  • 每個區域可支援到1000台路由器
  • 隻定義2種網絡類型:廣播型、點到點(非廣播型)
  • ISIS的DR(DIS)選取不同于OSPF——隻選取DR,不選取BDR

OSPF

  • LS資訊:LSA,多種類型,封裝在LSU分組中
  • 每個區域可支援到50台路由器
  • 定義4種網絡類型:廣播型、點到點、NBMA、點到多點

IS-IS路由滲透

作用:

Level 1-2 和 Level-2 路由将自己知道的其他 Level-1 區域以及 Level-2 區域的路由資訊通報給指定的 Level-1 區域的過程,需要手動配置。

原理:

預設情況下,level-1-2和level-2路由器并不會将自己知道的路由域中其他level-1區域以及骨幹區域的路由資訊通報給level-1區域。于是,level-1路由器隻能通過自動生成預設路由來通路區域以外的任何目的地,類似ospf的Totally Stub區域。但預設路由未必最優,是以需要讓level-1知道其他外部區域的路由資訊。

這種情況下需要手動配置路由滲透。

import-route isis level-2 into level-1  //在level-1-2路由器上配置
           

其他細節:

控制Level-1裝置是否生成預設路由:

IS-IS協定規定,如果IS-IS Level-1-2裝置根據鍊路狀态資料庫判斷到通過Level-2區域比Level-1區域能夠到達更多的區域,該裝置(level-1-2)會在所釋出的Level-1 LSP内将ATT比特位置位。對于收到ATT比特位置位的LSP封包的Level-1裝置,會生成一條目的地為發送該LSP的Level-1-2裝置的預設路由。

Quagga ISIS配置

一個簡單的例子可以參考quagga.pdf P62。

quagga與思科的配置差異

router isis (ISIS程序名配置)

  • 作用:配置ISIS程序名,也是指定area的tag

    ip router isis

    指令也使用該名字
  • 用法:

    router isis + process_name

  • 在思科配置中,

    router isis

    不需要加程序名字,而在quagga中必須使用

    router isis WORD

    的形式指定ISIS 程序的名字。而這個程序的名字将被激活ISIS接口指令使用(ip router isis WORD)。

ip address 和 ip router isis WORD

都需要用到

interface

指令,與接口配置有關。

1、ip address

  • 作用:擷取接口資訊,是針對接口的配置,在zebra.conf中配置
  • 用法:

    ip address ip_address/prefix

2、ip router isis

  • 作用:用于在該接口上激活ISIS鄰接關系,在isisd.conf中配置
  • 用法:

    ip router isis + process_name

3、ip address和ip router isis應該要一起使用

需要注意一點,在思科路由器配置裡:

  • ①接口資訊(ip address address/prefix指令)是與②在接口上激活ISIS鄰接關系(ip router isis WORD)指令是放在一起的。
# 對思科路由器配置
!
interface eth0
 ip address 10.1.255.5 255.255.255.252
 ip router isis
           

然而,在quagga中,需要在zebra中填寫①接口資訊,而在isisd中②激活ISIS鄰接關系。

此外:

  • ip router isis 還需要寫明該ISIS程序的名字,如下圖的“r1”,而在思科配置中沒有;
  • ip address 隻能用斜線标記法
  • 用法:
# 對quagga
# zebra.conf中
!
interface eth0
 ip address 10.1.255.5/30 # 注意用“斜線标記法”,需要寫網絡字首所占位數
# isisd.conf中
interface eth0
 ip router isis r1 #
           

其他配置

router配置

net(NET配置)
  • 作用:配置路由器net位址
  • 用法:

    net XX.XXXX. ... .XXX.XX

is-type(路由器類型配置)
  • 作用:配置路由器類型
  • 用法:

    is-type [level-1 | level-1-2 | level-2-only]

  • 預設情況下都是level-1-2
router isis r1
 net 01.0001.0000.0001.00
 is-type level-1
           

接口配置

isis circuit-type(接口類型)
  • 作用:配置接口鄰接關系的類型
  • 用法:

    isis circuit-type [level-1 | level-1-2 | level-2]

isis network point-to-point(網絡類型)
  • 作用:配置網絡類型
  • 用法:

    isis network point-to-point

  • 預設是廣播網絡

繼續閱讀