「VLAN」- 路由、不同 VLAN 网络互通

问题描述
部署 VLAN 的传统交换机不能实现不同 VLAN 间的二层报文转发,因此必须引入路由技术来实现不同 VLAN 间的通信。
解决方案
多个 VLAN 路由: 1)能够通过二层交换机 + 路由器来实现, 2)也能够通过三层交换机来实现。
其中,通过三层交换机来实现是最常用的解决方案。
原理简述
交换机 + 路由器(双路)
原理: 1)创建逻辑通过路由互联的链路;

配置过程: 1)在 SWA 上,配置 VLAN,每个 VLAN 使用一条独占的物理链路,并连接到路由器的一个接口上。 2)在逻辑上,Host A ⇒ SWA VLAN 2 ⇒ RTA ⇒ SWB VLAN 3 ⇒ Host B 3)当数据包到达 RTA 后,通过 RTA 进行数据路由;
已知问题: 1)扩展性差:三层路由器一般接口数量较少,扩展新较差; —- 解决方案:在 RTA 上,创建子接口,以解决物理接口占用过多的问题。即单臂路由,此时 SWA 连接 RTA 的接口无法使用 Access 模式。 2)单点故障; 3)流量瓶颈;
交换机 + 路由器(单臂)
原理:Dot1q终结子接口子接口也是一种三层的逻辑接口。跟VLANIF接口一样,在子接口上配置Dot1q终结功能和IP地址后,设备也会添加相应的MAC表项并置位三层转发标志位,进而实现VLAN间的三层互通
配置过程: WIP
已知问题: WIP
通过三层交换机(常用)
原理: 1)通过三层交换机的功能(具有路由功能的交换机),创建 VLANIF 并配置地址,形成直连路由; 2)在 VLANIF 上配置网络地址后,设备会在MAC地址表中添加 VLANIF 的MAC地址+VID表项,并且为表项的三层转发标志位置位; 3)当报文的 DMAC 匹配该表项后,会进行三层转发,进而实现VLAN间的三层互通

配置过程: 1)需要使用三层交换机, 2)为每个 VLAN 创建 VLANIF 接口 3)并配置网关地址,此时交换机内部将形成直连路由。 4)当交换机收到不同数据包,在内部直接完成路由。
已知问题: 1)当用户通过远端网管集中管理设备时,需要在设备上通过VLANIF接口配置IP地址作为设备管理IP,通过管理IP来STelnet到设备上进行管理。若设备上其他接口相连的用户加入该VLAN,也可以访问该设备,增加了设备的不安全因素。 —- 解决方案:配置VLAN为管理VLAN(与管理VLAN对应,没有指定为管理VLAN的VLAN称为业务VLAN),不允许Access类型和Dot1q-tunnel类型接口加入该VLAN。由于Access类型和Dot1q-tunnel类型通常用于连接用户,限制这两种类型接口加入管理[……]

READ MORE

「VLAN」- Voice VLAN(语音 VLAN)

问题描述
在网络中经常有多种流量同时传输。因为丢包和时延对通话质量的影响很大,用户对语音的质量比数据或者视频的质量更为敏感,因此在带宽有限的情况下就需要优先保证通话质量;
解决方案
Voice VLAN 是为用户的语音流专门划分的 VLAN;
通过配置 Voice VLAN,交换机可识别语音流,将语音流加入到 Voice VLAN 中传输,并对其进行有针对性的 Qos 保障;
原理简述
典型组网方案
仅占用交换机的一个接口,便可满足语音和数据业务的同时接入:
IP 电话单独接入交换机,这种方式从 IP 电话机的角度看其实另一种场景的子集:
基于 MAC-ADDR 识别

如果 IP 电话发送的是 Untagged 或携带 Tag 0 语音报文,可配置基于 MAC 地址的 Voice VLAN;
交换机接收到 PC 和 IP Phone 发出的报文后会做如下处理: 1)如果 SRC-MAC 匹配交换机上配置的 OUI (源 MAC 地址与配置的 OUI 掩码进行与运算后等于 0UI,则视为匹配) ,则为该报文加上 Voice VLAN 的 Tag,并提升报文优先级; 2)如果不匹配,就会为其加上 PVID 的 VLAN Tag;
基于 VLAN-Tag 识别

如果 IP 电话支持通过协议获取交换机上配置的 Voice VLAN 信息,此时 IP 电话发送的是带 VLAN Tag 的语音报文,可配置基于 VLAN 的 Voice VLAN;
当交换机收到 PC 和 IP Phone 发来的报文后,会判断报文的 VLAN ID 与接口上配置的 Voice VLAN ID 是否相同,若相同则认为此数据流为语音数据流并提升优先级。PC 发出的 Untagged 报文则会被加上 PVID 的 VLAN Tag;
因此基于 VLAN 的 Voice VLAN 需要 IP Phone 可获取交换机上配置的 Voice VLAN 信息。IP Phone 获取交换机上 Voice VLAN 信息的方法有很多种,例如 LLDP 协议 ;[……]

READ MORE

「Networks」- MACVLAN and IPVLAN

MACVLAN
使单张物理网卡具有多个 MAC 地址与多个 IP 地址。
多种模式(mode)
1)Private:各个虚拟接口之间是相互独立的(即使派生自相同的物理网卡),流量无法传递。

2)VEPA:该模式需要交换机支持 VEPA(Virtual Ethernet Port Aggregator,IEEE 802.1Qbg)。VEPA 交换机将“来自物理接口的数据包”回送到“相同的物理接口”,以实现主机的通讯。

3)Bridge:相同物理接口之间的流量,将直接转发,而不通过外部的路由交换;而发往外部的流量,则通过外部路由交换处理。但是,如果物理接口 Down 掉,则子接口也无法正常工作。

4)Passthru:允许单个虚拟主机直接使用物理接口。

5)Source:通过“被允许的 MAC 地址列表”来过滤流量,来创建基于 MAC 的 VLAN。
创建 MACVLAN 接口

// 使用 Network Manager 创建

