「IPv6」- 地址申请

IPv6 地址块分成两类:PA 地址和 PI 地址;
PA 地址空间(Provider-Aggregatable address space)
PA 地址空间指的是一段由区域互联网注册管理机构分配给 ISP 的 IP 地址;
ISP 可以再根据用户的需求分配地址块,即 PA 地址随专线、Internet 出口等服务同步提供给用户,适用于中小型企业,成本较低。但是,切换 ISP 需更换地址分配。

PI 地址空间(Provider-Indepedent address space)
PI 地址空间是由区域互联网注册管理机构直接分配给最终用户的一段 IP 地址。获取了此种地址的用户必须另外联系 ISP 来获取互联网的接入服务,并将到达相关地址段的路由在互联网上通告。
PI 地址与 ISP 解耦,可以接入多个 ISP,地址规划自主可控,适用于大中型企业。但是,PI 地址使用成本较高;[……]

READ MORE

「NETWORK」- ISIS | IS-IS | Intermediate System to Intermediate System

认识
ISIS(Intermediate System to Intermediate System,中间系统到中间系统)是 ISO 为它的 CLNP(ConnectionLessNetwork Protocol,无连接网络协议 —— 对应 TCP/IP Model 的 IP,但是这是 OSI Model 的名称)设计的一种动态路由协议。
随着 TCP/IP 协议的流行,为了提供对 IP 路由的支持,IETF 在 RFC1195 中对 ISIS 进行扩充和修改,使它能够同时在 TCP/IP 和 OSI(Open System Interconnect,开放式系统互联)环境中应用,我们将扩展后的 ISIS 称为 Integrated IS-IS(集成的 IS-IS)。
我们的学习重点也是 Integrated ISIS 协议。
性质
ISIS 工作于二层网络,采用数据链路层进行封装;
扩展性强:因其工作于二层,因此无需关注上层协议;
应用
WIP
参考
IS-IS – Wikipedia[……]

READ MORE

「CERT-MANAGER」- 中心化的证书管理

问题
Let’s Ecnrypt 证书频率限制;
分析
WIP
方案
参考 Using wildcard certificates with cert-manager in Kubernetes and replicating across all namespaces 文章,以获得详细说明。
其大致过程如下:
1)通过 Issuer 资源,集中申请泛域名证书,保存在 cert-manager 命名空间;
2)通过 kubernetes-replicator(或其他同类)服务,进行 Secret 资源复制;
3)在 Ingress 中,引用该 Secret 资源;[……]

READ MORE

「ISIS」- 通告缺省路由 | Default Route Injection

解决方案
在 ISIS 中,主要通过以下 3 种方式控制缺省路由的生成和发布:

在 Level-1-2 上,通过配置,控制其产生的 Level-1 LSP 中 ATT 位的置位情况。
在 Level-1 上,通过配置,使其即使收到 ATT 位置位的 Level-1 LSP 也不会自动产生缺省路由。
在 ISIS 中,发布缺省路由。

报文格式
ATT(Attachment):由 Level-1-2 Router 产生,用来指明始发路由器是否与其它区域相连。此字段有 4bit,华为数通产品只使用了其中 1bit;

通过设置 ATT 位控制缺省路由生成
自动 ATT 置位
缺省情况下,Level-1-2 设备发布的 LSP 的 ATT 位,其是根据缺省置位规则来决定置位情况,其 ISIS 规定如下:
1)如果 Level-1-2 设备根据 LSDB 判断通过 Level-2 区域比 Level-1 区域能够到达更多的区域,该设备会在所发布的 Level-1 LSP 内将 ATT 位置位。
2)对于收到 ATT 位置位的 LSP 报文的 Level-1 设备,会生成一条目的地为发送该 LSP 的 Level-1-2 设备地址的缺省路由。
以上是协议的默认原则,在实际应用中,可以根据需要对 ATT 比特位进行手动配置以更好地为网络服务。
配置 ATT 置位

# 在 Level-1-2 中,设置 IS-IS LSP 报文的 ATT 比特位置位规则。
# always:指定 ATT 位永远置位,收到该 LSP 的 Level-1 设备会生成缺省路由。
# never:指定 ATT 位永不置位,可以避免 Level-1 设备生成缺省路由,减小路由表的规模。
[Huawei-isis-1] attached-bit advertise { always | never }

虽然 ATT 位同时在 Level-1 LSP 和 Level-2 LSP 中进行了定义,
但是它只会在 Level-1 LSP 中被置位,并且只有 Level-1-2 设备会设置这个字段,
所以,该命令仅对 Level-1-2 设备生效。

Level-1,忽略 ATT 比特,不产生缺省路由
配置 Level-1 设备不将缺省路由下发到路由表,有以下两种方式可以实现:
1)在 Level-1-2 设备上配置 attached-bit advertise never 命令,使得其不会发布 ATT 位置位的 LSP;
2)在与 Level-1-2 设备相连的 Level-1 设备上配置 attached-bit avoid-learning 命令,适用于需要针对指定设备配置的[……]

READ MORE

「JENKINS-PIPELINE」- 接口 | SDK

通过 Jenkins Java API 来配置 Job 的方法是观察 config.xml 的结构,然后根据解构来查看 Javadoc 文档,并进一步编写代码。
RunWrapper | currentBuild and previousBuild
org.jenkinsci.plugins.workflow.support.steps.build.RunWrapperhttps://javadoc.jenkins.io/plugin/workflow-support/org/jenkinsci/plugins/workflow/support/steps/build/RunWrapper.html
getBuildVariables() // 获取环境变量,但是该 Map 为 Java Map 类型,其不支持 get(”,default) 操作。
jenkins.model.Jenkins
https://github.com/jenkinsci/jenkins/blob/jenkins-2.31/core/src/main/java/jenkins/model/Jenkins.java#L1761
https://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html
getItem()
getItems() // Gets just the immediate children of Jenkins.
getAllItems()
Multibranch Pipeline
jenkins.model.Jenkinshttps://javadoc.jenkins.io/jenkins/model/Jenkins.html
jenkins.plugins.git.GitSCMSourcehttps://javadoc.jenkins.io/plugin/git/jenkins/plugins/git/GitSCMSource.html
jenkins.branch.BranchSourcehttps://javadoc.jenkins.io/plugin/branch-api/jenkins/branch/BranchSource.html
jenkins.branch.MultiBranchProjecthttps://javadoc.jenkins.io/plugin/branch-api/jenkins/branch/MultiBranchProject.html
org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjecthttps://javadoc.jenkins.io/plugin/w[……]

