OSI参考模型
-
应用层-----人机交互接口
-
表示层-----格式化数据
-
会话层-----建立、维护、管理会话连接
-
传输层-----建立、维护、管理端到端的连接
-
网络层-----IP逻辑寻址、路由选择
-
数据链路层----控制网络层与物理层之间的通讯
-
物理层------比特流传输
端口号:1-65535
-
1024-49151 注明端口
-
49152-65535 动态端口
192.168.1.0--网络号
6-TCP
7-ehco 17-UDP
20/21-FTP 22-ssh
23-telnet 53-DNS
68/67-DHCP
80-http 89-OSPF
443-https
HTTP协议代理服务器常用端口号:80、8080、3128、8081、9080
ARP协议(广播报文)
通过一种地址获取到另一种地址信息。
-
正向ARP
-
反向ARP
-
免费ARP
ARP缓存表:180s
TCP/IP模型
先有协议再有模型
四层模型---TCP/IP标准模型
-
上三层合并统一为应用层
-
下两层合并统一为网络接口层
-
第三层称为网际层或互联网层
五层模型---TCP/IP对等模型
数据包、数据帧、数据段
0X0800 IPV4协议
0X0806 ARP协议
跨层封装
目的---提高封装和解封装的速度,加快传输效率。
注意:需直连设备
-
跨四层封装----应用在直连路由设备之间。
-
跨三层、四层封装------应用在直连交换设备之间
DSAP----标识接收方上层处理该数据包的模块
SSAP----标识发送方上层处理该数据包的模块
Control--决定了数据传输方式
无连接模式
面向连接模式---分片、重组、排序
IP地址
单播地址----既能作为源IP地址,又能作为目的IP地址
组播地址----只能作为目的IP地址
广播地址----只能作为目的IP地址
单播地址
A:掩码8
B:掩码16
c:掩码24
组播地址
D:
保留地址
E:
A类私网: 10.0.0.0-10.255.255.255
B类私网: 172.16.0.0-172.31.255.255
C类私网: 192.168.0.0-192.168.255.255
特殊IP地址
环回地址---127.0.0.1-127.255.255.254--用于测试
受限广播地址---255.255.255.255
主机位全1----直接广播地址---192.168.1.255/24
主机位全0-----网络地址-----192.168.1.0
0.0.0.0------所有IP、没有IP
169.254.0.0/16----本地链路地址/自动私有地址
VLSM---可变长子网掩码
思路:从主机位向网络位借位。
借出的位被称为子网位--->子网位特点是属于网络位,但本质为主机位,即可变。
CIDR----无类域间路由
思路:取相同,去不同。 超网-----汇总后的掩码小于主类掩码 子网汇总-汇总后的掩码大于主类掩码
DHCP服务
应用层 | DHCP-Discover 发现报文 |
---|---|
传输层 | 基于UDP进行封装。源端口-68;目标端口-67。 |
网络层 | 基于IP协议进行封装。源IP-0.0.0.0;目IP-255.255.255.255 |
数据链路层 | 基于以太网封装。源MAC:00:16:D3:23:68:8A;目MAC:FFFF-FFFF-FFFF |
交换机转发原理
交换机在接收到电信号后,会将电信号转换为二进制,之后截取数据帧。查看数据帧中的源MAC地址,将该数据包进入的接口与该MAC地址形成对应关系记录在MAC地址表(表项老化时间为300S)。
之后,查看数据帧中的目标MAC地址,基于目标MAC地址查询本地MAC地址表,如果表中存在记录,则按照记录进行指导转发;若表中没有记录,则将进行洪泛(交换机将数据除了进入的接口外的所有接口发送一遍)。
交换机洪泛的情况
1、遇到广播帧,MAC地址为全F的
2、遇到组播帧
3、遇到未知的单播帧
应用层 | DHCP-Offer(网络参数) |
---|---|
传输层 | 基于UDP封装。源端口-67;目标端口-68。 |
网络层 | IP协议;源IP:68.85.2.1;目IP:68.85.2.101 |
数据链路层 | 以太网协议;源MAC:00:22:6B:45:1F:1B;目MAC:00:16:D3:23:68:8A |
应用层 | DHCP-Request----用来正式请求IP地址/通告其余DHCP服务器 |
---|---|
传输层 | 基于UDP进行封装。源端口-68;目标端口-67。 |
网络层 | 基于IP协议进行封装。源IP-0.0.0.0;目IP-255.255.255.255 |
数据链路层 | 基于以太网封装。源MAC-00:16:D3:23:68:8A;目MAC-FFFF-FFFF-FFFF |
应用层 | DHCP-ACK |
---|---|
传输层 | 基于UDP封装。源端口-67;目标端口-68。 |
网络层 | IP协议;源IP:68.85.2.1;目IP:68.85.2.101 |
数据链路层 | 以太网协议;源MAC:00:22:6B:45:1F:1B;目MAC:00:16:D3:23:68:8A |
发送三次免费ARP,查看网络中有无冲突IP地址
DNS服务--域名解析服务
用域名找到IP地址
http://www.baidu.com:80/news/index.html---->URL资源定位符
协议 主机 文件及路径
DNS基于UDP/TCP的53号端口传输数据。
UDP规定,报文最大长度为512字节,当DNS查询报文超过512字节时,协议内的TC标记位会置为1,则使用TCP传输数据。
DNS查询过程---递归查询/迭代查询
DNS查询方式:
递归查询---UDP
迭代查询---TCP
应用层 | DNS请求报文 |
---|---|
传输层 | UDP;源端口:随机;目端口:53 |
网络层 | IP协议;源IP:68.85.2.101;目IP:68.87.71.226 |
数据链路层 | 以太网封装;源MAC:00:16:D3:23:68:8A;目MAC:00:22:6B:45:1F:1B |
网络层 | ARP协议;源IP:68.85.2.101;目IP:68.85.2.1 |
---|---|
数据链路层 | 以太网封装;源MAC:00:16:D3:23:68:8A;目MAC:FFFF-FFFF-FFFF |
路由器的转发原理:路由器基于数据包中的目的IP地址查询本地全局路由表;若表中有记录,则无条件按记录转发;若没有记录,则丢弃该数据包。
192.168.1.0/24 --->路由 目标IP:192.168.1.1
11000000.10101000.00000001.00000001
11111111.11111111.11111111.00000000
11000000.10101000.00000001.00000000--->192.168.1.0
获取未知网段的路由信息
1、直连路由
2、静态路由
3、动态路由
直连路由的生成条件
1、接口双UP
物理层UP--->链路正常
协议层UP--->具备通讯协议
2、接口必须配置合法的IP地址
网络以字节为单位
以太网:
1500
65~65535
HTTP协议---超文本传输协议
是基于TCP协议进行工作。端口号80。
TCP----传输控制协议
是一种面向连接的可靠传输协议 可靠性
-
确认----每收到一个报文,就需要进行一次信息确认。
-
重传----超时重传,当一个数据段中的某一个数据报文丢失,会要求
-
排序----一个数据段被分为多个数据包,从不同路径进行传输,最终达到目的地的顺序被打乱,需要重新排组。-------依据序列号字段完成。
-
流控---滑动窗口---通过调节窗口大小(无需等待确认就可以连续发送的数据的最大量)来对流量的流速进行控制。
MTU
PMTU
面向连接
-
三次握手
-
四次握手
应用层 | HTTP请求报文---请求方式:GET |
---|---|
传输层 | TCP;源端口;随机端口;目端口:80 |
网络层 | IP协议;源IP:PC;目的IP: Web服务器 |
数据链路层 | 以太网协议;源MAC:连接服务器的接口;目MAC:服务器MAC |
应用层 | HTTP应答报文----应答状态码:200 |
---|---|
传输层 | TCP;源端口:80;目端口:请求报文中的源端口 |
网络层 | IP协议;源IP: Web 服务器;目IP:PC |
数据链路层 | 以太网协议;源MAC:PC的网关接口;目MAC:PC |
1XX 100 请求超时
2XX 200
3XX 301 重定向
4XX 403/404 页面无响应
5XX 服务器错误
静态路由
优点
1、安全
2、选路
3、资源占用
缺点
1、配置量大
2、维护困难
静态路由基本配置
方法一:ip route-static 192.168.2.0 24 12.0.0.2 下一跳
问题:需要递归来查找路由的出接口,消耗设备资源。
静态路由的优先级:60 ; 开销值:0
方法二:ip route-static 192.168.2.0 24 GigabitEthernet 0/0/1
原理:R1ping目的IP地址时,出接口,源IP地址为自己的IP地址,R1的下一跳为自己,就直接申请目的的IP地址,MAC地址;当R2接收传来的数据时,发现MAC地址和IP地址不是自己的,就会丢弃掉。
解决方式:静态ARP
[r2-GigabitEthernet0/0/0]arp-proxy enable ---开启ARP代理
ARP代理思路:当接收到ARP数据包后,路由器会查看本地路由表,若本地路由表中存在目的IP地址(网络可达),此时该路由器会冒充IP地址来回答该ARP报文。
[r1]arp static 12.0.0.1 00e0-fc07-533c
路由器发送ARP的方式
-
以目的IP为ARP请求内容发送。
-
以下一跳IP地址为ARP请求内容发送。
方法三:ip route-static 192.168.2.0 24 GigabitEthernet 0/0/1 12.0.0.2
方法四:ip route-static 192.168.2.0 24 23.0.0.3
下两跳-->多跳
需要提前铺垫好所有在递归查找过程中需要使用到的路由信息。
WWW静态路由扩展配置
负载均衡---等价路由
-
目的相同,路由来源相同,开销相同,且下一跳不同。
手工汇总
减少路由表条目,加速设备查找路由速度。
缺省路由
[r3]ip route-static 0.0.0.0 0 LoopBack 0
路由黑洞
造成流量有去无回的状况。丢弃流量的路由器被称为黑洞路由器。
空接口防环
[r1]ip route-static 172.16.0.0 22 NULL 0
在黑洞路由器上编写一条指向空接口的汇总路由
浮动静态路由
带宽不一样,修改优先级,静态路由默认优先级60,更改带宽,所以需要改大一点。
代理ARP场景
静态路由与BFD联动
BFD---双向转发检测机制
是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通情况。
[r1]bfd ----启动BFD协议
[r1]bfd aa bind peer-ip 10.1.12.1 ---创建BFD会话,会话名称为aa,对端IP为10.1.12.1
[r1-bfd-session-aa]discriminator local 10 本地标识符
[r1-bfd-session-aa]discriminator remote 20 对端标识符
[r1-bfd-session-aa]commit
[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa ---将静态路由与BFD会话进行联动
两端都需要配置
display bfd session all----查看bfd会话
缺省情况下,BFD会话每隔1000毫秒发送一次报文,当连续三次报文均无响应后,则BFD会话状态断开。与该BFD会话建立连接的协议会失效。
网络类型及数据链路层协议
网络类型是根据数据链路层所运行的协议及规则来划分的。
网络类型的分类
-----根据实际协议判断网络类型
-
P2P---Point to Point---点到点网络 一条链路上只有两个节点
-
MA---Multi-access Network---多点接入网络
-
BMA----Broadcast Multi-access Network----广播多点接入网络
-
NBMA----Non Broadcast Multi Network----非广播多点接入网络
广播为特定组播,只有三种网络类型,以太网协议为BMA网络类型。
-
数据链路层协议
MA网络
以太网协议---BMA 二层协议
-
特点---需要使用MAC地址对设备进行区分和标识。
BMA网络的构建方式: 使用以太网线缆连接设备的以太网接口,形成的网络就是以太网网络,所运行的二层协议就是以太网协议 以太网核心技术----频分技术
P2P网络
-
不需要MAC地址进行通讯。
-
P2P网络定义----当一个网络中只能存在两台设备,并目不允许第=台设备加入,这样的网络被称为P2P网络。
-
点到电网络的搭建:使用串口线缆连接设备的串线接口,形成的网络。
串线的标准
-
E1标准----传输速率为2.048Mbps---欧美标准
-
T11标准----传输速率为1.544Mbps----北美标准
HDLC---高级数据链路控制协议
-
满足工业标准的标准HDLC协议
ISO根据SDLC(面向比特的同步数据链路控制协议)改进而来的HDLC协议。 同步---以帧为单位来传输数据 异步---以字节为单位传输数据
-
非标准的HDLC协议----nonstandard HDLC
串线中不需要MAC地址,IP地址;串线的MTU为1500
上述协议相互不兼容,思科设备默认采用的串线协议时HDLC协议。
点到点设备,用HDLC协议时,不需要IP地址,但需要IP来满足上层应用通讯
HDLC网络搭建
华为设备串口网络默认使用协议为PPP,而非HDLC。
[r1-Serial4/0/0]link-protocol hdlc ----在接口修改链路协议类型为HDLC Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N] :y
需要在对端设备也修改为同协议,串口线缆具备10秒钟的死亡时间。
HDLC接口地址借用
[r1-Serial4/0/0]ip address unnumbered interface LoopBack 0 ----从环回0接口借用IP地址
[r1]ip route-static 12.0.0.2 32 Serial 4/0/0 ---配置通往对端接口的路由信息。
在串线中无需配置接口IP地址,只需要从环回接口借用一个IP即可,但需要在对端设备上补充路由信息。且环回接口的IP地址配置为掩码32位,对端的路由信息编写主机路由。
PPP---点到点协议
优点
-
兼容性
-
可移植性
-
速率快,因为PPP协议没有重传机制
PPP会话的建立
-
链路建立阶段----LCP
-
认证阶段---PPP认证(AAA)
-
网络层协议协商阶段---NCP协商
PPP链路链路过程
-
Dead阶段----物理层不可用阶段
-
Establish阶段----会进行LCP参数协商
-
Authenticate----认证阶段
-
该阶段不是必选项。
-
-
Network----NCP参数协商
-
Terminate阶段----该阶段在进行资源释放,若所有资源均被完全释放,则回到dead阶段。
PPP数据帧结构
0xc021 LCP协议----链路控制协议----完成PPP会话建立第一阶段的协商
NCP协议----网络控制协议----一系列协议的总称,完成PPP会话建立第三阶段时针对网络层协议进行协商。若网络层使用IP协议,则对应使用NCP协议中的IPCP(互联网协议控制协议)协议协商
LCP协议协商:物理层,数据链路层。
NCP协议协商:网络层
LCP协议报文类型
-
链路配置报文
-
链路终止报文
-
Terminater-Request---------链路终止请求
-
Terminater-ack----------------链路终止确认
-
-
链路维护报文-----检测双向链路下的自环问题
-
Echo-Request---回波请求
-
Echo-Reply-------回波应答
-
链路建立阶段---LCP建立
1、MRU值----PPP数据帧所允许携带的最大数据单元,单位字节,默认值1500
仅携带数据
2、认证-----协商PPP会话建立第二阶段是否需要进行认证,以及使用何种方式认证。
3、魔术字-----用于检测链路中是否存在环路。
随机生成的
协商过程
A设备发送链路配置请求报文给对端,若没有收到对端回复的任何一个链路配置报文,则每隔3秒重传一次链路配置请求报文,如果连续10次发送链路配置请求,仍然没有收到回复报文,则认为对端不可用,停止发送报文。
如果对端不认可某些参数的数值,则回复的是NAK报文,该报文中将携带不认可的参数以及该参数的数值范围。本端收到该报文后,根据内容重新发送链路配置请求。
如果对端不认可某种参数,则回复Reject报文,该报文中携带不认可的参数。本端收到该报文后,删除该参数,并重新发送链路配置请求。
认证阶段
PPP会话的建立是一次性会话,会话建立完成后,后续的修改不会影响到会话本身。
PPP本身不具备认证等功能,是通过调用AAA框架来完成的。
该认证可以是单向或者双向的--------一般实际应用汇总采用单向认证。
-
PAP-----密码认证协议
P2P是将需要认证的用户名和密码以明文的形式携带在数据报文中,发送给对端进行认证。
被认证方:R1
[r1-Serial4/0/0]ppp pap local-user huawei password cipher 123456 ----配置用户名和密码信息
认证方:R2
[r2-aaa]local-user huawei password cipher 123456 ----创建用户名和密码信息
[r2-aaa]local-user huawei service-type ppp ----修改服务类型
[r2-Serial4/0/0]ppp authentication-mode pap ----修改接口的认证方式
-
CHAP----挑战握手协议
认证双方通过对比摘要值的方式进行认证。
认证过程:
1、认证方先发送挑战报文,里面包含了认证方的用户名和一个随机值
2、被认证方收到该报文后,需要根据用户名信息查找对应密码,然后将密码信息与随机值一起做HASH(哈希)运算得到摘要值,然后将该摘要值+用户名发送给认证方
3、认证方收到后,根据用户名信息查找本地密码信息,使用相同HASH算法进行计算,得出摘要值,将两个摘要值进行对比,若相同,则回复ACK报文;若不同,则回复NAK报文。
HASH----散列函数-----将任意长度的输入转换为固定长度的输出。
特点:
1、相同输入,相同输出。
2、不可逆性。
3、雪崩效应或者蝴蝶效应
典型的HASH算法--->MD5(将任意长度转换为128位输出)
配置
认证方
[r1-aaa]local-user admin password cipher 654321 [r1-aaa]local-user admin service-type ppp
[r1-Serial4/0/0]ppp authentication-mode chap
被认证方
[r2-Serial4/0/0]ppp chap user admin [r2-Serial4/0/0]ppp chap password cipher 654321
一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并且正确配置用户名和密码信息。
网络层协议协商阶段---NCP协商
如果网络层使用的是IP协议,则需要使用IPCP协议进行协商。
-
协商内容
-
IP报文的压缩方式
-
IP地址----1,协商IP地址是否为可以IP地址。
2,该IP地址是否与本地冲突。
-
-
协商过程
-
静态地址协商
-
如果IP地址是一个合法的单播地址,而且和本地配置的IP地址不同,则认为对端可以使用该地址。
-
一旦认可了对方的IP地址,则将会自动学习到达该地址的主机路由。
-
-
动态地址协商
-
动态获取方式:
配置方
[r2-Serial4/0/0]remote address 1.1.1.1
获取方
[r1-Serial4/0/0]ip address ppp-negotiate
第三章,GRE和MGRE
VPN---虚拟专用网络:是指依靠ISP或者其他NSP在公用网络基础设施之上构建的专用的安全数据通信网络,只不过这个专线网络是逻辑上的而非物理的。
-
虚拟---使用公共网络资源建立自己的私有网络
-
专用---用户按需构建
-
核心技术----隧道技术
GRE---通用路由封装
隧道技术----在隧道的两端,通过封装及解封装技术在公网上建立一条数据通道,使用这条数据通道进行数据传输。
GRE----是一种隧道封装技术,是一种标准的三层隧道技术,是一种点对点的隧道。
希望的流量走向
| SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
真实的流量走向
| SIP:12.0.0.1 | DIP:23.0.0.3 | 数据 |
GRE粘合后的数据:
| SIP:12.0.0.1 | DIP:23.0.0.3 | GRE DIP:192.168.2.1 | 数据 |
配置
[r1]interface Tunnel 0/0/0 ----创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre ----定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1 ----定义封装内容
[r1-Tunnel0/0/0]destination 23.0.0.3
[r1]ip route-static 192.168.2.0 24 192.168.3.2 ---补充路由信息
两端都需配置
GRE两端配置完成后,必须存在指向隧道的路由信息,否则数据无法被GRE进行封装,也就无法正常通讯。
GRE封装和解封装过程
-
设备从连接私网的接口接收到报文后,检查报文头部中目的IP地址字段,在路由表中查找出接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理。
-
隧道模块接收报文后,首先根据乘客协议的类型和当前GRE隧道的配置生成校验和参数,对报文进行GRE封装,即添加GRE头部信息。
-
然后,设备给报文添加传输协议报文头部,即IP头部。该IP报文头部的源地址就是隧道的源地址,目的地址就是隧道的目的地址。
-
最后,设备根据新添加的IP报文头部的目的地址,在路由表中查找相应的出接口,并发送报文,之后,封装后的报文将在公网环境下进行数据传输。
-
接收端设备从连接公网的接口收到报文后,首先会分析IP头部信息,如果发现协议类型字段值为47,则表示该上层协议为GRE协议,于是将报文交给GRE模块进行处理。
-
GRE模块去掉IP报文头部和GRE报文头部,并根据GRE报文头部中的协议类型字段,确定将该报文交于那个乘客协议进行处理。
-
Keepalive检测
用于检测隧道对端是否可达。
-
如果对端不可达,隧道连接会及时关闭,避免形成数据空洞。
-
开启keepalive检测后,GRE隧道会定期向对端发送keepalive探测报文。
[r1-Tunnel0/0/0]keepalive ---开启keepalive检测功能
[r1-Tunnel0/0/0]keepalive period 5 retry-times 3
period--->代表发送周期
retry-times---->探测报文重传次数
如果在隧道一端开启了keepalive检测功能,无论对端是否配置keepalive,对端都会回复接收到的keepalive探测报文,即会向源发送一个回应报文。
MGRE---多点通用路由封装
MGRE这个逻辑拓扑是网络中存在多个节点,但是本身在发送数据时,还是依照点到点的数据发送,并不存在广播和组播行为,所以,这种网络结构可以近似的看做是NBMA网络。
NHRP----下一跳解析协议
在私网中选择一个出口物理IP不会发生改变的设备作为NHRP的中心节点(NHS)。这样,剩下的分支都可以知道中心节点的隧道IP地址和物理IP地址。
然后,NHRP要求所有分支都需要将自己的物理接口IP地址和虚拟接口IP地址的映射关系发送给NHS。此时NHS会将所有分支的地址映射关系记载到动态的NHRP表中。当需要发送信息时,查看NHRP表进行数据封装。
Hub-Spoke架构
-
Hub就是服务端---中心节点 需要有固定的IP地址
-
Spoke客户端-------分支节点
NHRP配置
HUB配置
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ip address 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---修改接口封装协议为多点GRE
[r1-Tunnel0/0/0]source 15.0.0.1 ---定义封装源
[r1-Tunnel0/0/0]nhrp network-id ? ----可选,若配置则需要将所有设备均修改为相同;默认值为0 INTEGER<1-4294967295> Nhrp network id
Spoke配置
[r2]interface Tunnel 0/0/0
[r2-Tunnel0/0/0]ip address 192.168.5.2 24 [r2-Tunnel0/0/0]tunnel-protocol gre p2mp [r2-Tunnel0/0/0]source GigabitEthernet 0/0/0
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register ---分支向中心节点注册
中心的隧道IP 中心的物理IP
最后需要将各自的流量引入到隧道接口,使用静态路由方式进行配置。
DSVPN---动态智能VPN技术
mgre+nhrp
Mgre隧道--->静态隧道(spoke到hub的)、动态隧道(spoke-spoke)
NHRP映射表
-
静态表项
-
由网络管理员手工配置
-
-
动态表项
-
由NHRP协议动态生成
-
hub节点通过nhrp注册报文提取到各个spoke的Tunnel地址和公网地址生成NHRP动态映射表
-
各个spoke通过nhrp解析报文提取对端spoke的Tunnel地址和公网地址生成NHRP映射表
-
老化时间---7200S
-
NHRP映射表的建立过程
建立spoke和hub之间的mgre隧道
-
spoke向hub注册请求
-
spoke将定时向hub发送NHRP注册请求报文,该报文中携带了spoke节点的tunnel地址和公网地址
-
-
hub向spoke注册应答
-
hub从NHRP注册请求报文中提取spoke节点的tunnel地址和公网地址,并生成NHRP映射表,进而建立hub与spoke之间的隧道。
-
并发送注册应答报文给spoke节点。
-
分支之间的路由学习
-
分支之间相互学习路由信息---非shortcut方式
-
分支的路由汇聚到总部----------shortcut方式
建立spoke与spoke之间的mgre隧道
根据分支之间的路由学习方式不同,NHRP映射表的生成过程也不同,故,分支之间的MGRE隧道建立方式不同。
-
非shortcut方式
-
源spoke可以学习到目的spoke的tunnel地址,因此,源spoke可以直接根据目的spoke的tunnel地址来查找目的spoke的公网地址,从而生成目的spoke的映射关系。
-
-
shortcut方式
-
所有spoke的路由下一跳均为hub的tunnel地址,源spoke无法学习到目的spoke的tunnel地址。因此,源spoke只能根据报文的目的地址来查找spoke的公网地址,会生成目的spoke的子网地址和公网地址的NHRP映射关系。
-
MGRE的非shortcut方式建立
MGRE的shortcut方式建立
当HUB接收到目的IP不是自己是其他分支,可以使用重定向服务,告诉R2目地IP,的隧道地址,然后R2申请物理的地址
HUB
[r1-Tunnel0/0/0]nhrp redirect ----开启重定向功能。开启该功能后,会给源分支发送NHRP重定向报文,要求源分支向目的分支请求物理地址。从而构造NHRP映射关系。
spoke
[r2-Tunnel0/0/0]nhrp shortcut ----使能shortcut功能;如果为使能该功能,则分支节点在接收到重定向报文后,会忽略其内容。
MGRE环境下的RIP网络
<span style="background-color:#f8f8f8"><span style="color:#333333"> 因为RIP是以组播发送应答报文,而MGRE环境下是P2P通讯,实际上发送的是单播报文。因为是单播行为,分支会发送给中心;而中心不会发送报文,因为中心的NHRP映射表存在多种关系,不知道该给谁发送报文数据。
这就会导致所有分支均使用单播的方式给中心发送信息,中心学习到所有路由信息,但分支一条路由都学习不到。
中心:
[r1-Tunnel0/0/0]nhrp entry multicast dynamic ---开启伪广播功能
通过给所有分支分别发送一次单播数据包,以达到广播行为。
分支在中心开启为广播功能后,只能获取到中心的路由信息,但是无法获取到分支之间的路由信息。因为华为设备默认开启RIP的水平分割机制,导致中心不会从隧道接口将学来的分支路由发送给其他分支。
方法一:
[r1-Tunnel0/0/0]undo rip split-horizon ---关闭水平分割机制---非shortcut
方法二:
[r1-Tunnel0/0/0]rip summary-address 192.168.0.0 255.255.248.0 ---汇总方式解决--shortcut</span></span>
串型链路为一次性回话,需要重新打开一次接口,才可以使得命令生效。
第四章,OSPF
OSPF基础
动态路由的评判标准
-
选路
-
占用资源
-
收敛速度
OSPF协议---开放式最短路径优先协议
-
适用范围---IGP
-
算法类型---链路状态型协议
-
使用算法---SPF算法---最短路径优先算法
<span style="background-color:#f8f8f8"><span style="color:#333333">OSPFv2与RIPv2对比
相同点:
1、都是无类别路由协议
2、均采用组播方式更新数据
3、均支持等开销负载均衡
不同点:
RIPv2仅适用于小型网络;OSPFv2可以应用在大中型网络中。</span></span>
OSPF区域划分---结构化部署
OSPF域----将一系列连续的OSPF路由器组成的网络称为OSPF域。
如果一台路由器的多个接口分别接入了不同的区域,则它将为每个区域分别维护一套LSDB。
多区域的设计限制了TOPO信息的洪泛,有效的将拓扑变化的影响控制在区域内部。
要求:
-
OSPF要求域中所有的非骨干区域都必须与Area 0相连。
-
骨干区域不能被分割。
OSPF区域结构部署规则的必要性
假定没有“所有非骨干区域都必须与骨干区域相连”规则
ABR设备(区域边界路由器)
-
至少连接两个以上的区域
-
连接的区域中至少有一个是区域0(骨干区域)
-
在骨干区域中至少有一个活跃的邻居
作用:将A区域的拓扑转换成路由后,发送到B区域中。-----传递域间路由信息。
非骨干之间不允许直接相互发布区域间路由信息。
假定没有"骨干区域不能被分割"规则
OSPF规定:从非骨干区域收到的路由信息,ABR设备能接收该路由但不会使用这条路由信息(OSPF的区域水平分割原则)。----从一个区域学习到的路由信息,不能再传递回该区域。
总结
OSPF规定:
1、伪ABR设备---不允许转发区域间路由信息
2、真实ABR设备
能够将自己直连的非骨干区域的区域内路由信息传递给骨干区域
能够将自己直连的骨干区域的的区域内路由信息传递给非骨干区域
能够将自己从骨干区域学习到的域间路由信息传递给非骨干区域
OSPF路由器角色
-
内部路由器---IR
-
所有接口都属于同一个OSPF区域
-
-
区域边界路由器---ABR
-
骨干路由器---BR
-
接入Area 0的路由器
-
-
AS边界路由器---ASBR
-
工作在OSPF自治系统边界的路由器
-
负责将域外的路由信息引入到本域内。---默认不进行路由引入
-
并不是同时运行了多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由重发布到OSPF,或者是执行了路由重分发操作的路由器。
-
undo summary----关闭RIPV2的自动汇总
OSPF区域之间的路由称为ABR路由
没有和骨干区域,相连就为远离骨干的非骨干区域
ABR设备判断要求:
-
连接多个区域
-
在多个连接区域中至少需要一个区域0(骨干区域)
-
有活跃的邻居
OSPF数据包
-
hello包
-
用来发现、建立OSPF邻居关系,周期保活。224.0.0.5;10S;40S。
-
RID----全域唯一
-
配置方式
-
手工配置:满足32位二进制,且点分十进制表示,全域唯一。
-
自动配置:默认优选最大环回IP地址,没有环回则选择最大物理IP地址。
-
-
在启动OSPF进程前,必须有接口IP地址。若有IP地址,则在第一次启动OSPF进程时,会选取第一个配置的IP地址作为RID值。 在思科设备中,若没有IP地址,则OSPF启动失败。 在华为设备中,若没有IP地址,则OSPF启动后,RID为0.0.0.0 华为标准:状态最先UP的接口的IP地址作为RID RFC标准: 1、取loopback接口IP地址中最大的作为RID 2、取物理接口IP地址最大的作为RID。
-
-
-
DBD包
-
数据库描述报文
-
报文中携带的是路径信息摘要。
-
避免重复更新。
-
-
LSR包
-
链路状态请求报文
-
请求获取未知的链路信息
-
-
LSU包-------LSA----拓扑信息
-
链路状态更新报文
-
携带真实的LSA信息的数据包
-
-
LSAck包
-
链路状态确认报文
-
OSPF状态机
-
down---关闭----一旦启动OSPF进入下一个状态,并发送hello报文
-
init---初始化状态---收到的hello报文中存在自身的RID值,则进入下一个状态
-
2-way---双向通讯----邻居关系建立的标志。---稳定态。
条件匹配:匹配成功进入下一个阶段,匹配失败则停留在2-way状态,保持邻居关系,仅使用hello报文保活。
-
exstart---预启动---使用未携带LSA摘要信息的DBD报文进行主从关系选举,选举规则是RID值越大越优。
-
exchange---准交换----使用携带LSA摘要信息的DBD报文进行链路数据库共享。
-
loading---加载状态---邻居之间使用LSR/LSU/LSAck报文来获取完整的LSA信息。
-
full----转发状态----拓扑交换完成后进入该状态,标志着邻接关系的建立。---稳定态。
条件匹配
选举规则:
-
比较接口优先级,0-255;默认值为1。越大越优。
-
比较RID值,越大越优。
非抢占模式----一旦选举成功,不因为新加入的设备而重新选举。
选举过程:
1、DR、BDR的选举是通过hello报文来实现,选举过程发生在2-way状态之后。
2、路由器将自己接口的DR优先级填写到hello报文中。
3、华为DR修改方式:在接口视图下,ospf dr-priority
4、DR优先级为0的接口不具备DR和BDR的选举资格。
5、当接口激活OSPF后,首先检查接口连接网络上是否存在DR,如果存在,则接收已存在的DR设备(因为非抢占性),否则拥有最高DR优先级的设备接口将成为DR,当优先级相同,则拥由最大RID的路由器接口将成为DR。
6、BDR的选举过程与DR相同,但是在DR选举之后进行。
Attempt:尝试状态
在NBMA网络类型下,如果需要启动OSPF协议,需要使用peer命令指定邻居IP地址,否则不会发送hello报文,配置该命令后,邻居状态会进入到init。
OSPF工作过程
-
启动配置后,OSPF将向本地所有运行OSPF协议的接口以组播224.0.0.5的方式发送hello报文,hello报文中RID值和接口优先级;此时路由器的状态进入到init。
-
当路由器收到的hello报文中存在本地的RID值(hello包中的邻居字段),会建立邻居关系----生成邻居表。
-
进入2-way状态,在2-way状态后执行条件匹配操作,若选举成功,则进入邻接关系建立过程;若选举失败,则停留在2-way状态,仅使用hello报文进行保活。
-
邻接关系建立
-
使用未携带摘要信息的DBD报文进行主从关系选举,RID值大的为主。主设备会先进入到下一个状态。
-
之后,从设备先发送携带摘要信息的DBD报文进行LSA目录信息共享。
-
主设备通过对比接收到的DBD报文中的摘要信息与自己本地的LSDB数据库信息,从而查找未知LSA。
-
通过发送LSR报文/LSU/LSAck报文获取完整的未知LSA信息。
-
当所有未知LSA信息均获取成功后,填充完整本地的LSDB。
-
-
当网络中所有设备获取到相同且完整的LSDB后,每台设备基于LSDB根据SPF算法生成有向图和最短路径树,之后根据计算结果获知网络中所有的未知网段的最短路径,然后将其添加到本地OSPF路由表中。
-
-
根据本地所有路由表信息,从而选择最优路由加载如全局路由表。
-
此时,网络收敛完成,仅进行Hello包周期保活。且每30min进行一次周期链路状态刷新。
OSPF基本配置
1、启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1
2、创建区域
[r1-ospf-1]area 0
3、宣告
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.255.255.255---范围宣告
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 ---精准宣告
OSPF报文格式
OSPF报文头部
-
固定长度---24字节
-
路由器ID----路由器的OSPF协议中的RID值。
-
区域ID----发出该报文的接口所属于的区域的ID值。
-
认证类型
-
不认证
-
明文(简单)认证
-
MD5认证
-
-
认证数据
-
用于报文认证的内容
-
如果认证类型为不认证,则该字段全用0填充。
-
Hello包
-
网络掩码(Network Mask)
-
该字段填充的是发送该hello报文的接口的掩码信息。
-
OSPF邻居关系建立过程中需要比对掩码信息,从而验证对端是否路由可达。---华为私有。
-
如果一方在接口上收到的hello报文中"网络掩码"字段与本接口不同,则忽略该hello报文,此时邻居关系无法建立。
-
-
如果两台OSPF路由器通过MA网络直连,则需要验证;若通过点到点网络则不需要验证该参数。
-
-
Hello间隔
-
接口周期性发送hello报文的时间间隔---秒。
-
两台设备需要保证Hello时间间隔相同,否则邻居无法正常建立。
-
-
可选项(option)
-
该字段具有8个标记位,每一个标记置为1,则代表OSPF实现某种特性。
-
特殊区域标记。
-
-
路由器失效时间
-
指的是邻居路由器被视为无效之前,需等待收到对方hello报文的时间。---秒
-
两台设备的该参数若不同,则邻居关系无法正常建立。
-
所有的224.0.0.X格式的组播地址被称为本地链路组播,目标IP地址是本地链路组播的地址。且TTL值为1。所有的本地链路组播都存在与其对应的组播MAC地址,01-00-5e-0后23位为组播IP地址的后23位。
DBD包
-
使用未携带数据的DBD进行主从关系选举
-
使用携带数据的DBD进行LSA摘要信息共享
-
使用未携带数据的DBD进行隐形确认机制
-
接口最大传输单元----MTU
-
默认情况下,该字段值为0
-
华为默认不进行MTU值检测,可以开启该功能
-
[r1-GigabitEthernet0/0/0]ospf mtu-enable ---开启MTU检测机制,两端都需要开启。
-
如果双方都开启该功能,则进行MTU检测,若两边相同,则检测通过;若两边不同,则状态卡在exstart状态。
-
-
-
I----主从关系选举
-
M----代表后续还存在DD报文
-
MS----代表是否为主设备
-
DD序列号
-
DD报文的序列号,在DD报文交互过程汇总,序列号逐次加一,用于确保DD报文传输的有序和可靠性。
-
DD序列号必须由Master路由器来决定,而从路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。----隐性确认机制。
-
DD报文的交互过程会一直持续,直到双方的LSA摘要信息全部发送完成。---本地的LSDB接收完成。
-
LSR包
链路状态类型、链路状态ID、通告路由器----LSA三元组,通过这三个参数可以唯一的标识出一条LSA信息。
LSU包
LSAck包
显性确认机制。
OSPF的接口网络类型
所谓的OSPF接口网络类型,实际上是指OSPF的接口在某种网络类型下的一种工作方式。
网络类型 | OSPF接口的网络类型(工作方式) |
---|---|
BMA | Broadcast;可以建立多个邻居关系;需要进行DR和BDR的选举;hello时间10S;dead时间40S |
P2P | P2P,只能建立一个邻居。不需要进行DR和BDR的选举;hello时间10S;dead时间40S |
环回接口 | P2P,华为设备定位P2P;该接口实际上没有真实数据的收发,也就意味着不需要进行DR/BDR选举,也不存在邻居关系。hello时间10S;dead时间40S;环回接口默认学习32位主机路由。 |
P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举;hello时间30S;dead时间120S;会学习邻居接口的主机路由。 | |
NBMA | NBMA,可以建立多个邻居关系,需要进行DR和BDR的选举;hello时间30S;dead时间120S;无法自动建立邻居关系。 |
Vlink;以单播形式发送hello报文。不需要进行DR和BDR的选举;hello时间10S;dead时间40S |
广播型多路访问类型---BMA
[r3]display ospf interface GigabitEthernet 0/0/0 ---查看OSPF接口网络类型
OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU报文以及LSAck报文。以单播的形式发送DD报文和LSR报文。
点到点类型(p2p)
OSPF在网络类型为P2P的接口上以组播的方式发送所有OSPF数据报文。
环回接口(虚拟接口)
华为特殊将环回接口的开销值定义为0。
Type中的参数是由P2P进行填充,华为没有为该字段定位内容,而cisco则定义了一个loopback类型作为环回接口的类型。
所有通过OSPF学习到的环回接口的路由掩码信息都是32位。也就是每台设备学习到的路由条目是主机路由。该方式可以在保证路由信息的精准性的前提下,避免环路或者路由黑洞问题。
[r2-LoopBack0]ospf network-type broadcast ---修改接口网络类型;
OSPF的邻居之间均需要修改。
在DR和BDR选举时,会启动一个waiting计时器,该计时器的时间与dead时间相同,当计时器时间超时后,该接口会认为自己就是DR设备。----且设备会进入exstart状态。
华为将tunnel接口的传输速率定为64Kbps。
在Hub-Spoke架构中,运行MGRE时,使用OSPF协议学习路由信息,需要将隧道接口的OSPF网络类型修改为BMA,全网均修改。且手工干涉DR选举,将DR选举在Hub节点。
点到多点类型(P2MP)
只能由网络管理员手工修改设置。
在P2MP网络中,接口通常以组播的方式发送hello报文,以单播的方式发送其余报文。
非广播型多路访问类型(NBMA)
在NBMA网络中,邻居双方均需要手工指定自己的邻居,从而才可以发送出OSPF报文信息。在该接口网络类型下,所有的OSPF报文以单播的形式发送数据。
OSPF的不规则区域划分
-
所有非骨干都必须与骨干直接相连
-
骨干区域不能被分割
不规则区域主要有两种情况:
-
远离骨干的非骨干区域
-
不连续骨干区域
解决不规则区域的最佳方式----重新规划OSPF配置和内容,使得整个OSPF域满足区域划分的规则。
解决方案
使用tunnel隧道
使用该方式解决不规则区域的问题。
-
可能产生选路不佳。
-
可能造成重复更新。
-
因为存在虚拟链路,R2和R3之间也需要建立邻居关系。导致他们之间维护的周期性数据将穿越中间区域,导致中间区域的资源消耗增加。
虚链路---Vlink
专门为了解决OSPF不规则区域所诞生的技术。
思路:让真实的ABR设备给伪ABR设备进行一次担保,给予伪ABR设备传递路由的功能,或者说给予一个ABR设备的权限。
配置:
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 ----建立Vlink邻居,该参数为邻居的RID值
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
配置位置在于设备需要穿越的区域。虚链路的只能穿越一个区域。---原因在与配置的时候使用的是RID值,而RID值只能在同一个区域找到,设备无法跨越区域找到RID所对应的设备。
[r2]display ospf vlink ---查看vlink邻居关系
Vlink被视为是骨干区域的一段延伸(Vlink永远属于Area 0)。
缺陷:
-
只能穿越一个区域
-
Vlink之间需要建立邻居,故会消耗穿越区域中的链路资源。
实际上,Vlink更多应用在一些修复次优路径或者骨干区域不健壮问题上。
骨干链路单点故障问题
Vlink环路问题
场景一
Vlink选择不恰当,可能会引发环路问题。----解决方式,在物理链路相连的两台设备上建立vlink。
场景二
解决思路:OSPF规定,Vlink所在的费骨干区域,不能传递汇总路由。也就是说,ABR设备不能向配置了vlink链路的区域传递汇总路由。
多进程双向重发布
配置
[r3-ospf-1]import-route ospf 2
[r3-ospf-2]import-route ospf 1
此时R3被称为ASBR,因为其运行在不同的网络中,且执行了重发布操作。
重发布就是在运行了不同协议或不同进程的边界设备上,将一种协议按照另一种协议的规则发布出去。
重发布操作在引入路由信息时,会清除掉该路由信息原本的度量值,但是在引入时,该参数不能没有,故会赋予路由信息一个种子度量值。
OSPF对于域外路由信息的标识为O_ASE;优先级为150。