nmcli connection add \
connection.type macvlan macvlan.mode bridge macvlan.parent enp2s0f0 \
connection.interface-name kvm-guest2host \
connection.id kvm-guest2host \
ipv4.method auto \
ipv4.route-metric 0

// 使用 ip 创建

ip link add link eth0 address ’00:11:11:11:11:11′ eth0.1 type macvlan
ifconfig eth0.1 up
dhclient -v eth0.1

相关文章
Introduction to Linux interfaces for virtual networking – Red Hat Developer
参考文献
Bridge vs Macvlan – HiCube How to make reachable macvlan aliases in a different namespaces? Introduction to Linux interfaces for virtual networking – Red Hat Developer Macvlan and IPvlan basics | Sreenivas Makam’s Blog macvlan: NetworkManager Reference Manual Make some virt[……]

READ MORE

「Huawei VRP」- 配置 VLAN 环境

基础命令
创建 VLAN 信息:

[Huawei] vlan <vlan-id>

[Huawei] vlan batch <vlan-id_start> [ to <vlan-id_end>]

配置 Access 端口:

[Huawei-Interface] port link-type access
[Huawei-Interface] port default vlan <vlan-id> # 配置默认 VLAN ID(PVID)

配置 Trunk 端口:

[Huawei-Interface] port link-type trunk
[Huawei-Interface] port trunk pvid vlan <vlan-id> # 配置默认 VLAN ID(PVID)
[Huawei-Interface] port trunk allow-pass vlan <vlan-id>

配置 Hybird 端口:

[Huawei-Interface] port link-type hybrid
[Huawei-Interface] port hybrid vlan <vlan-id> # 配置默认 VLAN ID(PVID)
[Huawei-Interface] port hybrid untagged vlan <vlan-id> # 在发送数据时,这些 VLAN 移除 TAG
[Huawei-Interface] port hybrid tagged vlan <vlan-id> # 在发送数据时,这些 VLAN 添加 TAG

# 注意事项
# 1)对于 hybird 端口,没有 allow-pass 指令,
# 2)需要 tagged 与 untagged 指令,都是对从接口发出数据帧的处理;
# 3)但是能接收的数据,只能与 PVID 相同;
# 2)需要配置 pvid 及 tagged 与 untagged 属性;

VLAN 划分方法
基于 交换机端口 划分(极其常用)
不同的交换机端口,接入到不同 VLAN 中,是最常用的划分方法。
Access Port + Trunk Port

Hybrid Port

基于 IP Subnet 划分
基于 主机物理地址 划分(较少使用)

[Huawei] vlan 10
[Huawei-vlan] mac-vlan mac-address 0012-3456-7890

基于[……]

READ MORE

「Network/L3」- 路由,IP 路由,路由基础,数据包转发

问题描述
以太网交换机工作在数据链路层,用于在网络内进行数据转发。而网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能处在不同的网络中。
解决方案
此时就需要使用路由器(Router)来连接不同的网络,通过路由实现不同网络之间的数据转发。
路由是三层网络的首要任务,完成数据包在不同网络的转发。
网络层,负责提供无连接数据传输服务,即在网络发送报文时,不需要建立连接,每个 IP 数据报文独立发送。 网络层:IP 寻址和路由选择。 数据单元:数据包,Packet;
原理简述
1)路由器获取路由:通过 直连、静态、动态 方式,获取路由条目; 2)路由器创建路由表:选择最优的路由条目,并放入路由表; 3)路由表指导路由器,以完成对 IP 报文的转发; 4)路由器通过对路由表管理,实现对路径信息管理;

当路由器收到 IP-Packet 时,路由器根据该 IP-Packet 的目的地址匹配路由条目(或路由表项): 1)若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发; 2)若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文;
应用场景
路由,用于在不同网络间的数据包转发,否则数据包只能在同个二层网络内传递。
参考文献
Wikipedia/Network layer[……]

READ MORE

「Network」- 路由,概念,术语

数据转发的原理

当 Router 收到数据包后,通过 Routing Table 查找,Router 得知 下一跳 和 出接口
下一跳、出接口,这两个要素用于封装二层的数据帧: 1)下一跳,负责提供二层以太帧的目的 MAC 地址; 2)出接口,负责提供二层以太帧的源 MAC 地址;
三层环路
常见根因:路由环路;
防环: 1)动态路由协议有一定的防环能力; 2)IP报文头部中的TTL字段可用于防止报文被无止尽地转发。
FIB, Forwarding Information Base
虽然我们经常讲“查看路由表”、“路由表指导设备转发”,但是实际设备转发数据时: 1)路由器把本地核心路由下发到 FIB, 2)通过路由表生成的 FIB(Forwarding Information Base,转发信息库)表,指导转发;
由于不同路由协议工作原理不同,因此到达同一目的网段可能会生成多个路由条目,路由器根据路由协议的优先级以及路由开销选择最优路由,并且把最优路由放入FIB表,路由器根据FIB表执行数据转发。

路由器将本地核心路由表中的最优路由下载到 FIB 表。路由器转发芯片根据 FIB 表转发报文。
当路由器收到一个 IP 数据包,路由器会根据数据包的目的 IP 地址查找 FIB 表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。
Default Route, Gateway
缺省路由(Default Route),是指目的地址和掩码为零(0.0.0.0/0)的路由。如果报文无法匹配路由表的任何一项,则路由器将选择缺省路由来转发报文,否则丢包。

对于如上拓扑,使用如下静态路由:

[RTA] ip route-static 0.0.0.0 0.0.0.0 10.0.12.2
[RTA] ip route-static 0.0.0.0 0.0.0.0 10.0.12.2 GigabitEthernet 0/0/0

如果使用不当,容易引起环路。[……]

READ MORE

「NETWORK」- 概念术语:自治系统(AS, Autonomous System)

问题描述
OSPF、IS-IS 等 IGP 路由协议,在组织机构网络内部广泛应用。随着网络规模扩大,网络中路由数量不断增长,IGP 已无法管理大规模网络。
解决方案
自治系统(AS,Autonomous System)的概念由此诞生,其指 同个管理机构管理、使用统一路由策略 的 路由器的集合。即划分区域进行管理。

