学习历程NO3

       今天正式进入ISIS部分,ISIS最开始是在OSI为CLNP设计的动态路由的协议,ISIS说人话就是中间系统到中间系统。他跟OSPF有点相似,像,但不完全像。其实中间系统相当于现在TCP/IP网络模型中的路由器,用于网络层通信。

ISIS基础知识:

ISIS:IGP,链路状态协议,优先级15

支持CLNP、IP网络并且是在数据链路层封装

NASP(Network Service Access Point)网络服务接入点

NASP是ISIS中的网络层地址,就像IP地址一样。

组成部分

 IDP:

由OSI规定的,并由AFI和IDI组成的,相当于IP地址中的主网络号。AFI是表示地址分配机构的地址格式,IDI用来标识域。

DSP:

相当于IP地址中的子网号和主机地址,由High Order DSP、system ID、SEL组成,High Order DSP用来分割区域,system ID用于区分主机,SEL表示协议类型,例如00就代表IP协议

如何观察ISIS地址?可以从后往前看,最后两位是SEL,例如00,再看system ID,例如0000.0000.0001。最后剩下的就是Area IP了。

为了方便管理,一般会根据Route ID配置system ID。如何转换?

例子:

Route ID 10.0.0.1

010.000.000.001写成为三位

0100.0000.0001转换完成

49.0100.0000.0001.00添加Area ID和SEL

注意,他是16进制的!!!!

路由器分类:

L1:区域内的路由器,本区域内的路由信息,建立邻接要区域号一样

L2:骨干区域的路由器,所有的路由器信息,建立邻接时区域号可以不同

L1/2:默认类型,和ABR相似

NET(网络实体名称)

OSI协议栈中网络层信息,主要用于路由计算,可以看成特殊的NASP,SEL永远是00。长度与NASP相同。

每台设备最多三个NET,同一台设备上system ID必须相同。

ISIS区域问题:

在OSPF中,一个路由器可以属于多个区域,不同接口处于不同区域下。而ISIS不同,一个路由器属于一个区域。

ISIS中的骨干区域则是包含了L2、L1-2路由器。而在骨干区域这整个大区域中,其实路由器的Area  id是不一定相同的。要分清这个概念,骨干、非骨干区域,以及Area ID。

ISIS支持的网络类型

广播(broadcast):比如Ethernet

P2P:比如PPP、HDLC

将其建立连接的方式设定为3-way时,意思是2-way、3-way都可以用

在isis ppp-negotiation 3way后加上only,就是只用3-way了

ISIS的cost:

默认的cost为10,当路由缺省时,cost值不受接口带宽的影响,直接就是10。

ISIS的开销值是有两种类型的,默认为narrow,cost值为10。还有一种wild

narrow:1-63

wild:1-16777215

isis总共有三种方法确定开销值:

优先级从高到低

接口开销:给单独的接口设置开销。

全局开销:给所以接口设置

自动计算开销:根据接口的带宽自动计算。

ISIS报文

主要有ISIS报头(头部又可以分成通用头部和专用头部)和变长字段部分。

ISIS报文四大类:

IIH(ISIS Hello)

这个和OSPF的hello包很像,是用来建立和维持邻接关系的。

细分的话有三种Hello包

L1 LAN IIH

相当直观,是在广播网络中的L1路由器上使用的

L2 LAN IIH

在广播网络中的L2路由器上使用

P2P IIH

在P2P网络中使用。

LSP:

用来交换链路状态信息

也分成L1 LSP和L2 LSP两个类型。

SNP包含了CSNP(完全序列号报文),有点像LSU?、PSNP(部分序列号报文)类似于LSR,LSAck

这个的作用是描述LSDB中的全部或者部分LSP,从维护LSDB的完整和同步。就像是OSPF中的DD。

CSNP和PSNP也都各有L1和L2两种

TLV数据结构:

Type

Lenth

Value

ISIS建立邻接:

ISIS中想要建立邻接需要满足以下条件:

属于同一层次,并且相邻

此外对于L1来说,area id也必须一样

链路两端的ISIS接口的网络类型要一致

链路两端的ISIS接口的地址要在同一网段(默认情况)

相同的MTU

认证相同

接口未被设置成slient

在P2P网络中,system id长度要一致,最大区域地址数要相同。