READ MORE

「ICMPv6」- 报文格式

在 IPv6 Header 中,当 Next-Header == 58 时,则对应为 ICMPv6 报文。

报文格式

Type:表明消息的类型。ICMPv6 报文载荷由 ICMPv6 报文 Type 字段决定,因报文类型的不同而不同。
Code:表示消息类型的细分。
Checksum:表示 ICMPv6 报文的校验和。
Message Body:报文内容。对于 ping 报文,其中包含随机数据;对于类型为 NS NA RS RA 的报文,其中包含结构化的数据和相关信息。
报文示例
ICMPv6 Request and ICMPv6 Reply
Request

Frame 14: 118 bytes on wire (944 bits), 118 bytes captured (944 bits) on interface -, id 0
Ethernet II, Src: 38:39:cc:01:01:00 (38:39:cc:01:01:00), Dst: 38:39:cc:02:01:00 (38:39:cc:02:01:00)
Internet Protocol Version 6, Src: 2000:12::1, Dst: 2000:12::2
0110 …. = Version: 6
…. 0000 0000 …. …. …. …. …. = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
…. 0000 00.. …. …. …. …. …. = Differentiated Services Codepoint: Default (0)
…. …. ..00 …. …. …. …. …. = Explicit Congestion Notification: Not ECN-Capable Transport (0)
…. 0000 0000 0000 0000 0000 = Flow Label: 0x00000
Payload Length: 64
Next Header: ICMPv6 (58)
Hop Limit: 64
Source Address: 2000:12::1
[Address Space: Global Unicast]
Destination Address: 2000:12::2
[Address Space: Global Unicast]
[Stream index: 0]
Internet Control Messag[……]

READ MORE

「ICMPv6」- RS(Type=134), RA(Type=135)

RS (ICMPv6.Type=133)

Frame 29: 70 bytes on wire (560 bits), 70 bytes captured (560 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_60:33:15 (00:e0:fc:60:33:15), Dst: IPv6mcast_01 (33:33:00:00:00:01)
Internet Protocol Version 6, Src: fe80::2e0:fcff:fe60:3315, Dst: ff02::1
Internet Control Message Protocol v6
Type: Router Solicitation (133)
Code: 0
Checksum: 0x1a83 [correct]
[Checksum Status: Good]
Reserved: 00000000
ICMPv6 Option (Source link-layer address : 00:e0:fc:60:33:15)
Type: Source link-layer address (1)
Length: 1 (8 bytes)
Link-layer address: HuaweiTe_60:33:15 (00:e0:fc:60:33:15)

RA (ICMPv6.Type=134)

Frame 3: 110 bytes on wire (880 bits), 110 bytes captured (880 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_64:0e:23 (00:e0:fc:64:0e:23), Dst: IPv6mcast_01 (33:33:00:00:00:01)
Internet Protocol Version 6, Src: fe80::2e0:fcff:fe64:e23, Dst: ff02::1
Internet Control Message Protocol v6
Type: Router Advertisement (134)
Code: 0
Checksum: 0xf0b7 [correct]
[Checksum Status: Good]
Cur hop limit: 64
Flags: 0x00, Prf (Default Router Preference): Medium
0… …. = Managed address c[……]

READ MORE

「IPv6」- 业务流程 | 单播

ICMPv6
ICMPv6 报文被广泛应用于其它协议中,包括 NDP、PathMTU 发现机制等,其控制着 IPv6 的地址自动配置、地址解析、地址冲突检测、路由选择、差错控制等关键环节。
在发送报文前,接口要经历四个阶段:

网络地址配置:全球单播地址和链路本地地址是接口上最常见的IPv6单播地址,一个接口上可以配置多个IPv6地址。
重复地址检测:DAD(Duplicate Address Detection,重复地址检测)类似于IPv4中的免费ARP检测,用于检测当前地址是否与其他接口冲突。
网络地址解析:类似于IPv4中的ARP请求,通过ICMPv6报文形成IPv6地址与数据链路层地址(一般是MAC地址)的映射关系。
数据转发阶段:此时,网络才能进入数据转发状态。

其中 NDP 扮演重要角色。[……]

READ MORE

「ISIS」- LSDB

LSP 产生的原因
IS-IS 路由域内的所有路由器都会产生 LSP,以下事件会触发一个新的 LSP:
邻接 Up 或 Down
IS-IS 相关接口 Up 或 Down
引入的 IP 路由发生变化
区域间的 IP 路由发生变化
接口被赋了新的 metric 值
周期性更新(刷新间隔 15min)
在广播网络中,LSP 的同步过程
针对初始设备的同步……

// 对于网络拓扑,初时仅有 R1 R2 两台设备

R1 <<<==== (MA) ====>>> R2

// 建立邻居关系,三次握手

======>>>
<<<======
======>>>

// 互相发送 LSP 进行同步

<<<==== LSP ====>>>

// DIS 周期发送 CSNP 报文

======= CSNP ====>>>

// 其他设备通过 PSNP 请求

<<<==== PSNP =======

// 最后 DIS 回复 LSP 报文

======= LSP ====>>>

针对新增设备的同步……

// 对于网络拓扑,R3 为新增设备

R1 <<<====(MA)====>>> R2 (DIS)
||
||
VV
R3

1)R3 向通过 IIH 与其他设备建立邻接关系;
2)R3 直接发送 LSP 进行广播,以发送给网络的其他设备;
3)R1/R2 会将 R3 的 LSP 进行保存;
4)DIS 每 10s 发送 CSNP 报文;
5)R3 根据 CSNP 来组播发送 PSNP 来请求数据;
6)DIS 对其进行响应;
在点到点网络中,LSP 的同步过程

// 对于网络拓扑,初时仅有 R1 R2 两台设备

R1 <<<==== (P2P) ====>>> R2

// 建立邻居关系,三次握手(或两次握手)

======>>>
<<<======
======>>>

// 互相发送 CSNP/PSNP 进行同步

<<<==== CSNP ====>>>
<<<==== PSNP ====>>> // 请求
<<<==== LSP ====>>>[……]

READ MORE

「RABBITMQ」- on Kubernetes with Operator