概念术语
AS Number
不同 AS 通过 AS Number 区分;IANA 负责 AS Number 的分发;
AS Number 存在 16bit、32bit 两种长度: 1)在长度为 16bit 的 AS Number 表示方式中:公:1-64512;私:64512 – 65535; 2)在长度为 32bit 的 AS Number 表示方式中:4200000000-4294967294 为 Private AS Number;

参考文献
Removing Private AS Numbers in BGP – Knowledge Base – Palo Alto Networks[……]

READ MORE

「Network」- IP 网络寻址方法:Unicast,Multicast,Broadcast,Anycast

在网络中,存在各种各样的业务,从流量模型看一般可以将业务分为两类:
点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需要下载资料B。此类业务一般由单播承载,服务器对于不同用户发送不同的点到点数据流。
点到多点业务:比如IPTV,视频会议等,此类业务的特点是用户对于业务有相同的需求,比如用户A,B,C,D都需要收看视频 X;点到多点业务,此类业务可以使用单播、广播、组播承载,但使用单播或广播承载点到多点业务时存在一定问题。
单播(Unicast)
单播(Unicast)是在一台源IP主机和一台目的IP主机之间进行。网络上绝大部分的数据都是以单播的形式传输的,例如电子邮件收发、网上银行都是采用单播实现的。
在单播通信中每一个数据包都有确切的目的IP地址;对于同一份数据,如果存在多个接收者,Server需发送与接收者数目相同的单播数据包;当接收者增加到成百上千时,将极大加重Server创建相同数据和发送多份相同拷贝后所产生的消耗,网络中的设备性能及链路带宽都会面临一定程度的浪费;单播方式较适合用户稀少的网络,当用户量较大时很难保证网络传输质量。
广播(Broadcast)
广播(Broadcast)是在一台源IP主机和网络中所有其它的IP主机之间进行,属于一对所有的通讯方式,所有主机都可以接收到(不管是否需要)。
广播数据包被限制在广播域中;一旦有设备发送广播数据,则广播域内所有设备都会收到这个数据包,并且不得不耗费资源去处理,大量的广播数据包将消耗网络的带宽及设备资源;广播方式只适合共享网段,且信息安全性和有偿服务得不到保障。
组播(Multicast)
企业存在一些公告信息,例如天气、值班表、机房注意事项、宣传视频等,为方便公司员工和来访人员及时获取这些信息,通常采用在公司人员密集处布置显示屏的方式。
每一块显示屏显示的内容一致,这是典型的点到多点通信的场景。如果采用单播的方式传递信息,网络中的设备性能及链路带宽都会面临一定程度的浪费。
解决方案
组播技术有效地满足了单点发送、多点接收的需求,实现 IP 网络中点到多点业务数据的高效传送,能够大量节约网络带宽、降低网络负载。

参考文献
Broadcasting (networking) – Wikipedia[……]

READ MORE

「NETWORKING」- RIB, Routing Information Base

RIB,Routing Information Base,Routing Table,即我们常说的“路由表”一词。
路由器维护一张本地核心路由表,此外路由器还维护着路由协议各自的路由表。功能类似于 Switch 的 CAM Table,都是表述数据的走向。
每个路由器都有路由表,而这些路由表又分类为: 1)协议路由表:协议路由表中存放着该协议发现的路由信息。比如以 OSPF 协议学习到 OSPF 路由表。 2)本地核心路由表:每台路由器都保存着一张设备的本地核心路由表。路由器对各协议路由表中相同的表项进行优选,得到本地核心路由表。本地核心路由表中的最优路由,是依据各种路由协议的优先级和度量值来选取的。
路由表项
注意:针对不同的操作系统、网络硬件,其在路由表内容的表示上,存在些许差异,但是整体的内容是类似的。
如下为华为路由器的路由表内容:

<Huawei> display ip routing-table
Route Flags: R – relay, D – download to fib
——————————————————————————
Routing Tables: Public
Destinations : 6 Routes : 6

Destination/Mask Proto Pre Cost Flags NextHop Interface

0.0.0.0/0 Static 60 0 RD 192.168.100.1 Vlanif100
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.10.0/24 OSPF 10 2 D 192.168.100.1 Vlanif100
192.168.100.0/24 Direct 0 0 D 192.168.100.4 Vlanif100
192.168.100.4/32 Direct 0 0 D 127.0.0.1 Vlanif100

Destination/Mask
目的网[……]

READ MORE

「Network」- 路由选择的方法,Route Selection in Routers

问题描述
如果有多条去往目的地址的链路,路由器将负责进行最优选路。
解决方案

1)最长匹配原则:掩码最长(Destination/Mask) 如果目标地址匹配到多条路由条目,则选择最详细的路由(即路由覆盖的网络范围最小)
2)如果(1)相同,则根据路由协议优先级(Pre) 华为定义的路由优先级:Direct:0;OSPF 10;IS-IS 15;Static 60;RIP 100;OSPF ASE 150;OSPF NSSA 150;IBGP 255;EBGP 255; 注意:不同的厂商路由优先级的协定可能不同。
3)如果(2)相同,则根据路由度量值(Cost,开销) 度量值越小,优先级越高; 常见度量值:跳数、带宽、时延、代价、负载、可靠性等等; 协议不同,计算开销的方法也不同,比如 RIP 使用跳数;
4)如果(3)相同,会出现等价路由,负载分担;
Route Strategy
等价路由,负载分担
Equal-cost multi-path routing – Wikipedia
Equal-cost multi-path routing, Equal-cost routing, ECMP, Equal-cost multipath, Equal-cost route
路由间有两条等价路由,即通过任意链路都能到达目的网络:
对于如上拓扑,配置如下静态路由,即能实现等价路由:

[RTB] ip route-static 192.168.1.0 24 10.0.12.1
[RTB] ip route-static 192.168.1.0 24 20.0.12.1