由于ISIS实际上是运行在2层的协议,并且最早是给CLNP用的,所以邻接关系的建立其实和IP地址没关系,但是在实际应用的时候还是需要的。

在接口下:isis peer-ip-ignore

ISIS建立邻接的过程

广播网络建立邻接的过程(三次握手 3-way)

在DOWN状态下,R1向邻居发送L1 IIH报文,此时R2收到了报文,变成initial状态

R2此时向R1发送L1 IIH报文,报文中告诉了R1,R1是R2的邻接。

R1收到后,状态变成UP,然后R1给R2发一个L1 IIH。

R2收到后,就知道了R2是R1的邻接。状态也变成了UP。

在广播网络中是需要选举DIS的,在邻接关系建立后会等待2个hello间隔,再开始选举。跟OSPF不同,OSPF是等40秒。

怎么选举?

首先看优先级,然后看MAC地址,MAC地址大的做DIS

DIS的选举默认是抢占的,OSPF是不抢占的。

DR的作用:减少LSA泛洪的数量,减轻负担。

DIS的作用:创建和更新伪节点。

伪节点是用来模拟广播网络的一个虚拟节点

伪节点使用DIS的system ID和circuit id标识。

DIS发hello PDU的间隔是普通路由器的1/3。

DIS与DR的区别

DIS不会有BDIS这种东西,而DR有BDR

ISIS中优先级为0只代表优先级低而已,OSPF中优先级为0则直接不参与选举

ISIS中新路由器加入时,如果新路由器更适合做DIS,那么他就会被重新选为DIS。在OSPF中,新路由器直接变成Dother。

ISIS中同一网段上的同一级别路由器都会形成邻接。而OSPF中路由器只会和DR、BDR建立邻接。

DR是为了减少LSA泛洪,而DIS是为了周期性发送CSNP,同步LSDB

DR是在链路上选举的,DIS是在路由器上选举的,L1和L2都会有DIS

OSPF选举需要等40秒,ISIS只需要两个hello间隔。

P2P网络中建立邻接的过程(2-way)

两次握手机制:

只要路由器收到对端发来的hello报文,就单方面宣布邻居为UP状态,建立邻居关系

华为中默认是三次握手

MTU和padding问题

在P2P网络中,如果两台路由器,他们的接口MTU,R1是1000,R2是2000,当R2向R1发了一个MTU为1500的LSP,R1是接收不了的。那么就会出现问题了,R2有这个LSP,R1没有,LSDB不一致了!

解决方案,把Hello填充到接口MTU的长度,此时R2的hello都是2000了,R1接收不了了,邻接无法建立,自然就不会出现LSDB不一致的情况了。宁可不建立邻接,也不能出现这种不一致的情况。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,需要使用 OpenSSL 工具生成一个证书文件,包括公钥和私钥: ``` openssl req -x509 -newkey rsa:2048 -keyout example.key -out example.crt -days 365 ``` 这个命令将生成一个 2048 位 RSA 密钥对,并将其用于创建自签名的 X.509 证书,有效期为一年。生成的私钥将保存在 `example.key` 文件中,证书将保存在 `example.crt` 文件中。 接下来,我们可以使用 OpenSSL 的命令行工具来提取证书文件中的公钥: ``` openssl x509 -in example.crt -pubkey -noout > example.pub ``` 这个命令将从 `example.crt` 中提取公钥,并将其保存到 `example.pub` 文件中。 现在,我们可以使用 Python 的 Cryptography 模块来加密数据。以下是一个示例脚本: ```python from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization # 读取公钥 with open('example.pub', 'rb') as f: pubkey_bytes = f.read() pubkey = serialization.load_pem_public_key(pubkey_bytes) # 加密数据 message = b'Hello, world!' ciphertext = pubkey.encrypt(message, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None)) # 打印密文 print(ciphertext) ``` 这个脚本从 `example.pub` 中读取公钥,并使用 OAEP 填充方案加密了一条消息。密文将打印到控制台上。 最后,我们可以使用 OpenSSL 的命令行工具来解密数据: ``` openssl rsautl -decrypt -inkey example.key -in ciphertext.bin ``` 这个命令将使用 `example.key` 中的私钥来解密 `ciphertext.bin` 文件中的数据。请注意,`ciphertext.bin` 文件中的数据必须是二进制格式的密文,而不是 Base64 编码的字符串。 如果解密成功,您应该会看到原始的明文消息,即 `Hello, world!`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值