https://www.rabbitmq.com/kubernetes/operator/install-operator
镜像:https://hub.docker.com/_/rabbitmq/
RabbitMQ Cluster Operator Plugin for kubectl
https://www.rabbitmq.com/kubernetes/operator/kubectl-plugin

kubectl krew install rabbitmq

RabbitMQ Cluster Kubernetes Operator
https://github.com/rabbitmq/cluster-operatorhttps://www.rabbitmq.com/kubernetes/operator/install-operator#helm-chart
Install Operator

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/rabbitmq-cluster-operator

helm show values ./rabbitmq-xxx.tgz > ./rabbitmq-xxx.tgz.helm-values.yaml

helm upgrade –install –namespace rabbitmq-cluster-operator –create-namespace \
rabbitmq-cluster-operator \
./rabbitmq-cluster-operator-4.3.22.tgz -f rabbitmq-cluster-operator-4.3.22.tgz.helm-values.yaml

Chart Parameters https://github.com/bitnami/charts/tree/main/bitnami/rabbitmq-cluster-operator#parameters
Modifying the RabbitMQ Cluster Operator Default Configurationhttps://www.rabbitmq.com/kubernetes/operator/configure-operator-defaults
Using Operator
https://www.rabbitmq.com/kubernetes/operator/using-operator
Existing examples | https://www.rabbitmq.com/kubernetes/o[……]

READ MORE

「Elasticsearch」- 性能调优

设置 JVM 选项
Elasticsearch Reference [7.7] » REST APIs » Cluster APIs » Nodes stats APIElasticsearch Reference [7.7] » Set up Elasticsearch » Configuring Elasticsearch » Setting JVM options
第一步、查看当前配置
可以使用 GET/_nodes/stats/jvm 或者 GET/_nodes/<node_id>/stats/jvm 接口:

GET /_nodes/<your node id>/stats/jvm?pretty

在输出中的数值含义可参考官方文档,与 JVM Heap 有关的参数以字节(Byte)为单位。
第二步、调整选项参数
如果使用 RPM 或 DEB 安装,可以修改 /etc/elasticsearch/jvm.options 文件:

vim /etc/elasticsearch/jvm.options

systemctl restart elasticsearch.service

第三步、验证配置生效
按照 第一步 访问接口,查看那新的配置参数。[……]

READ MORE

「HUAWEI-ENSP」- 实验学习:IPv6

补充说明
配置 IPv6 地址:

[Huawei] ipv6 # 全局开启
[Huawei-GigabitEthernet0/0/0] ipv6 enable # 在接口视图下,在接口上使能该接口的 IPv6 功能;

# 配置 IPv6 静态路由
[Huawei] ipv6 route-static dest-ipv6-address prefix-length { interface-type interface-number [ nexthop-ipv6-address ] | nexthop-ipv6-address } [ preference preference ]

配置地址:

// 配置 IPv6 地址

[Huawei-GigabitEthernet1/0/0] ipv6 address { address prefix }

// —————————————————————————- // 配置 GUA 地址

[Huawei-GigabitEthernet0/0/0] ipv6 address { ipv6-address prefix-length } # 每个接口下最多可配置 10 个 GUA 地址
[Huawei-GigabitEthernet0/0/0] ipv6 address auto { global | dhcp }

[Huawei-GigabitEthernet0/0/0] ipv6 address auto global default # 将生成默认路由

// —————————————————————————- // 配置 LLA 地址

// 当配置 GUA 地址时,也会自动产生 LLA 地址

[Huawei-GigabitEthernet0/0/0] ipv6 address <ipv6-address> link-local # 优先于 AUTO 方式
[Huawei-GigabitEthernet0/0/0] ipv6 address auto link-local # EUI-64

查看 IPv6 信息:

[Huawei] display ipv6 interface [ interface-type interface-number | brief ]
[Huawei] display ipv6 neighbors[……]

READ MORE

「Filebeat」- 通用日志格式模块

Filebeat 内置了一些默认的模块,用于快速创建日志方案、仪表盘、数据可视化。这些模块支持「通用日志格式」「Common Log Format」。
该手册展示了如何使用最小配置来运行这些模块。详细配置和使用参考「Modules」部分。
如果没有适用于你的日志格式的模块,可以参考「Getting Started With Filebeat」部分。
环境准备

配置 ELastic Stack 环境;
安装 Filebeat 服务;
安装「Ingest Node GeoIP」「User Agent」插件,这用户分析用户地址位置和代理,然后在可视化时显示:

elasticsearch-plugin install ingest-geoip
elasticsearch-plugin install ingest-user-agent
systemctl restart elasticsearch.service

验证 Elasticsearch 和 Kibana 可以正常访问,并且 Filebeat 可以访问 Elasticsearch 并写入数据;

运行 Filebeat 模块
#1 修改 filebeat.yml 文件

output.elasticsearch:
hosts: [“yourESHostname:9200”]

#2 配置认证信息(可选)
在后面的某个步骤中,Filebeat 需要访问 Kibana 和 Elasticsearch,因为要向二者导入模板数据并进行设置。所以,如果有认证信息,则需要配置:

output.elasticsearch:
hosts: [“myEShost:9200”]
username: “filebeat_internal”
password: “YOUR_PASSWORD”

setup.kibana:
host: “mykibanahost:5601”
username: “my_kibana_user”
password: “YOUR_PASSWORD”

#3 启用模块
下面启用了 Nginx 和 System 模块:

#!/bin/bash

filebeat modules enable system nginx mysql

# 如果要查看启动和禁用的模块,则可以使用如下命令:
filebeat modules list

该命令实际上是启用了 modeule.d/ 的模块。
当然,比如 Nignx,如果你的日志文件不在标准路径中,则需要修改 modules.d/nginx.yml 指定日志文件的路径。参考「Set the paths variab[……]

READ MORE

「IPv6」- Internet Protocol Version 6