浮动路由,路由冗余
通过调整静态路由优先级(Preference),当主链路故障之后,Shutdown,然后低优先级的路由浮现。

对于如上拓扑,使用如下静态路由:

[RTB] ip route-static 192.168.1.0 255.255.255.0 10.0.12.1
[RTB] ip route-static 192.168.1.0 255.255.255.0 20.0.12.1 preference 100

路由递归,路由迭代
路由必须有下一跳才能指导转发,但是在路由生成时下一跳可能不是直连的,因此需要计算一个直连的下一跳和对应的出接口,这个计算的过程就叫做路由递归(或路由迭代)。

针对如上拓扑: 1)RTA 使用静态路由:[RTA] ip route-static 30.1.2.0 24 20.1.1.3 2)但是,RTA 去往 30.1.2.0/24 的下一跳 20.1.1.3 并非本地直连[……]

READ MORE

「DHCP」- 安全防护

消耗攻击(饿死攻击,Starvation Attack) 仿冒攻击(中间人攻击,MITM Attack)[……]

READ MORE

「DHCP」- 消耗攻击(饿死攻击,Starvation Attack)

问题描述
攻击者持续大量地向 DHCP Server 申请 IP 地址,直到耗尽 DHCP Server 地址池中的 IP 地址,导致 DHCP Server 不能给正常的用户进行分配;
原因分析
DHCP Server 向 DHCP Client 分配 IP 地址时,无法区分正常的申请者与恶意的申请者;

解决方案
防止通过变换 MAC 地址,来大量发送 DHCP 请求
通过 DHCP Snooping 的 MAC 地址限制功能,来防止饿死攻击
该功能通过限制交换机 Interface 上允许学习到的最多 MAC-ADDR 数目,这样攻击者便无法通过修改 MAC-ADDR 来发送大量 DHCP 请求;

通过 dhcp snooping max-user-number 命令
防止通过改变 CHADDR 值的 DoS 攻击
攻击原理:DHCP 是根据 CHADDR 进行地址分配的,所以攻击者能够通过修改 CHADDR 来发送饿死工具,而不需要修改 SRC-ADDR;
防护原理:为了避免受到攻击者改变 CHADDR 值的攻击,可以在设备上配置 DHCP Snooping 功能,检查 DHCP-Request.CHADDR 字段。如果该字段跟数据帧头部的 SRC-MAC 相匹配,转发报文;否则,丢弃报文。从而保证合法用户可以正常使用网络服务;
如果要在某端口下实施源 MAC 地址与 CHADDR 的一致性检查,可以使用:[Interface] dhcp snooping check dhcp-chaddr enable[……]

READ MORE

「DHCPv6」- 有状态自动配置(Statefull Address Configuration)

华为网络设备
注意事项,具体的配置方法参考设备文档。
第一步、配置 DHCPv6 服务

// 第 1 步、配置接口地址
[Huawei] ipv6
[Interface] ipv6 enable
[Interface] ipv6 address <prefix/length>

// 第 2 步、配置地址池
[Huawei] dhcp enable
[Huawei] dhcpv6 pool <pool-name>
[Pool] address prefix <prefix/length>
[Pool] dns-server 2008::8

// 第 3 步、开启 RA 发送
[Interface] undo ipv6 nd ra halt
[Interface] ipv6 nd autoconfig managed-address-flag # 指示 Client 以 DHCPv6 获取网络地址
[Interface] ipv6 nd autoconfig other-flag # 指示 Client 以 DHCPv6 获取其他参数

// 第 4 步、选择地址池
[Interface] dhcpv6 server <pool-name>

第二步、配置客户端获取地址
路由器通过 DHCPv6 获取地址:

interface GigabitEthernet0/0/2
ipv6 enable
ipv6 address auto link-local
ipv6 address auto dhcp

[AR1]display ipv6 interface GigabitEthernet 0/0/2
GigabitEthernet0/0/2 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::2E0:FCFF:FEAC:2EC5
Global unicast address(es):
2001::3, subnet is 2001::3/128
Joined group address(es):
FF02::1:FF00:3
FF02::2
FF02::1
FF02::1:FFAC:2EC5
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit[……]

READ MORE

「IPv6 Transition」- IPv6 over IPv4 GRE 隧道

1)原理:IPv6 over IPv4 GRE 隧道使用标准的 GRE 隧道技术提供了点到点连接服务,需要手工指定隧道的端点地址; 2)特征:隧道转发机制:与 IPv6 over IPv4 手动隧道相同,这是该技术由 GRE 提供实现;[……]

READ MORE

「Network」- 拓扑分发:直连路由、静态路由、动态路由

路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。
1)直连路由(Direct),设备自动生成指向本地直连网络的路由。静态路由,比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是,当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
2)静态路由(Static),网络管理员手工配置的路由
3)动态路由(Dynamic),路由器运行动态路由协议学习到的路由。动态路由,相比较于静态路由,具有更强的可扩展性,具备更强的应变能力。
直连路由,Direct Routing
由设备自动生成,并指向本地直连网络。
在华为网络设备中,当配置接口地址后,将被创建直连路由。
静态路由,Static Routing
Static Routing
动态路由,Dynamic Routing
问题:静态路由需要网络管理人员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约静态路由在大规模网络中的应用。
解决:动态学习路由,根据某种规则(路由协议)建立路由转发表的协议,并能够根据网络变化作出相应调整的协议。简单说,当设备运行动态路由协议后,设备会以组播的方式向外发送自己的路由表数据,以让其他设备能学习到这些路由。

动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议中,OSFP 是应用场景最广泛的协议。
流程概述
1)发送:向其他路由传递路由信息; 2)接收:接收其他路由器的的路由信息; 3)建表:根据收到的路由信息,计算到目的网络的最优路径,并生成路由表; 4)动态:对网络拓扑的变化及时反应,生成新的路由选择表;同时向其他路由器宣告拓扑变化;
协议分类
对于动态路由协议,根据工作范围: 1)IGP(Interior Gateway Protocol,内部网关协议):工作在 AS 内部; —- RIP(已淘汰)、OSPF、IS-IS、EIGRP(思科私有协议,后成为标准); 2)EGP(Exterior Gateway Protocol,外部网关协议):工作在 AS 之间; —- EGP(早已淘汰)、BGP;
IGP 需要发现、计算、传递等等动作;EGP 的主要任务是传递,并不包含发现功能。
对于动态路由协议,根据工作原理: 1)距离矢量路由协议,DVRP,Distance Vector Routing Protocols —- RIP、BGP(增强的距离矢量协议) 2)链路状态路由协议,LSRP,Link-State Routing Protocols —- OSPF、IS-I[……]

READ MORE

「IP Routing」- 静态路由

解决方案
静态路由是指由管理员手动配置和维护的路由条目。
Q:指向下一跳 IP 的静态路由在路由表中, A:管理距离为 1,度量值为 0
Q:当外发接口不可用时,路由表中的静态路由条目有何变化? A:该路由从路由表中删除
原理简述
WIP
特性特征
1)静态路由配置简单,被广泛应用于网络中。 2)另外,静态路由还可以实现负载均衡和路由备份。 3)轻量,适合小规模网络、节约宽带 4)安全,不会暴露网络拓扑
因此,学习并掌握好静态路由的应用与配置是非常必要的。
但是,静态路由也存在很多缺点: 1)当网络发生变化时,需要手动维护,成本高; 2)在故障时,需要及时处理,否则会引发问题;
应用场景
缺省路由:在企业网络中,我们需要手动配置默认网关(缺省路由,0.0.0.0/0),以访问外部网路; 负载分担:到达同一目的网路,由两条路由; 路由备份:到达同一目的网路,由两条路由,但是 Preference 不同; 汇总路由:[……]

READ MORE

「IP Routing」- 概念、术语

IPv6
IPv6 静态路由与 IPv4 静态路由类似,也需要管理员手工配置,适合于一些结构比较简单的 IPv6 网络。
IPv6静态路由与IPv4静态路由之间的主要区别是目的地址和下一跳地址有所不同,IPv6静态路由使用的是IPv6地址,而IPv4静态路由使用IPv4地址。 在创建 IPv6 静态路由时,可以同时指定出接口和下一跳,或者只指定出接口或只指定下一跳。 对于点到点接口:指定出接口。 对于广播类型接口:指定下一跳。
IPv6 静态路由负载分担和备份: 在创建相同目的地址的多条 IPv6 静态路由时,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。[……]

READ MORE

「Huawei VRP」- 静态路由配置

配置说明
IPv4 Routing

# 关联下一跳 IP 的方式
[Huawei] ip route-static <ip-address> <mask> <nexthop-address>

# 关联出接口的方式
[Huawei] ip route-static <ip-address> <mask> <interface-type> <interface-number> # 仅能用在 PPP 协议中

# 关联出接口和下一跳 IP 方式
[Huawei] ip route-static <ip-address> <mask> <interface-type> <interface-number> <nexthop-address>

在创建静态路由时,可以同时指定出接口和下一跳;
对于不同的出接口类型,由于路由递归特性,所以可以只指定出接口或只指定下一跳; 对于点到点接口(如串口),指定出接口; 对于广播接口(如以太网接口)和 VT(Virtual-Template)接口,必须指定下一跳;
在华为设备中,当配置静态路由时,如果未指定出接口,而是直接指定下一跳,则需要对端开启 ARP Proxy 特性,然后设备会直接 ARP 查询目标网络 MAC 地址;
IPv6 Routing

// 在公网上配置 IPv6 静态路由;

[Huawei] ipv6 route-static dest-ipv6-address prefix-length { interface-type interface-number [ nexthop-ipv6-address ] | nexthop-ipv6-address | vpn-instance vpn-destination-name nexthop-ipv6-address } [ preference preference][ permanent | inherit-cost ] [ description text ]
preference preference:指定路由优先级。整数形式,取值范围为 1~255。缺省值是 60;
permanent:指定 IPv6 静态路由永久发布;
inherit-cost:指定 IPv6 静态路由继承迭代路由的开销值;
description tex[……]

READ MORE

「BGP」- 部分工作原理

[……]

READ MORE

「MP-BGP」- Path Attribute / MP-REACH-NLRI

属性概述
类型
可选非过渡
作用
MP_REACH_NLRI 被携带于 BGP Update 报文中,有以下作用: 1)通告可达的 Route 给 BGP 邻居; 2)通告可达路的路由的 Next-Hop 给 BGP 邻居;
演示
通过配置,建立 IPv6 BGP 关系

[Huawei] ipv6
[Interface] ipv6 enable
[Interface] ipv6 address 2011::1 64

[bgp] peer 2011::2 as-number 200
[bgp] ipv6-family unicast
[bgp]-ipv6] peer 2011::2 enable
[bgp]-ipv6] network 2011::/64

然后,抓包观察:

Frame 1: 163 bytes on wire (1304 bits), 163 bytes captured (1304 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_2e:4a:35 (00:e0:fc:2e:4a:35), Dst: HuaweiTe_0b:50:b5 (00:e0:fc:0b:50:b5)
Internet Protocol Version 6, Src: 2011::1, Dst: 2011::2
Transmission Control Protocol, Src Port: 49152, Dst Port: 179, Seq: 1, Ack: 1, Len: 77
Border Gateway Protocol – UPDATE Message
Marker: ffffffffffffffffffffffffffffffff
Length: 77
Type: UPDATE Message (2)
Withdrawn Routes Length: 0
Total Path Attribute Length: 54
Path attributes
Path Attribute – ORIGIN: IGP
Path Attribute – AS_PATH: 200
Path Attribute – MULTI_EXIT_DISC: 0
Path Attribute – MP_REACH_NLRI
Flags: 0x90, Optional, Extended-Length, Non-transitive, Complete
Type Code: MP_REACH_NL[……]

READ MORE

「BGP」- MP-UNREACH-NLRI

属性字段
类型
可选非过渡
作用
MP_UNREACH_NLRI 被携带于 BGP Update 报文中,用于撤销不可达的路由;
演示
通过 [Huawei-bgp-ipv6] undo network 撤销,能够捕获报文:

Frame 1107: 125 bytes on wire (1000 bits), 125 bytes captured (1000 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_2e:4a:35 (00:e0:fc:2e:4a:35), Dst: HuaweiTe_0b:50:b5 (00:e0:fc:0b:50:b5)
Internet Protocol Version 6, Src: 2011::1, Dst: 2011::2
Transmission Control Protocol, Src Port: 49152, Dst Port: 179, Seq: 1389, Ack: 1312, Len: 39
Border Gateway Protocol – UPDATE Message
Marker: ffffffffffffffffffffffffffffffff
Length: 39
Type: UPDATE Message (2)
Withdrawn Routes Length: 0
Total Path Attribute Length: 16
Path attributes
Path Attribute – MP_UNREACH_NLRI
Flags: 0x90, Optional, Extended-Length, Non-transitive, Complete
Type Code: MP_UNREACH_NLRI (15)
Length: 12
Address family identifier (AFI): IPv6 (2)
Subsequent address family identifier (SAFI): Unicast (1)
Withdrawn routes (9 bytes)
2011::/64
MP Unreach NLRI prefix length: 64
MP Unreach NLRI IPv6 prefix: 2011::

报文格式
整体结构[……]

READ MORE

「BGP4+」- 概念术语

当传递 IPv6 路由时 AFI=2,SAFI=1(单播),SAFI=2(组播)。 下一跳地址长度字段,通常值为 16,表示下一跳地址为下一跳路由器的全球单播地址。 保留字段,恒等于 0。 NLRI 字段,可变长字段,表示路由前缀和掩码信息;
当撤销 IPv6 路由时 AFI=2 ,SAFI=1(单播),SAFI=2(组播)。 Withdrawn Routes 字段代表需要撤销的路由前缀及掩码;[……]

READ MORE

「OSPF」- 平滑重启(GR,Graceful Restart)

解决方案
GR(Graceful Restart,平滑重启)是种冗余容错技术,目前已经被广泛地使用在主备切换和系统升级方面,以保证关键业务的不间断转发。
补充说明:重启是指 OSPF 进程的重启,并非物理设备的重启。
原理简述
OSPF 通过新增 Grace-LSA(LSA-T9)来支持 GR 功能。这种 LSA 用于在开始 GR 和退出 GR 时向邻居通告 GR 的时间、原因、接口地址等内容。即,通过协议的方式告知邻居,以让邻居提前准备。
特性特征
通过 GR 技术,在设备重启过程中: 1)保证转发层面能够继续指导数据的转发, 2)同时控制层面邻居关系的重建、路由计算等动作不会影响转发层面的功能, 3)从而避免了路由振荡引发的业务中断,保证关键业务的数据转发,提高整网的可靠性;
在实际应用中,为了实现业务转发不受主板故障的影响,通常在双主板的硬件环境下配置 OSPF GR 才有意义。
概念术语
平滑重启的分类
完全 GR(Totally GR):指当有一个邻居不支持 GR 时,则整个路由器退出 GR 状态;
部分 GR(Partial GR):指当有一个邻居不支持 GR 时,则仅关联该邻居的接口退出 GR,路由器的其它接口正常进行 GR 过程;
有计划 GR(Planned GR):指手动通过命令使路由器执行重启或主备倒换。在进行重启或主备倒换前,Restarter 会先发送 Grace-LSA 进行 GR 协商;
非计划 GR(UnPlanned GR):与 Planned GR 的区别在于,路由器是由于故障等原因进行重启或主备倒换,并且在重启或主备倒换前不会事先发送 Grace-LSA,而是直接开始主备倒换,在备板正常 Up 后才进入 GR 过程,而后的步骤同 Planned GR;
角色及功能
GR Restarter: GR 重启路由器,指由管理员或故障触发而协议重启的设备,它需要具备 GR 能力。 可以通过配置支持 Totally-GR 或 Partial-GR;
GR Helper: 协助重启路由器,即 GR Restarter 的邻居,能协助重启的 GR Restarter 保持路由关系的稳定,它也需要具备 GR 能力; 可以通过配置支持 Planned-GR、UnPlanned-GR,或通过策略有选择支持 GR;
GR Session: GR 会话,是 GR Restarter 和 GR Helper 间的能力协商过程,包括协议重启通告,协议重启过程中的信息交互等。 通过该会话,GR Restarter 和 GR Helper 可以掌握彼此的 GR 能力。
GR 的持续时间: GR 持续时间最长不超过 1800 秒。 G[……]

READ MORE

「OSPF」- 常见问题处理

软件实现
在 Ubuntu 20.04.3 LTS 中,我们使用 quagga-ospfd 来部署服务。[……]

READ MORE

「Huaiwei VRP」- 配置 OSPF 协议

基础配置命令
运行 OSPF 协议(全局)

### 创建 OSPF 进程
[Huawei] ospf <process-id>
[Huawei] ospf router-id <router-id> # 我们通常手动指定 Router ID 参数,以简化维护(默认是自动选择,比较难记忆)

[Huaewi] ospf
[Huawei] ospf 1
[Huawei] ospf 1 router-id x.x.x.x

### 创建 OSPF 区域
[Huawei-ospf] area 0 # 划分区域

### 通告网络
[Huawei-ospf-1-area-0.0.0.0] network <network-prefix> <wildcard-mask> # 宣告网络,这里是反掩码,匹配多个网络

### 重置 OSPF 进程
<user-view> reset ospf [ process-id ]

process-id,用于标识 OSPF 进程(default=1),同个设备上能够运行多个不同的 OSPF 进程。 router-id,手工指定设备号,如果未指定,则 Router 会从设备接口的网络地址中选择某个地址。 area-id:区域 ID;以十进制或点分十进制表示;范围 0-232; network:定义运行 OSPF 协议的网段。参数 wildcard-mask 为通配额父(比如 0.0.0.255 格式)
当通过命令 network 进行网络宣告后,Router 才开始发送 OSPF Hello 报文,以开始建立邻居关系。而且当 OSPF 运行时,虽然是全局配置,但是其依旧实在接口上运行的,即如果接口地址未包含在 network 定义的范围内,该接口上依旧不会捕获到 OSPF Hello 报文。
运行 OSPF 协议(接口)