认识
20 世纪 80 年代,IETF 发布 RFC791,即 IPv4 协议,标志 IPv4 正式标准化。在此后几十年间,IPv4 协议成为最主流的协议之一。无数人在 IPv4 的基础上开发出了各种应用,并且对这个协议做了各种补充和增强,支撑起了今天繁荣的互联网。IP网络的发展是由业务和应用驱动的,IP协议要求每个网络终端都具有唯一的可寻址的IP地址。
然而,随着互联网的规模越来越大,以及 5G、物联网等新兴技术的发展,IPv4 面临的挑战越来越多。在 2011 年,全球 IPv4 地址已经被 IANA 分配完毕。2011 年 2 月 3 日,IANA 宣布将其最后的 468w 个 IPv4 地址平均分配到全球 5 个 RIR(最后的5个A类IPv4地址段一次性地分配完毕),而后 IANA 再没有可分配的 IPv4 地址,以后获取可用的IPv4地址将非常困难,但是接入公网的用户和设备越来越多;
实践证明 IPv4 是一个非常成功的协议,它本身也经受住了 Internet 从少量计算机组网发展到目前上亿台计算机互联的考验。但该协议是几十年前基于当时的网络规模而设计的。在今天看来,IPv4 的设计者们对于 Internet 的估计和预想显得很不充分。随着 Internet 的扩张和新应用的不断推出,IPv4 越来越显示出它的局限性;
互联网规模的快速扩张是当时完全没有预料到的,特别是近十年来,更是爆炸式增长,已经走进了千家万户,人们的日常生活已经离不开它。但正因为发展太快,IP 地址空间耗尽的问题迫在眉睫;
20 世纪 90 年代,IETF 推出很多技术来推迟 IPv4 地址耗尽发生的时间点,诸如 NAT 与 CIDR 等等。但是,这些过渡方案只能缓解 IPv4 地址不足产生的问题(诸如 缓解地址枯竭的速度 等等),并不能从根本上解决问题。
部署 IPv6 是解决 IPv4 地址不足的最终方案。
IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为 IPng(IP Next Generation)。它是 IETF 设计的一套规范,是 IPv4(Internet Protocol Version 4)的升级版本。
IPv4 Address 枯竭的问题日益严重,这是当前 IPv6 替代 IPv4 的最大动力,IPv6 取代 IPv4 势在必行:

全球 IPv6 部署率显著增长;
主流软件、服务 IPv6 支持度提高;
全球 IPv6 用户数量猛增;
全球网络及域名系统 IPv6 部署情况;

组成
为解决 IPv4 地址短缺问题,IPv6 采用 128-bit 地址,海量的地址空间,满足物联网等新兴业务、有利于业务演进及扩展;
此外还重新设计协议,以解决 IPv4[……]

READ MORE

「ISIS」- SNP: CSNP and PSNP

SNP: CSNP, PSNP
SNP,通过描述全部或部分链路数据库中的 LSP,来同步各LSDB,从而维护 LSDB 的完整与同步;
1)SNP 包括 CSNP 和 PSNP,进一步又可分为 Level-1 CSNP、 Level-2 CSNP、 Level-1 PSNP;evel-2 PSNP;
CSNP, Complete Sequence Number PDU
用途说明
CSNP 包含该设备 LSDB 中所有的 LSP 摘要信息,类似于 OSPF 的 DD 报文;
路由器通过交互 CSNP 来判断是否需要同步 LSDB 数据:
1)在广播网络上,CSNP 由 DIS 定期发送(缺省的发送周期为 10 秒)。
2)在点到点网络上,CSNP 只在第一次建立邻接关系时发送。
报文结构
ISIS.Header.PDU Specific Header

Source ID:发出CSNP报文的路由器的System ID。
Start LSP:CSNP报文中第一个LSP的ID值。
End LSP ID:CSNP报文中最后一个LSP的ID值。
PSNP, Partial Sequence Number PDU
用途说明
PSNP 只包含部分 LSP 的摘要信息(与 CSNP 不同),类似于 OSPF 的 LSR 报文;
1)作为请求报文使用:
—- 当发现 LSDB 不同步时,PSNP 来请求邻居发送新的 LSP
2)作为确认报文使用:
—- 在 P2P Network 中,当收到 LSP 时,使用 PSNP 对收到的 LSP 进行确认;
—- 在 MA Network 中,鉴于 CSNP 的周期发送,因此无需确认机制;
Q:PSNP 的报文结构单一,是如何区分作为请求报文与确认报文使用?
A:WIP
报文结构
ISIS.Header.PDU Specific Header

Source ID:发出PSNP报文的路由器的System ID。[……]

READ MORE

「EMAIL」- 163.com | 126.com

邮箱服务的地址信息
网易企业邮箱收发服务器地址详解
163.com | 个人邮箱
POP, pop.163.com, 110, 995(ssl)
IMAP, imap.163.com, 143, 993(ssl)
SMTP, smtp.163.com, 25, 465(ssl)
163.com | 企业邮箱

发件服务器地址:smtp.qiye.163.com
收件服务器地址:

POP3 收件服务器地址为 pop3.qiye.163.com
IMAP 收件服务器地址为 imap.qiye.163.com

126.com
POP3 服务器 pop.126.com 110
SMTP 服务器 smtp.126.com 25
IMAP 服务器 imap.126.com 143
常见问题记录
Failed to select mailbox: SELECT Unsafe Login. Please contact kefu@188.com for help
imap 连接提示 Unsafe Login,被阻止的收信行为https://www.ietf.org/rfc/rfc2971.txt
问题描述:在添加 163 邮箱时,返回如下错误:

The reported error was “Failed to select mailbox: SELECT Unsafe Login. Please contact kefu@188.com for help”.

原因分析:参考 imap 连接提示 Unsafe Login,被阻止的收信行为 文档。因为 163 实现 RFC 2971 的 ID 命令,要求在操作过程中使用 ID 命令发送客户端信息。但是又未全部实现,因为 RFC 2971 要求 Servers MUST NOT deny access to or refuse service for a client based on information from the ID command. Clients MUST NOT refuse to response. 不能拒绝响应。说到底就是,未完全实现规范的要求。
解决方法:我们是邮件客户端,除非其支持 ID 命令,否则我们无法使用 Evolution (GNOME) 客户端。因此我们不再使用 163 邮箱,改用 Outlook 邮箱,这样就能继续使用 Evolution 邮箱客户端,以及其他有邮箱客户端;
如果是 Java 代码,能够在代码中发送 ID 命令:

Properties props = new Properties();
props.setProperty(“mail.st[……]

READ MORE

「Filebeat」- 写入不同的索引

修改index后,需要修改setup.template.name与setup.template.pattern参数
参考文献
Output to multiple indexes straight from filebeat.yml?Beats Platform Reference [6.5] » Config file format » Config file data types/Format String (sprintf)Filebeat Reference [6.5] » Configuring Filebeat » Load the Elasticsearch index template[……]

READ MORE

「ISIS」- LSP,Link State PDU

用途说明
LSP,用于交换链路状态信息。在 ISIS 中,设备直接发送 LSP 来传送数据,像 OSPF 的 LSU 报文;
LSP 分为两种:
1)Level-1 LSP,由 Level-1 路由器传送;
2)Level-2 LSP,由 Level-2 路由器传送;
3)Level-1-2 路由器则可传送以上两种 LSP;
报文结构
ISIS.Header.PDU Specific Header

PDU Length:长度;
Remaining Lifetime : LSP 的生存时间,以秒为单位;默认 1200s (ISO10589);
LSP ID:由三部分组成,System ID、PseudoNode ID (One Byte)、LSP Fragment Number (One Byte);
1)如果 LSP 数量过多,则会产生分片;如果路由引入,也会产生分片 LSP 报文;
Sequence Number:LSP 的序列号。在路由器启动时所发送的第一个 LSP 报文中的序列号为 1,以后当需要生成新的 LSP 时,新 LSP 的序列号在前一个 LSP 序列号的基础上加 1。更高的序列号意味着更新的 LSP;
Checksum:LSP 的校验和;
ATT(Attachment):由 Level-1-2 路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于 Level-1 LSP 和 Level-2 LSP 中,但实际上此字段只和 Level-1-2 Router 始发的 L1 LSP 有关。L1 Router 将根据 LSP 的 ATT 是否置位来决定是否使用默认路由;
OL(LSDB Overload,1bit):过载标志位。设置了过载标志位的 LSP 虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行 SPF 计算时不会考虑这台路由器。当路由器内存不足时,系统自动在发送的 LSP 报文中设置过载标志位;
IS Type(2bit):生成 LSP 的路由器的类型。两类 LSP 有相同的报文格式,该字段用来指明是 Level-1 还是 Level-2 路由器(01 表示 Level-1;11 表示 Level-2);
报文示例

Frame 15: 150 bytes on wire (1200 bits), 150 bytes captured (1200 bits) on interface -, id 0
IEEE 802.3 Ethernet
Logical-Link Control
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protoc[……]

READ MORE

「ISIS」- Hello, IIH

用途说明
IIH:用于建立和维持邻接关系:
1)在广播网络中:Level-1 IS-IS Router 使用 Level-1 LAN IIH; Level-2 IS-IS Router 使用 Level-2 LAN IIH;
2)在点到点网络中,则使用 P2P IIH;
报文结构
这些字段:属于 PDU Specific Header 部分;处于 PDU Common Header 与 Variable Length Fidleds 之间;

Reserved/Circuit Type:表示路由器的类型(0x01表示L1;0x10表示L2;0x11表示L1/L2; );
Source ID:发出 Hello 报文的路由器的 System ID;
Holding Time: 保持时间。在此时间内如果没有收到邻接发来的 Hello 报文,则中止已建立的邻接关系;
R:保留位;
Priority:选举 DIS 的优先级,7bit,0~127。数值越大,优先级越高;
1)该字段只在 MA Network 中的Hello消息(LAN IIH 消息)携带;
2)P2P Network 的 Hello 消息(P2P IIH 消息)没有此字段,也没有此字段之前的R保留位;
LAN ID / System ID / Designated IS,是 DIS 的 ID(<System ID>.<PseudoNode ID>);
1)该字段只在 MA Network 中的 Hello 消息(LAN IIH 消息)携带;
2)在 P2P Network 的 Hello 消息(P2P IIH消息)没有此字段;
Local Circuit ID:本地链路 ID;
1)该字段只在 P2P Network 的 Hello 消息(P2P IIH 消息)携带;
2)在 MA Network 中的 Hello 消息(LAN IIH消息)没有此字段;
报文示例

Frame 368: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits) on interface -, id 0
IEEE 802.3 Ethernet
Logical-Link Control
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
ISIS HELLO
…. ..11 = Circuit type: Level 1 and 2 (0x3)
0000 00.. = Reserved: 0x00
SystemID {Sender of P[……]

READ MORE

「Elastic Stack」- Kibana

认识
Kibana 是一个开源的数据可视化和分析平台,主要用于与 Elasticsearch 协同工作,帮助用户通过交互式仪表板、图表和地图等方式探索、分析和展示数据。它是 Elastic Stack(原 ELK Stack,包括 Elasticsearch、Logstash、Kibana 和 Beats)的核心组件之一,广泛应用于日志分析、业务智能、安全监控等领域。
组成
依赖 Elasticsearch 服务
Kibana 本身不存储数据,所有数据来自 Elasticsearch 的索引。Elasticsearch 是 Kibana 的默认且唯一原生支持的数据源。所有可视化、查询、聚合操作均通过 Elasticsearch 的 API 实现。
构造
WIP
性质
数据可视化
提供丰富的图表类型(柱状图、折线图、饼图、热力图等)和自定义仪表板。
支持通过 Lens(拖拽式可视化工具)或 TSVB(时间序列可视化生成器)快速创建图表。
数据探索与分析
使用 Discover 功能直接查询 Elasticsearch 中的数据,支持全文搜索、字段过滤和聚合分析。
通过 KQL(Kibana Query Language)或 Lucene 语法 编写查询条件。
日志与指标监控
集成 Logs 和 Metrics 应用,实时查看服务器日志、应用性能指标(APM)等。
结合 Elastic Observability 实现全栈监控。
机器学习与异常检测
内置机器学习工具,自动识别数据中的异常模式(如流量突增、日志错误激增)。
地理空间分析
通过 Maps 功能将数据在地图上可视化,支持区域热力图、轨迹追踪等。
安全与权限管理
提供 Role-Based Access Control (RBAC),控制用户对数据、仪表板的访问权限。
与 Elastic Security 集成,用于 SIEM(安全信息与事件管理)。
支持插件扩展:可安装官方或社区插件
多数据源支持:除了 Elasticsearch,也可通过 Logstash 或 Beats(如 Filebeat、Metricbeat)导入数据。
应用
运维监控:分析服务器日志、网络流量、容器指标。
业务分析:可视化销售数据、用户行为、市场趋势。
安全审计:检测入侵行为、分析安全事件日志。
物联网(IoT):监控设备传感器数据。
参考
搭建 ELK 日志分析平台(下)—— 搭建 kibana 和 logstash 服务器[……]

READ MORE

「IPv6」- 报文格式

报文构成

基本报头 | Fixed Header
1)必须存在;单个;固定 40-BYTE;
2)提供报文转发的基本信息,会被在转发路径上的所有设备解析;Router 通过解析 Fixed-Header 部分就能完成绝大多数的报文转发任务。