[Interface] ospf enable 1 area 0

其他设置
加快收敛速度:

// 设置选举DR时的优先级
[Huawei-GigabitEthernet1/0/0] ospf dr-priority priority # priority 越大,越优先,0-255

// 设置Hello报文发送的时间间隔
// 缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒,且同一接口上邻居失效时间是Hello间隔时间的4倍
[Huawei-GigabitEthernet1/0/0] ospf timer Hello interval

// 设置网络类型
// 缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型[……]

READ MORE

「OSPFv3」- OSPF version 3 (for IPv6)

问题描述
OSPF(Open Shortest Path First)是 IETF 组织开发的一个基于链路状态的 IGP;
针对 IPv6 网络,也提出相对的 OSPF 协议;
解决方案
目前针对 IPv4 协议使用的是 OSPF Version 2 协议,针对 IPv6 协议使用 OSPFv3(OSPF Version 3)协议;
OSPFv3 是运行于 IPv6 的 OSPF 路由协议(RFC2740),它在 OSPFv2 基础上进行了增强,是一个独立的路由协议;
原理简述
OSPFv3 的主要目的是开发一种独立于任何具体网络层的路由协议。为实现这一目的,OSPFv3 的内部路由器信息被重新进行了设计;
相同点
针对基本运行机制,OSPFv3 并未改变:
1)基本概念:区域划分及路由器类型;路由计算影响参数:优先级、度量值;支持的网络类型:Broadcast、NBMA、P2P、P2MP;报文类型:Hello、DD、LSR、LSU、LSAck;
2)工作原理:邻居关系的建立及邻居状态的转换(状态机、Hello Packet);LSDB 的同步;LSA 泛洪机制;DR 与 BDR 的选举;路由计算过程;
3)相同点还包括:对特殊区域、虚连接、多进程的支持等;
4)把自治系统划分成逻辑意义上的一个或多个区域,通过 LSA(Link State Advertisement)的形式发布路由; 5)在 OSPFv3 Area 内,依靠各设备间交互 OSPFv3 报文来达到路由信息的统一 6)报文封装在 IPv6 报文内,可以采用单播和组播的形式发送
差异点
OSPFv3 基于链路运行以及拓扑计算,而不再是网段。所以 OSPFv3 需要在接口中进行通告配置; OSPFv3 支持同个链路上多个实例,以此实现网络隔离; OSPFv3 报文和 LSA 中去掉了 IP-ADDR 的意义,且重构了报文格式和 LSA 格式; OSPFv3 报文和 Router LSA/Network LSA 中不包含 IP-ADDR; OSPFv3 的 LSA 中定义了 LSA 的泛洪范围; OSPFv3 中创建了新的 LSA 承载 IPv6 地址和前缀; OSPFv3 邻居不再由 IP-ADDR 标识,只由 Router ID 标识;
特性特征
对于 OSPFv3 协议: 1)OSPFv3 是运行于 IPv6 的 OSPF 路由协议(RFC5340,同 RFC2740); 2)OSPFv3 在 OSPFv2 基础上进行修改,是一个独立的路由协议;
两者并不兼容:OSPFv2 是运行在 IPv4 上的 IGP 路由协议;OSPFv3 是运行在 IPv6 上的 IGP 路由协议[……]

READ MORE

「OSPFv3」- 概念、术语

路由器类型

AS Boundary Router,AS 边界路由器,ASBR Area Border Router,区域边界路由器,ABR Backbone Router,骨干路由器,BR Internal Router,内部路由器,IR
Router ID
OSPFv2 在 Broadcast、NBMA、P2P 和 P2MP 网络中是通过 IPv4 接口地址来标识邻居,而在虚连接网络中是通过 Router ID 来标识邻居;
OSPFv3 通过 Router ID 来标识网络设备。Router ID 是一个 OSPFv3 设备在 AS 中的唯一标识; 如果用户没有指定 Router ID,则 OSPFv3 进程无法运行; 当设置 Router ID 时,必须保证在 AS 中任意两台设备的 Router ID 都不相同; Router ID 长度 32 bit,本地标识符,与 IPv6 地址无关,用点分十进制表示法来表示;
基于链路运行
在 OSPFv2 中,当路由协议时,邻居双方必须处于相同网段,否则无法建立邻居关系;
OSPFv3 是基于链路运行的,设备只要在同一链路,就可以建立邻居关系。即使互联接口不在同个网段,两台设备之间也能够建立邻居关系;
在 IPv6 中,重点强调链路的概念。在 IPv6 中,一个链路上可以分配多个 IP 子网,也就是 IPv6 前缀。和 IPv4 不同的是,同一个链路上的两个节点即使不具有相同的 IPv6 前缀,也可以直接通过这个链路通信。这一点极大地改变了 OSPF 的行为;
在 OSPFv3 中,我们更多的是使用“链路”和“前缀”这两个术语。但这两个概念是分离的,没有必然的对应关系,所以在讨论路由协议时,OSPFv2 的术语“网络”和“子网”在这里应该用“链路”替换掉;
链路支持多实例
一个 OSPFv3 物理接口可以和多个实例绑定,并用不同的实例标识(Instance ID)区分,即 OSPFv3 的单个链路支持运行多个 OSPFv3 实例;
这些运行在同一条物理链路上的多个 OSPFv3 实例,分别与链路对端设备建立邻居及发送报文,且互不干扰,这样可以充分共享同一链路资源;
多实例通过在 OSPFv3 报文头部增加一个 Instance ID 区别不同的实例来实现。一个分配给定 Instance ID 的实例,将会丢弃那些与该 Instance ID 不匹配的 OSPFv3 报文;