Version:版本,4bit;
该字段规定 IP 的版本,其值为 6;
Traffic Class:流类别,流量类型,8bit;
与 QoS 相关;该字段功能和 IPv4.ToS 功能类似,表示 IPv6 数据报文的类或优先级;
Flow Label:流标签,20bit;也有 QoS 相关;
与 IPv4 相比,该字段是新增的。它用来标识这个数据报属于源节点和目标节点之间的一个特定数据报序列,它需要由中间 IPv6 Router 进行特殊处理。流标签 + 源地址,能够区分出唯一的流。通常流标签 + 源 / 目地址,能够区分出唯一的流;
Payload Length:有效载荷长度,16bit;
鉴于 IPv6 Header 固定 40 字节,所以该字段无需标识头部长度。该字段表示 IPv6 数据报有效载荷的长度。有效载荷是指紧跟 IPv6.Header 的数据报的其它部分(扩展报头 + 上层协议数据单元)。能表示最大长度为 65535 BYTE 的有效载荷。如果有效载荷的长度超过这个值,该字段会置 0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示;
Next Header:扩展报头的位置,8bit;
该字段定义紧跟在 IPv6 Fixed-Header 后面的 首个 Extension Header(如果存在)的类型,或者上层协议数据单元中的协议类型;
注意,该字段并非类似于偏移量或偏移地址的值,而是直接用数值指示 Extension Header 的类型;
Hop Limit:类似于 IPv4.TTL 字段,8bit;
它定义 IPv6 Packet 所能经过的最大跳数。每经过一个路由器,该数值减去 1;当该字段的值为 0 时,数据报将被丢弃;
Source Address:源地址,表示发送方的地址,128 bit;
Destination Address:目的地址,表示接收方的地址,128 bit;
IPv6 Header vs. IPv4 Header

取消三层校验:在协议栈中,Layer 2 和 Layer 4 的已提供校验,因此 IPv6 直接取消 IP 的三层校验,节省路由器处理资源;
取消中间节点的分片功能:中间路由器不再处理分片,只在产生数据的源节点处理,省却中间路由器为处理分片而耗费的大量 CPU 资源。中间路由器直接丢包,并返回 ICMPv6 差错报文(针对 MTU 问题,其是通过 PathMTU[……]

READ MORE

「OBSERVABILITY」- Elastic Stack

认识
本部分内容围绕 Elastic Stack 展开,包括一些常用的使用场景、架构方案、组件配置、使用方法、高可用、备份、监控等等方面的内容。这些内容与日志管理、数据汇聚、分析、展示等等方面联系更加的紧密,关注点在于各个组件之间的作用,而不单单是作为搜索引擎使用的 Elasticsearch 本身。有关于作为搜索引擎使用的 Elasticsearch 的内容(搭建、高可用、架构、备份、调优)等等内容,不在该部分进行讨论。
组成
Elastic Stack
官网的「What is the ELK Stack?」介绍了「Elastic Stack」这个词的由来,所以这里就长话短说。
「ELK」,这是以前的名字,它是三个项目(Elasticsearch,Logstash,Kibana)首字母的缩写。「Elasticsearch」是一个搜索和分析引擎。「Logstash」是服务器端数据处理管道,用于采集分析处理数据,然后写入到「Elasticsearch」中。「Kibana」是一个数据可视化平台,使用图表和图形将「Elasticsearch」中的数据可视化。所以数据流大概是「Logstash」->「Elasticsearch」->「Kibana」这样的一个过程,即「收集-存储-展示」。
最开始的时候,只有「Elasticsearch」本身。后来加入「Logstash」和「Kibana」来摄取和展示数据。这时候就有了 ELK 这个名字。后来社区大了,大家的需求又复杂了。“我们只想抓取一个文件”,这时候(2015)引入了轻量级的「Beats」家族。这时候就开始叫「Elastic Stack」了名字了。(什么不用 ELKB、BELK 之类的首字母缩写?这是为了避免「Alphabet soup」的问题)
核心组件
通常「Elastic Stack」由四个部分组成:

数据收集:由「Beat」完成,负责在各个主机节点上进行单纯的收集数据,然后发送到「Logstash」或「ElasticSearch」中。
数据处理:由「Logstash」完成,它是数据处理的管道,可以从多个源中提取和转换数据,然后将其发送到“存储”(例如,Elasticsearch)中。
数据存储:由「ElasticSearch」完成,负责索引日志数据,提供日志查询,是「Elastic Stack」的心脏。
前端展示:由「Kibana」完成,负责显示「ElasticSearch」中的数据及负载等等信息。

下面将依序简单介绍每个组件的用途。
Logstash
负责日志的搜集、分析、过滤,支持多种的数据获取方式。将过滤之后的数据发送给存储库,这里我们使用的是 ElasticSearch 组件,当然还支持其他的存储库。
Elasticsearch
开源[……]

READ MORE

「ISIS」- 认证

IS-IS认证是基于网络安全性的要求而实现的一种认证手段,通过在IS-IS报文中增加认证字段对报文进行认证。当本地路由器接收到远端路由器发送过来的IS-IS报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的。
认证范围
根据报文的种类,认证可以分为以下三类:
接口认证:在接口视图下配置,对Level-1和Level-2的Hello报文进行认证。
区域认证:在IS-IS进程视图下配置,对Level-1的CSNP、PSNP和LSP报文进行认证。
路由域认证:在IS-IS进程视图下配置,对Level-2的CSNP、PSNP和LSP报文进行认证。
接口认证
Hello报文使用的认证密码保存在接口下,发送带认证TLV的认证报文,互相连接的路由器接口必须配置相同的口令。
区域认证
区域内的每一台L1路由器都必须使用相同的认证模式和具有共同的钥匙串。
路由域认证
IS-IS域内的每一台L2和L1/L2类型的路由器都必须使用相同模式的认证,并使用共同的钥匙串。
对于区域和路由域认证,可以设置为SNP和LSP分开认证。
本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查。
本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查。
本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查。
本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查。
认证方式
根据报文的认证方式,可以分为以下四类:
简单认证:将配置的密码直接加入报文中,这种加密方式安全性较其他两种方式低。
MD5认证:通过将配置的密码进行MD5算法加密之后再加入报文中,提高密码的安全性。
Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性。
HMAC-SHA256认证:通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性。[……]

READ MORE

「ISIS」- DIS and Pseudonodes (MA Network)

DIS and Pseudonodes
在 MA Network 中,IS-IS 需要在所有的路由器中选举某个路由器作为 DIS(Designated Intermediate System)。DIS 用来创建和更新伪节点(PseudoNode),并负责生成 PseudoNode 的 LSP(用来描述这个网络上有哪些网络设备);
Level-1 和 Level-2 的 DIS 是分别选举的,DIS 的选举规则如下:
1)DIS 优先级数值最大的被选为 DIS;用户可以为不同级别的 DIS 选举设置不同的优先级;
2)如果优先级数值最大的路由器有多台,则其中 MAC 地址最大的路由器会成为 DIS;
DIS 发送 Hello PDU 的时间间隔是普通路由器的 1/3,这样可以确保 DIS 出现故障时能够被更快速地被发现(在 ISIS 中,没有 Backup DIS 设备);
PseudoNode 是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在 IS-IS 中,PseudoNode 用 DIS 的 System ID 和 Circuit ID(非 0 值)标识;