通过 Instance ID 可以实现 R2 和 R3 建立 OSPFv3 邻居关系,R1 和 R4 也建立 OSPFv3 邻居关系;
使用链路本地地址(Link Local)
IPv6 使用链路本地(Link-[……]

READ MORE

「OSPFv3」- 报文格式

协议编号
OSPFv3 与 OSPFv2 使用相同的协议号 89; 1)OSPFv2:IPv4 报文头部中的协议号(Protocol)为 89; 2)OSPFv3:IPv6 报文头部中的下一报头号(Next Header)为 89;
组播地址
OSPFv3 与 OSPFv2 类似,使用组播地址作为 OSPF 报文目的地址; 1)OSPFv2 使用 IPv4 组播地址: OSPF IGP Routers:224.0.0.5;OSPF IGP DR :224.0.0.6; 2)OSPFv3 使用 IPv6 组播地址:OSPF IGP Routers:FF02::5;OSPF IGP DR:FF02::6;
报文类别
OSPFv3 与 OSPFv2 有相同类型的报文: 1)Hello 报文:周期性发送,用来发现、建立和维持 OSPFv3 邻居关系; 2)DD 报文:描述了本地 LSDB 的摘要信息,用于两台设备进行数据库同步; 3)LSR 报文:用于向对方请求所需的 LSA。设备只有在 OSPFv3 邻居双方成功交换 DD 报文后,才会向对方发出 LSR 报文; 4)LSU 报文:向对方发送其所需的 LSA; 5)LSAck 报文:用来对收到的 LSA 进行确认;
变化点: 1)Instance ID:1 Byte,缺省值为 0。允许在一个链路上运行多个 OSPFv3 的实例。每个实例具有唯一的 Instance ID。Instance ID 只在本地链路上有意义; 2)OSPFv3 报文头部移除了所有的认证字段:OSPFv3 的认证可以使用 IPv6 的认证及安全处理,也可以通过 OSPFv3 自身机制来完成报文认证;
OSPFv3 Header

Version:1 Byte,版本,OSPF 的版本号。对于 OSPFv3 来说,其值为 3; Type:1 Byte,类型,OSPFv3 报文的类型。有下面几种类型: TYPE=1:Hello 报文 TYPE=2:DD 报文 TYPE=3:LSR 报文 TYPE=4:LSU 报文 TYPE=5:LSAck 报文 Packet length:2 Byte,OSPFv3 报文的总长度,包括报文头在内,单位为字节; Router ID:4 Byte,始发此报文的路由器的 Router ID; Area ID:4 Byte,发送该报文的所属区域; Checksum:2 Byte,使用 IPv6 标准 16 位校验和; 0:1 Byte,保留字段,必须填 0;
OSPFv3 Body : Hello
变化点: 与 OSPFv2 的 Hello 报文相比,OSPFv3 的 Hello 报文去掉了 Network Mask 字段,增加了 Interface I[……]

READ MORE

「Huawei VRP」- OSPFv3

示例配置

# 在接口配置地址后,再进行后续操作

# 配置 OSPFv3 协议:先全局,后接口
[Huawei] ipv6
[Huawei] ospfv3 1
[ospf] router-id 1.1.1.1

# [Huawei-GigabitEthernet0/0/1] ospfv3 process-id area area-id [ instance instance-id ]

[Interface] ipv6 enable
[Interface] ospfv3 1 area 0.0.0.0

# 查看邻居关系
[Huawei] display ospfv3 peer[……]

READ MORE

「RIP」- 路由信息协议、Routing Information Protocol(分类:距离矢量路由协议、动态路由协议)

RIP,最早的动态路由协议,距离矢量算法,路由信息协议,RoutingInformationProtocol,是种基于距离矢量(Distance-Vector)算法的协议,使用跳数作为度量来衡量到达目的网络的距离。
RIP 协议特点: 1)配置简单 2)易于维护 3) RIP 主要应用于规模较小的网络中(受到跳数限制,最大 15 跳)。
原理简述

1)RTA,运行 RIP 后,会首先发送路由更新请求。 2)RTB,会发送自己的 RIP 路由进行响应; 3)RTA,收到响应之后,路由器会保存路由条目(最优写入路由表,次优写入数据库),路由表条目的老化为 180s 时间;
在网络稳定后,RT 会周期性(30s)发送路由更新信息,以为了防止路由条目老化(180s)。
RIP Metric
使用跳数作为度量,来衡量到达目的网络的距离。当收到“到达目的网络跳数不同的”路由信息时,将选择最小跳数的路由,并缓存另一条路由。
默认情况,直连网络的条数为零。当路由器发送路由更新时,会把度量值 +1,并且超过 15 跳则被视为网络不可达(并且不使用该路由)。
RIP Timer(计时器)
在更新和维护路由信息时,RIP 协议主要使用四个定时器: 1)更新定时器(Update Timer,30s):当此定时器超时时,立即发送更新报文; 2)老化定时器(Age Timer,180s):如果在老化时间内,RIP 设备没有收到邻居发来的路由更新报文,则认为该路由不可达;并进入垃圾回收状态; 3)垃圾收集定时器(Garbage-collect Timer,120s):如果在该时间内不可达路由未收到来自同一邻居的更新,则该路由将被从路由表中彻底删除; 4)抑制定时器(Suppress timer,0s):当 RIP 设备收到对端的路由更新,其 Cost=16 则对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由 Cost<16 的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文; (华为抑制计时器为 0s 时间,不再使用。思科设备有时间的。通常 Suppress Timer 为 180s 时间,但是垃圾计数器 120s 结束时,条目被清理,应该接收新路由条目,但是受抑制定时器影响,却不再接收新条目,这有些不合理。)
协议版本:RIPv1 & RIPv2
RIPv1(缺点):
1)有类别路由协议,不支持 VLSM 与 CIDR(准确说,能配置,但是没有效果;该协议在传送时,不携带掩码信息,而是以有类的方式发送) 2)以广播方式发送报文,即目的地址为 255.255.255.255 地址,效率较低; 3)不支持认证,任[……]

READ MORE