引入 PseudoNode 设备,能够减小 LSPDB 记录:
1)设备与伪节点间的连接、开销;伪节点连接的所有设备(网络拓扑信息);
2)此时,设备无需再维护两两之间的记录信息;
DIS(ISIS) vs. DR(OSPF)
1)优先级对选举的影响:
—- 在 IS-IS 广播网中,优先级为 0 的路由器也参与 DIS 的选举;
—- 在 OSPF 中,优先级为 0 的路由器则不参与 DR 的选举;
2)角色抢占:
—- 在 IS-IS 广播网中,当有新的路由器加入,并符合成为 DIS 的条件时,这个路由器会被选中成为新的 DIS,原有的伪节点被删除。此更改会引起一组新的 LSP 泛洪,但不会影响设备间的邻接关系;
—- 而在 OSPF 中,当一台新路由器加入后,即使它的 DR 优先级值最大,也不会立即成为该网段中的 DR。否则会发生邻接关系变更;
3)设备间的关系:
—- 在 IS-IS 广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非 DIS 路由器之间也会形成邻接关系;
—- 而在 OSPF 中,路由器只与 DR 和 BDR 建立邻接关系;[……]

READ MORE

「Beats」

Beat
其实 Beats 家族有7个成员,而我们经常用到的日志采集工具「Filebeat」就是其中之一。
我们所说的「Filebeat」是一个轻量级日志采集器。在早期的「ELK」架构中,使用「Logstash」收集、解析日志,但是「Logstash」对内存、CPU、IO等资源消耗比较高。与「Logstash」相比,「Filebeat」所占系统的CPU和内存几乎可以忽略不计。另外,还有「Metricbeat」、「Heartbeat」、「Winlogbeat」等等,后面会详细介绍。
这些工具分别是:
1)Packetbeat: 网络数据(收集网络流量数据)
2)Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
3)Filebeat: 日志文件(收集文件数据)
4)Winlogbeat: windows事件日志(收集 Windows 事件日志数据)
5)Auditbeat:审计数据 (收集审计日志)
6)Heartbeat:运行时间监控 (收集系统运行时的数据)
7)Functionbeat:在云提供商的功能即服务(FaaS)平台中部署功能,以收集,发送和监控来自云服务的数据。(出于测试阶段)[……]

READ MORE

「ISIS」- 快速扩散(Fast Flood)

问题描述
正常情况,当 ISIS-Router 收到其它 Router 发来的 LSP 时,如果此 LSP 比本地 LSDB 中相应的 LSP 要新,则更新 LSDB 中的 LSP,并用一个定时器定期将 LSDB 内已更新的 LSP 扩散给其他节点。
解决方案
LSP-Fast-Flood(快速扩散),改进该方式。
原理简述
使能该特性的设备,当收到一个或多个较新的 LSP 时,在路由计算前,先将小于指定数目的 LSP 扩散出去,加快 LSDB 的同步过程。
特性特征
该特性可以能够 LSP 的扩散速度。
这种方式在很大程度上可以提高整个网络的收敛速度。
配置案例
配置 LSP 快速扩散:

# lsp-count:指定每个接口一次扩散 LSP 的最大数量。整数形式,1~15,default=5;
# max-timer-interval interval:指定 LSP 扩散的最大间隔时间。整数形式,10~50000,单位是毫秒。default=10;
# level-1:表示在 Level-1 中使能此特性。如果命令中没有指定级别,则缺省同时在 Level-1 和 Level-2 中使能此功能。
# level-2:表示在 Level-2 中使能此特性。如果命令中没有指定级别,则缺省同时在 Level-1 和 Level-2 中使能此功能。
[Huawei-isis-1] flash-flood [ lsp-count | max-timer-interval interval | [ level-1 | level-2 ] ]

注意事项:用户能够指定每次扩散的 LSP 数量,这个数量是针对所有 ISIS 接口的。
如果需要发送的 LSP 的数量大于 lsp-count,则就发送 lsp-count 个 LSP;
如果已配置定时器,在路由计算前,如果该定时器未超时,则立即扩散;否则,在该定时器超时后,发送。[……]

READ MORE

「Kubernetes」- 使用 cert-manager 申请 Let’s Encrypt 证书

配置案例
HTTP01 – cert-manager Documentation
通过 HTTP-01 质询,也能够完成证书申请,其优点是部署简单。

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
preferredChain: “”
privateKeySecretRef:
name: letsencrypt-issuer-account-key
server: https://acme-v02.api.letsencrypt.org/directory
solvers:
– http01:
ingress:
ingressClassName: nginx

注意事项
1)当域名所有权时,Cert Manager 会创建 Pod 来访问域名,流量是从 Pod ⇔ Ingress ⇔ Pod,所以需要确认网络联通。
场景 | 多个 Ingress 控制器
在我们的场景中,集群存在多个 Nginx Ingress Controller 实例,其服务与不同的业务场景。
在申请证书时,我们需要确保 Cert Manager 使用正确的 Ingress Class 来完成质询。

原因在于,如果 Ingress 使用错误的 Ingress Class <B> 参数,则相关的 nginx 配置将写入错误的 Ingress Controller <B> 之上。但是域名是解析 Ingress Controller <A> 的,所以无法正常访问,进而无法完成 HTTP 质询。

我们使用多个不同的 Cluster Issuer 来处理该问题:



spec:
acme:
solvers:
– http01:
ingress:
ingressClassName: nginx-01
ingressTemplate:
metadata:
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: “false”



spec:
acme:
solvers:
– http01:
ingress:
ingressClassName: nginx-02
in[……]

READ MORE

「Elasticsearch」- 监控与日志

设置 GC 日志
Elasticsearch Reference [6.3]
Set up Elasticsearch » Important Elasticsearch configuration » GC loggingElasticsearch Reference [6.3] » Set up Elasticsearch » Important Elasticsearch configuration » GC logging
默认开启,已配置轮转,每个文件最大 64M,总共消耗 2GB 磁盘空间。
修改日志配置
Elasticsearch Reference [7.7] » Set up Elasticsearch » Configuring Elasticsearch » Logging configurationElasticsearch Reference [6.3] » Set up Elasticsearch » Configuring Elasticsearch » Logging configuration
官方文档简记(学习笔记)
官方文档链接:Elasticsearch Reference [7.7] » Set up Elasticsearch » Configuring Elasticsearch » Logging configuration
使用 Log4j 2 记录,可以使用 /etc/elasticsearch/log4j2.properties 配置文件;
可以使用以下三个选项:${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}, ${sys:es.logs.node_name}
官方文档给出配置示例,并解释配置含义
日志归档压缩类型:
可以修改配置以使用不同的日志压缩类型,即轮转产生的日志归档文件使用何种格式压缩
保留特定时间内的日志:
如果想保留特定时间内的日志,可以使用 DefaultRolloverStrategy 配置,参考官方文档说明;
多个配置文件:
可以使用多个日志文件,它们会被自动合并,只要在 Elasticserch 配置目录或其子目录;
配置文件格式:
配置文件的 logger 部分设置 Java 包的日志等级;配置文件的 appender 部分设置日志的写入位置;
修改 Log4j 2 配置:
详细配置信息需要参考 Log4j 2 官方文档:Log4j documentation
设置日志等级:
官方文档给出四种方式来设置日志等级;
弃用功能的日志:
如果某个特性已经被弃用,当启用弃用日志(deprecation logging)将显示已经弃用的功能;
使用 JSO[……]

READ MORE

「ISIS」- 邻接关系建立

邻接关系的建立条件
在 IS-IS 中,按如下原则建立邻接关系(无邻接关系):
形成 L1 邻接关系:

路由器必须具有 L1 功能;
路由器 Area ID 必须一致;

形成 L2 邻接关系:

路由器必须具有 L2 功能;

其他条件:

链路两端 IS-IS 接口的网络类型必须一致;
链路两端 IS-IS 接口的地址必须处于同一网段(默认情况下);

针对节点网络地址的要求
由于 IS-IS 是直接运行在数据链路层上的协议,并且最早设计是给 CLNP 使用的,IS-IS 邻接关系的形成与 IP Address 无关。但在实际的部署中,在 IP Network 上运行 IS-IS 协议时,需要检查对方的 IP Address 的。
一般情况下,一个接口只需配置一个 Main IP 地址,但在有些特殊情况下需要配置 Sub IP 地址。比如,一台路由器通过一个接口连接了一个物理网络,但该物理网络的计算机分别属于 2 个不同的网络,为了使路由器与物理网络中的所有计算机通信,就需要在该接口上配置一个 Main IP 地址和一个 Sub IP 地址。路由器的每个三层接口可以配置多个 IP 地址,其中一个为 Main IP 地址,其余为 Sub IP 地址,每个三层接口最多可配置 31 个从 IP 地址.
当链路两端 IS-IS 接口的地址不在同一网段时,如果配置接口对接收的 Hello 报文不作 IP 地址检查,也可以建立邻接关系;
zhendui 点到点接口,可以配置接口忽略 IP 地址检查;
对于以太网接口,需要将以太网接口模拟成点到点接口,然后才可以配置接口忽略 IP 地址检查;
如果接口配置 Sub IP Address,那么只要双方有某个 IP Address(Main IP 或 Sub IP)在同个网段,就能建立邻接,不一定要 Main IP 相同;
邻接关系的建立过程
两台运行 IS-IS 的路由器,在交互协议报文实现路由功能前,必须首先建立邻接关系。在不同类型的网络上,IS-IS 的邻接建立方式并不相同;
在广播网络中,邻接关系建立过程
在广播网络中,使用三次握手建立邻接关系;
Down ⇒ Initial ⇒ Up
Down:邻接关系的初始状态;
Initial:收到 IIH,但是报文中的邻接列表未包含路由器自身的 System ID;
UP:收到 IIS,且邻接列表中包含路由器自身的 System ID;

R1 及 R2 通过千兆以太接口互联,这两台直连的 Level-1 路由器建立邻接关系的过程如下:
1)在 Down 状态下,R1 组播发送 Level-1 LAN IIH,此报文中邻接列表为空;
2)R2 收到此报文后,将[……]

READ MORE

「IPv6」- 概念、术语

数据转发 | 报文处理
控制平面 | IPv6 Routing
IPv6 Network 支持静态路由和动态路由协议:
静态路由

IPv6 与 IPv4 的静态路由的配置方式类似,几乎没有差异;

动态路由

OSPFv3:针对 IPv6 设计,基于链路运行,单链路支持多实例;取消 LSA 头部 IP 地址信息,实现与网络层协议解耦;LSA 内新定义泛洪范围字段,支持未知 LSA 的处理;新增 LSA 支持 IPv6 路由发布;
ISIS for IPv6:非新协议,仅简单扩展原 ISIS 协议,IS-IS Router 间实现互通;新增 1 种 NLPID(网络层协议标识)宣告自身支持 IPv6;新增 2 种 TLV,支持宣告 IPv6 网络可达性和接口 IPv6 地址信息;
BGP4+:非新协议,是在 MP-BGP 上支持 IPv6 地址族;实现 BGP4+ Router 间能够互通;新添 2 种 NLRI(网络层可达信息),支持 发布 IPv6 可达路由、下一跳信息、撤销不可达路由;
PIM:非新协议,PIM 协议本义即为协议无关组播,仍为 PIMv2 版本,唯一区别在于协议报文地址及组播数据报文地址均使用 IPv6 地址;

数据平面

基本包头:长度固定,以提升路由转发效率;
扩展包头:实现其他需求,按需解析;[……]

READ MORE