「Java」- 常用代码段

How to Set the Look and Feel
How to Set the Look and FeelJava Look and Feel (L&F)
程序运行
参数启动顺序
System Propertieshttps://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
The java Commandhttps://docs.oracle.com/en/java/javase/22/docs/specs/man/java.html#overview-of-java-options
java [options] -jar jarfile [args …]

args … | Optional: Arguments following mainclass, source-file, -jar jarfile, and -m or –module module/mainclass are passed as arguments to the main class.

环境变量
JDK_JAVA_OPTIONShttps://docs.oracle.com/en/java/javase/22/docs/specs/man/java.html#using-the-jdk_java_options-launcher-environment-variable
缓存 | Cache
JetCache | a Java cache frameworkhttps://github.com/alibaba/jetcache
Lettuce – Advanced Java Redis clienthttps://github.com/redis/lettuce
RedisURI | https://github.com/redis/lettuce/wiki/Basic-usage#redisuri[……]

READ MORE

「ISIS」- 平滑重启(Graceful Restart)

问题描述
设备发生主备倒换后,由于没有保存任何重启前的邻居信息,因此一开始发送的 Hello 报文中不包含邻居列表。此时邻居(Helper)设备收到后,执行两次握手机制进行邻居关系检查,发现在重启(Restarter)设备的 Hello 报文的邻居列表中没有自己,这样邻居关系将会断掉。
同时,邻居设备通过生成新的 LSP 报文,将拓扑变化的信息泛洪给区域内的其它设备,区域内的其他设备会基于新的链路状态数据库进行路由计算,从而造成路由中断或者路由环路。
解决方案
IETF 针对这种情况为 IS-IS 制定了 GR 规范(RFC3847),对保留 FIB 表和不保留 FIB 表的协议重启都进行了处理,避免协议重启带来的路由震荡和流量转发中断的现象。
IS-IS GR 是一种支持 GR 能力的高可靠性技术,可以实现数据的不间断转发。
原理简述
为了实现 GR 特性,IS-IS 引入 211 号 TLV(Restart TLV)和 T1、T2、T3 三个定时器。
211 号 TLV(Restart TLV)
Restart TLV 是包含在 IIH(IS-to-IS Hello PDUs)报文中的扩展部分。支持 IS-IS GR 能力的设备的所有 IIH 报文都包含 Restart TLV。
在 Restart TLV 中,携带了协议重启的一些参数:
Type:1 Byte,TLV 的类型。值为 211 表示是 Restart TLV。
Length:1 Byte,TLV 值的长度。
RA(Restart Acknowledgement):重启应答位;1 bit;设备发送的 RA 置位的 Hello 报文用于通告邻居确认收到了 RR 置位的报文。
SA(Suppress adjacency advertisement):抑制发布邻接关系位,1 bit;用于发生 Starting 的设备请求邻居抑制与自己相关的邻居关系的广播,以避免路由黑洞。
RR(Restart Request):重启请求位;1 bit;设备发送的 RR 置位的 Hello 报文用于通告邻居自己发生 Restarting/Starting,请求邻居保留当前的 IS-IS 邻接关系并返回 CSNP 报文。
Remaining Time:邻居保持邻接关系不重置的时间;2 Byte;邻居保持邻接关系不重置的时间,单位是秒。当 RA 置位时,这个值是必需的。
定时器
T1 定时器:如果 GR Restarter 已发送 RR 置位的 IIH 报文,但直到 T1 定时器超时还没有收到 GR Helper 的包含 Restart TLV 且 RA 置位的 IIH 报文的确认消息时,会重置 T1 定时器并继续发送包含 Restart TLV 的 IIH 报文。当收到确认报文或者[……]

READ MORE

「ISIS」- I-SPF,Incremental SPF(针对节点变化的场景)

问题描述
针对使用 SPF 算法进行路由计算:当网络拓扑中有一个节点发生变化时,SPF 算法需要重新计算网络中的所有节点,计算时间长,占用过多的 CPU 资源,影响整个网络的收敛速度。
解决方案
I-SPF 改进 SPF 算法,除了第一次 SPF 计算时需要计算全部节点外,之后每次都通过 I-SPF 计算受到影响的节点,而最后生成的最短路径树与原来的算法所计算的结果相同,大大降低了CPU 的占用率,提高了网络收敛速度。
原理简述
当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快路由的计算。
应用场景
在 ISIS 网络中,I-SPF 和 PRC 结合使用:
1)如果 I-SPF 计算后的最短路径树改变,PRC 会只处理那个变化的节点上的所有叶子(路由)。
2)如果经过 I-SPF 计算后的最短路径树并没有变化,则 PRC 只处理变化的叶子信息。比如一个节点使能一个 ISIS 接口,则整个网络拓扑的最短路径树是不变的,这时 PRC 只更新这个节点的接口路由,从而节省 CPU 占用率。
场景介绍
某网络运行 ISIS,网络收敛后,如图所示是以 R1 为根的最短路径树:
1)此时 R1 访问节点 R5 时,通过「R1 下行链路的出接口,R3 上行链路接口的 IP 地址」到达该目的地;
2)R5 下游新增设备 R6,R6 开启 ISIS,即 ISIS 网络内有新增网络节点。

在路由计算中,节点则代表路由器,叶子代表路由,I-SPF 只处理变化的节点信息。
I-SPF 计算:
R5 和 R6 全网泛洪 LSP,包含新增邻居关系。
R1 收到该 LSP 后会对变化的节点 R5 和 R6 进行 I-SPF 计算,生成新的最短路径树节点,而其他节点不变。
因此 R1 访问节点 R5 和 R6 时,通过「R1 下行链路的出接口,R3 上行链路接口的 IP 地址」到达该目的地。
配置案例
I-SPF 是个特性,不需要单独配置;[……]

READ MORE

「Elasticsearch」- 高可用与集群

相关链接
How many shards should I have in my Elasticsearch cluster?Highly Available ELK (Elasticsearch, Logstash and Kibana) Setup
节点类型[……]

READ MORE

「ISIS」- LSP 分片(LSP Fragmentation)

解决方案
当 ISIS 要发布的 PDU 中信息量太大时,ISIS 路由器将会生成多个 LSP 分片,用来携带更多的 ISIS 信息。
ISIS LSP 分片由 LSP ID 中的分片号(LSP Number)字段进行标识,这个字段的长度是 1Byte。所以,一个 ISIS 进程最多可产生 256 个 LSP 分片,携带的信息量有限。
概念术语
ISIS 可以配置 Virtual System ID ,并生成虚拟 ISIS 的 LSP 报文来携带路由等信息。
初始系统(Originating System):初始系统是实际运行 ISIS 的路由器。允许一个单独的 ISIS 进程像多个虚拟路由器一样发布 LSP,而“Originating System”指的是那个“真正”的 ISIS 进程。
系统 ID(Normal System-ID):初始系统的系统 ID。
虚拟系统(Virtual System):由附加系统 ID 标识的系统,生成扩展 LSP 分片。这些分片在其 LSP ID 中携带附加系统 ID。
附加系统 ID(Additional System-ID):虚拟系统的系统 ID,由网络管理器统一分配。每个附加系统 ID 都允许生成 256 个扩展的 LSP 分片。
24 号 TLV(IS Alias ID TLV):LSP 分片携带该 TLV 信息,用来表示 Originating System 与 Virtual System 的关系。
使能分片扩展功能之后,如果存在由于报文装满而丢失的信息,系统会提醒重启 ISIS;
重启之后,初始系统会尽最大能力装载路由信息,装不下的信息将放入虚拟系统的 LSP 中发送出去,并通过 24 号 TLV 来告知其他路由器此虚拟系统和自己的关系。
附加系统 ID 和系统 ID 都必须在整个路由域中唯一。
报文格式

原理简述
在 ISIS 中,每个系统 ID 都标识一个系统,每个系统都最多可生成 256 个 LSP 分片。通过增加 Additional System-ID,可以最多配置 50 个虚拟系统,从而使得 ISIS 进程最多可生成 13056 个 LSP 分片。
ISIS-Router 可以在两种模式下运行 LSP 分片扩展特性:
Mode-1
用于网络中的部分路由器不支持 LSP 分片扩展特性的情况。

如图:R1 将一部分路由信息放入 R1-1 和 R1-2 的 LSP 报文中向外发送。R2 收到 R1、R1-1 和 R1-2 的报文时,认为对端有三台独立的路由器,并进行正常的路由计算。同时 R1 到 R1-1 和 R1-2 的开销都是 0,所以 R2 到 R1 的路由开销值与 R2 到 R1-1 和 R1-2 的路由开销值都相等。
工作原理:
1)虚[……]

READ MORE

「Elasticsearch」- 安装与升级(基本流程)

该部分将介绍如何安装与升级 Elasticsearch 服务。
详细安装过程请参考官方「6.4/Installing Elasticsearch」手册,该手册包含各平台的安装方法。本部分内容也是基于官方文档整理。
版本选择
The latest stable version of Elasticsearch can be found on the Download Elasticsearch page.
Other versions can be found on the Past Releases page.
Elasticsearch 6.3.0Kibana 6.3.0
7.x | https://www.elastic.co/guide/en/elasticsearch/reference/7.17/es-release-notes.html
硬件要求
Administration, Monitoring, and DeploymentHardware RecommendationHardware requirement for elasticsearch
部署方式[……]

READ MORE

「Terraform」- 云平台的基础设施自动化 | 基础设施即代码工具

认识
使用 Terraform 实现任何云平台的基础设施自动化,可在任何云平台或数据中心配置和管理资源。简而言之,其为云平台的统一管理工具,但又不止如此,……
Terraform is an infrastructure as code tool that lets you build, change, and version infrastructure safely and efficiently. This includes low-level components like compute instances, storage, and networking; and high-level components like DNS entries and SaaS features.
官网:https://www.terraform.io/
文档:https://developer.hashicorp.com/terraform?product_intent=terraform
仓库:https://github.com/hashicorp/terraform
组成
Configuration Language
https://developer.hashicorp.com/terraform/language

terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 4.16”
}
}

required_version = “>= 1.2.0”
}

provider “aws” {
region = “us-west-2”
}

resource “aws_instance” “app_server” {
ami = “ami-830c94e3”
instance_type = “t2.micro”

tags = {
Name = “ExampleAppServerInstance”
}
}

terraform {}

source | defines an optional hostname, a namespace, and the provider type. Terraform installs providers from the Terraform Registry by default. In this example configuration, the aws provider’s source is defined as hashicorp/aws, which[……]

READ MORE

「Filebeat」- 使用UDP输入 + JSON解析 + 写入Elasticsearch

要实现的功能
使用Filebeat监听UDP端口,然后解析传入的JSON数据,并写入Elasticsearch中。
修改Filebeat配置

filebeat.inputs:
– type: udp
enable: true
host: “0.0.0.0:2679”
processors:
– decode_json_fields:
fields: [“message”]
target: “zlog”

参考文献
Filebeat 6.3.1 UDP + JsonFilebeat优化实践Filebeat Reference [6.5] » Configuring Filebeat » Configure inputs » UDP inputFilebeat Reference [6.5] » Configuring Filebeat » Filter and enhance the exported dataFilebeat Reference [6.5] » Configuring Filebeat » Filter and enhance the exported data » Decode JSON fieldsFilebeat Reference [6.5] » Configuring Filebeat » Configure the output » Configure the Elasticsearch output[……]

READ MORE

「Maven」- 常见问题处理

… package com.sun.javafx.binding does not exist …
Specify JDK for Maven to useJava Development Kit for ARM Release Notes 8 Update 33Wikipedia/JavaFXRemoved from JDK 11, JavaFX 11 arrives as a standalone moduleJavaFX will be removed from the Java JDKWhy is JavaFX is not included in OpenJDK 8 on Ubuntu Wily (15.10)?
在进行 Jenkins 构建时,产生如下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project foo-manage: Compilation failure: Compilation failure:
[ERROR] /var/lib/jenkins/workspace/foo-manage_test/src/main/java/com/foo/manage/third/util/Validator.java:[8,29] error: package com.sun.javafx.binding does not exist
[ERROR] /var/lib/jenkins/workspace/foo-manage_test/src/main/java/com/foo/manage/utils/app/Configurations.java:[4,26] error: package com.sun.javafx.geom does not exist
[ERROR] /var/lib/jenkins/workspace/foo-manage_test/src/main/java/com/foo/manage/utils/msg/MessageCategory.java:[3,29] error: package com.sun.javafx.binding does not exist
[ERROR] /var/lib/jenkins/workspace/foo-manage_test/src/main/java/com/foo/manage/third/util/Validator.java:[113,15] error: cannot find symbol
[ERROR] class Validator
[ERRO[……]

READ MORE

「Elasticsearch」- 集群搭建(Elasticsearch 7.6.2)

注意事项
1)版本不同,集群配置方法不同。例如 Elasticsearch 6.8.6 与 7.6.2 的集群配置方法是不同的。
操作系统设置
关闭 swap 分区
修改文件描述符数量
设置虚拟内存
调整线程数量
修改配置文件
There are two important discovery and cluster formation settings that should be configured before going to production so that nodes in the cluster can discover each other and elect a master node:discovery.seed_hosts,cluster.initial_master_nodes

network.host: 0.0.0.0

discovery.seed_hosts: [“10.10.50.217”, “10.10.50.218”, “10.10.50.219”]
cluster.initial_master_nodes: [“esclus-01”, “esclus-02”, “esclus-03”]

注意事项,参数 cluster.initial_master_nodes 中的参数要与节点名称对应。
参考文献
Elasticsearch Reference [7.6]/Important discovery and cluster formation settings[……]

READ MORE

「ISIS」- 多实例和多进程

问题描述
网络中可能需要同时承载不同的业务,为保证各业务的安全性,需要将业务进行隔离,
解决方案
此时,可以配置与 VPN 实例绑定。
ISIS 多实例是指在同一台路由器上,可以配置多个 VPN 实例与多个 ISIS 进程相关联。
ISIS 多进程,指在同个 VPN 下(或者同在公网下)可以创建多个 ISIS 进程,每个进程之间互不影响,彼此独立。不同进程之间的路由交互相当于不同路由协议之间的路由交互。
特性特征
ISIS 多实例和多进程的特点如下:
1)ISIS 多进程共用同一个全局路由表。而 ISIS 多实例使用 VPN 中的路由表,并且每个 VPN 都有自己单独的路由表。
2)ISIS 多进程允许为一个指定的 ISIS 进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台路由器有多个 ISIS 协议进程,每个进程负责唯一的一组接口。
2)ISIS 进程在创建时可以选择绑定一个 VPN 实例,于是这个 ISIS 进程就与此 VPN 实例相关联,并且只接收和处理此 VPN 实例内的事件。当 VPN 实例删除时,ISIS 进程也会跟着被删除。
应用场景
ISIS 多实例和多进程的典型应用是在 VPN 场景。
如图,同一台 PE 设备连接了两个不同的 VPN 客户,并且 PE 和 CE 之间均部署 ISIS,因此可以通过在 PE 设备上部署多进程实现 VPN 客户之间的隔离。
配置案例

[Huawei] isis [ process-id ] [ vpn-instance vpn-instance-name ]
process-id:指定 IS-IS 进程号。如果不指定进程,则启动进程号为 1 的 IS-IS 进程。整数形式,取值范围是 1~65535。缺省值是 1。
vpn-instance vpn-instance-name:指定 VPN 实例名。如果不指定此参数,则就不会配置 VPN 实例与相应的 IS-IS 进程相关联。字符串形式,区分大小写,不支持空格,长度范围是 1~31。当输入的字符串两端使用双引号时,可在字符串中输入空格。[……]

READ MORE

「Kubernetes」- 在 Ingress 中,使用 cert-manager 证书

问题描述
当我们在 Kubernetes Cluster 中部署 cert-manager 之后,便能够在 Ingress 中使用 cert-manager 提供 TLS 证书。
该笔记将记录:在 Kubernetes Cluster 中,如何配置 Ingress 使用 cert-manager 来提供 TLS 证书。
解决方案
第一步、部署 Web 应用
我们需要部署简单的 Web 应用,来作为实验环境。后面的操作将基于该 Web 应用,这里不再深入展开 Web 应用的部署。
第二步、修改 Ingress 资源
我们需要做的便是修改 Ingress 资源:

cp -v myweb-ingress.yaml myweb-ingress.yaml.backup

cat > myweb-ingress.yaml <<EOF
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: myweb-ingress
annotations:
kubernetes.io/ingress.class: “nginx”
# 修改此处,添加 Issuer 或 ClusterIssuer 定义
cert-manager.io/cluster-issuer: “letsencrypt” # 根据自己的 ClusterIssuser 定义来填写
spec:
# 添加 TLS 配置
tls:
– hosts:
– k8s-ingress.example.xyz
# cert-manager 将使用该字符串作为 Secret 名称
secretName: myk8singress-cert
rules:
– host: “k8s-ingress.example.xyz”
http:
paths:
– path: /
backend:
serviceName: myweb
servicePort: 8080
EOF

kubectl apply -f ./myweb-ingress.yaml

如果需要使用泛域名证书,则配置:

spec:
tls:
– hosts:
– *.example.xyz
secretName: myk8singress-cert

# 在官方文档中,我们没有找到相关的配置说明
# 但是,既然 Cert Manager 能够根据 Ingress 创建对应的 Certificate,那么我们猜测 Cert Manager 借助 tls.host[……]

READ MORE

「VS Code」- Java and Maven

关闭自动 Maven 项目导入
VS Code 的 Java 扩展默认会自动检测并导入 Maven 项目。

Java > Import: Maven > Enabled
java.import.maven.enabled

手动导入 Maven 项目:Ctrl + Shift + P → Java: Import Maven Projects。
关闭自动构建(Build Automatically)
VS Code 默认会监视文件更改并触发自动构建。要关闭:

java.autobuild.enabled
Java > Build: Auto Build

手动构建:Ctrl + Shift + P → Java: Build Workspace。
关闭自动依赖更新
如果不想让 VS Code 自动更新 Maven 依赖:

“java.configuration.updateBuildConfiguration”: “disabled”

手动更新依赖:右键 pom.xml → Update Project。
关闭 Java 语言服务器的自动处理
如果 Java 语言服务器(Eclipse JDT)的行为过于激进:

“java.format.enabled”: false, // 关闭自动格式化
“java.saveActions.organizeImports”: false, // 关闭自动整理 import

参考
DeepSeek / 如何关闭自动处理[……]

READ MORE

「ISIS」- for IPv6

描述
IS-IS 最初是为 OSI 网络设计的一种基于链路状态协议的动态路由协议。之后为了提供对 IPv4 的路由支持,扩展应用到 IPv4 网络,称为集成 IS-IS;
IS-IS 报文有以下几种类型:
Hello PDU:Hello Protocol Data Unit,Hello 报文
LSP:Link State PDUs,链路状态报文
SNP:Sequence Number PDUs,序列号报文

IS-IS 报文中的变长字段部分是多个 TLV(Type-Length-Value)三元组,使用 TLV 结构构建报文使 IS-IS 更具灵活性和扩展性,增加新特性只需要增加新 TLV 即可;
原理
为了支持 IPv6 路由的处理和计算,IS-IS 新增 2 个 TLV 和 1 个 NLPID(Network Layer Protocol Identifier,网络层协议标识符);
新增 232 号 TLV(IPv6 Interface Address)
相当于 132 号 TLV(用于描述 IPv4 接口地址),只不过把原来的 32 bit 的 IPv4 地址改为 128 bit 的 IPv6 地址;
在不同的 PDU 中,接口地址字段的内容是不同的;
1)对于 Hello 报文,“接口地址”只能包含发送 Hello 报文接口的链路本地地址;
2)对于 LSP 报文,“接口地址”只能包含分配给设备接口的非链路本地地址;
Type:8 bit,TLV 类型,此时值为 232(0xE8);
Length:8 bit,TLV 的 Value 部分长度;
Interface Address:128 bit,IPv6 地址;
新增 236 号 TLV(IPv6 Reachability)
相当于 128 号和 130 号 TLV,通过 X-bit 来标识 IPv6 内 / 外部可达性信息;

236 号 TLV 描述的是源路由器可达的 IPv6 网络前缀及路径开销信息;
上述 IPv6 Reachability TLV 在 LSP 中可以出现任意次数(包括 0 次)。 其中,链路本地前缀不是用这个 TLV 来发布;
Type:8 bit,TLV 类型,此时值为 236(0xEC);
Length:8 bit,TLV 的 Value 部分长度;
Metric:32 bit,度量值;
U:1 bit,Up/Down 位,标识这个前缀是否是从高 Level 通告下来的;
X:1 bit,External Original 位,标识这个前缀是否是从其他路由协议中引入的;
S:1 bit,Sub-TLV Present 位,子 TLV 标识位(可选);
R:5[……]

READ MORE

「ISIS」- 高级特性

问题描述
该笔记将记录:ISIS 高级特性,包括 快速收敛机制、路由控制、其他特性 等等。
解决方案
ISIS 是基于链路状态的内部网关路由协议,运行该协议的路由器通过同步 LSDB,采用 SPF 算法计算最优路由。
当网络拓扑发生变化时,ISIS 支持多种快速收敛和保护机制,能够降低网络故障导致的流量丢失。
为了实现对路由表规模的控制,ISIS 支持路由选路及路由信息的控制,能够减少特定路由器路由表的大小。
快速收敛(Fast Convergence)
ISIS 快速收敛是为了提高路由的收敛速度而做的扩展特性,包括:
1)Incremental SPF:I-SPF,增量最短路径优先算法;
2)LSP Fast Flood:LSP 快速扩散;
3)PRC => 与 OSPF 的 PRC 类似,这里不再赘述;
4)智能定时器 => 与 OSPF 的 Intelligent Timer 类似,这里不再赘述;
同时, ISIS 支持故障恢复快速收敛,例如
1)通过 ISIS Auto FRR 实现备份链路的快速切换; ⇒ 与 OSPF 的 IP FRR 类似,这里不再赘述;
2)也可以与 BFD Association 实现对故障的快速感知; ⇒ 与 OSPF 的 BFD Association 类似,这里不再赘述;
路由控制(Rotue Control)
在实际应用中, ISIS 根据 SPF 算法计算出来的路由有时并不能满足网络所需,可能出现如下弊端:如路由表中条目过多降低路由查找的速度、网络中链路利用率不均衡等,这些都不能很好地满足网络规划和流量管理的需要。为了达到优化 ISIS 网络和便于流量管理的目的,需要对网络中的路由进行更加精确的控制。
ISIS 的路由控制包括:
1)调整 ISIS 的优先级
2)调整 ISIS 的接口开销
3)Equal-cost Route:等价路由
4)ISIS 路由渗透
5)Default Route Injection:通告缺省路由
6)引入外部路由
7)Filter-Policy
其他特性
1)VPN Instance and Process:多实例与多进程;
2)LSP Fragmentation:LSP 分片;
3)ISIS Graceful Restart:ISIS 平滑重启;[……]

READ MORE

「ISIS」- 等价路由(Equal-cost Route)

问题描述
当 ISIS 网络中有多条冗余链路时,可能会出现多条等价路由,即达到某一目的网段有多条等开销路径;
此时,我们能够同时使用两条链路,以提高网络带宽的利用率;
解决方案
此时可以采取两种方式:
配置负载分担:流量会被均匀的分配到每条链路上;

该方式可以提高网络中链路的利用率及减少某些链路负担过重造成阻塞发生的情况;

但是,由于对流量转发具有一定的随机性,因此可能不利于对业务流量的管理;

配置等价路由优先级:针对等价路由中的每一条路由,明确指定其优先级,优先级高的路由将被优选,优先级低的路由可以作为备用链路;

1)配置等价路由优先级可以在不修改原有配置的基础上,指定某条路由被优选,便于业务的管理,同时提高网络的可靠性;

2)当配置等价路由优先级后,ISIS 设备在转发到达目的网段的流量时,将不采用负载分担方式,而是将流量转发到优先级最高的下一跳;

配置案例

// —————————————————————————- // 配置 IS-IS 路由负载分担

// 配置在负载分担方式下的等价路由的最大数量;
// number:指定在负载分担方式下等价路由的最大数量。不同设备型号取值不同;
[Huawei-isis-1] maximum load-balancing <number>

当组网中存在的等价路由数量大于 maximum load-balancing 命令配置的等价路由数量时,按照下面原则选取有效路由进行负载分担:
1)路由优先级:选取优先级小(优先级高)的路由进行负载分担;
2)下一跳设备的 System ID:如果路由的优先级相同,则比较下一跳设备的 System ID,选取 System ID 小的路由进行负载分担;
3)本地设备出接口索引:如果路由优先级和下一跳设备的 System ID 都相同,则比较出接口的接口索引,选取接口索引较小的路由进行负载分担;

// —————————————————————————- // 配置 IS-IS 等价路由的优先级

// ip-address:指定下一跳的 IP 地址。点分十进制格式;
// weight value:指定下一跳权重。value 越小则优先级越高。value,整数形式,1~254;
[Huawei-isis-1] nexthop ip-address weight value // 缺省情况下,不设置 IS[……]

READ MORE

「Huawei VRP」- 配置 ISIS 协议

实验拓扑

设备互联接口网络地址已预配;
设备 Loopbak 接口已配置;
设备名称已修改,与拓扑对应;

实验需求

配置 ISIS 协议,实现 AR1 与 AR7 互通;

实验过程
配置过程:

# —————————————————————————– # AR1

[AR1]isis 1
[AR1-isis-1]network-entity 49.0001.0000.0000.0001.00

[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]isis enable 1

[AR1]interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1]isis enable 1

[AR1]interface LoopBack 0
[AR1-LoopBack0]isis enable

# —————————————————————————– # AR2-AR7

// 略……

测试方法:

AR1 ping AR7 7.7.7.7

补充说明:

在接口进行 ISIS 宣告时,建议指定 process id 参数(isis enable 1),默认为 1;

IPv6
注意,该实验并未使用如上拓扑,仅为展示 ISIS IPv6 Support 的配置方法。
配置方法:

[CX1]isis 1
[CX1-isis-1]network-entity 49.0001.0000.0000.1111.00
[CX1-isis-1]ipv6 enable

[CX1]interface Ethernet 1/0/0
[CX1-Ethernet1/0/0]isis ipv6 enable 1
[CX1]interface LoopBack 0
[CX1-LoopBack0]isis ipv6 enable 1

[CX2]isis 1
[CX2-isis-1]network-entity 49.0001.0000.0000.2222.00
[CX2-isis-1]ipv6 enable

[CX2]interface Ethernet 1/0/0
[CX2-Ethernet1/0/0]isis ipv6 enable 1
[CX2]interface LoopBack 0
[CX2-LoopBack0]isis ipv6 e[……]

READ MORE

「Elasticsearch」- 安全

# Search Guard
-「is Security free in Elastic search Stack Features?」
-「https://search-guard.com/」[……]

READ MORE

「IPv6」- 地址表示法 | 冒号分十六进制

IPv6,共 128 位,分 8 段,每段 16bit 长度,每段 4 字符(HEX),通过冒号(:)分隔 —— 冒号分十六进制。
地址表示
IPv6 地址表示方法详解
具有多种形式的表示方法,具体如下:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:0DB8:0000:0023:0008:0800:200C:417A

# 前导零可省略
2001:0DB8:0000:0023:0008:0800:200C:417A
2001:DB8:0:23:8:800:200C:417A

# 连续零可压缩
2001:DB8::23:8:800:200C:417A # 注意 :: 仅能出现一次,以保证地址解析唯一性

# 内嵌 IPv4 地址
0:0:0:0:0:0:166.168.1.2/64 # 地址的前 96bit 为 IPv6 地址格式,后 32bit 为 IPv4 地址格式;
# IPv6 部分可采用首选或压缩格式;IPv4 部分采用点分十进制格式;
# 在隧道技术中,使用这种表示法

网络表示
亦采用 IPv6-Address/Mask 形式,例如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 # 地址
ABCD:EF01:2345:6789::/64 # 子网号

常见问题
Q:为什么 IPv6 Address 长度为 128bit?
A:CPU 处理字长发展至今分别经历 4bit、8bit、16bit、32bit、64bit 等,当数据能用 2 的指数幂字长的二进制数表示时,CPU 对数值的处理效率最高。IPv4 Address 长度为 32bit,原因之一就是当时互联网上的主机 CPU 字长为 32bit。从处理效率和未来网络扩展性上考虑,将 IPv6 的地址长度定为 128bit 是十分合适的;
Q:IPv6 的 128bit 地址到底有多少?
A:IPv4 有(232)= 4,294,967,296 个地址。IPv6 有(2128 = 296×232)= 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址(340 万亿万亿万亿个地址),相当于地球表面每平方米可以分配到 67 万亿个地址。夸张的说,地球上每一粒沙子都可以分配到一个 IPv6 地址(提及 IPv6 多半对说这句话来感叹 IPv6 地址很多);
Q:IPv6 为什么不使用点分十进制来表示[……]

READ MORE

「ISIS」- 针对 SR-MPLS 扩展

名称
作用
携带位置

Prefix-SID Sub-TLV
用于通告 SR-MPLS 的 Prefix SID
IS-IS Extended IPv4 Reachability TLV-135
IS-IS Multitopology IPv4 Reachability TLV-235
IS-IS IPv6 IP Reachability TLV-236
IS-IS Multitopology IPv6 IP Reachability TLV-237
SID/Label Binding TLV

Adj-SID Sub-TLV
用于在 P2P 网络中通告 SR-MPLS 的 Adjacency SID
IS-IS Extended IS reachability TLV-22
IS-IS IS Neighbor Attribute TLV-23
IS-IS inter-AS reachability information TLV-141
IS-IS Multitopology IS TLV-222
IS-IS Multitopology IS Neighbor Attribute TLV-223

LAN-Adj-SID Sub-TLV
用于在 LAN 网络中通告 SR-MPLS 的 Adjacency SID
IS-IS Extended IS reachability TLV-22
IS-IS IS Neighbor Attribute TLV-23
IS-IS inter-AS reachability information TLV-141
IS-IS Multitopology IS TLV-222
IS-IS Multitopology IS Neighbor Attribute TLV-223

SID/Label Sub-TLV
用于通告 SR-MPLS 的 SID 或 MPLS Label
SR-Capabilities Sub-TLV 和 SR Local Block Sub-TLV

SID/Label Binding TLV
用于通告前缀到 SID 的映射
IS-IS LSP

SR-Capabilities Sub-TLV
用于对外通告自己的 SR-MPLS 能力
IS-IS Router Capability TLV-242[……]

READ MORE

「ISIS」- IPv6 Multi-Topology | IPv6 MT | IPv6 多拓扑

描述
缺省情况下,在运行 IS-IS 的网络环境中,IPv4 和 IPv6 的混合拓扑被看成是一个集成的拓扑,ISIS 针对 IPv4 和 IPv6 经计算形成相同的最短路径树。

IS-IS 单拓扑存在的问题:

在混合拓扑中,部分路由器和链路不支持 IPv6 协议,但是支持双协议栈的路由器无法感知到这些路由器和链路,仍然会把 IPv6 报文转发给它们,进而导致 IPv6 报文因无法转发而被丢弃;
同样,存在不支持 IPv4 的路由器和链路时,IPv4 报文也无法转发;

IS-IS 单拓扑的不足之处:

网络部署不适合拓扑分离;
为维护相同的拓扑,所有接口都必须同时运行 IS-IS(IPv4)和 IS-IS(IPv6),部署不够灵活;
不能使用 IPv4 区域来连接不同的 IPv6 区域,即无法通过 IPv4 网络解决 IPv6 孤岛问题;

IS-IS 多拓扑(Multi-Topology,MT)特性可以解决单拓扑的不足之处。其指在一个 IS-IS 自治域内运行多个独立的 IP 拓扑。例如 IPv4 拓扑和 IPv6 拓扑,而不是将它们视为一个集成的单一拓扑。这有利于 IS-IS 在路由计算中根据实际组网情况来单独考虑 IPv4 和 IPv6 网络。根据链路所支持的 IP 协议类型,不同拓扑运行各自的 SPF 计算,实现网络的相互屏蔽。
IS-IS 多拓扑的实现过程:
1)建立拓扑:通过报文交互建立邻居,从而建立多拓扑;
2)路径计算:在不同的拓扑上,分别进行 SPF 计算;
原理
IPv4 和 IPv6 各自计算自己独立的拓扑;
IS-IS 定义了新的 TLV,该 TLV 中包含接口所属拓扑信息(MT 信息)。MT 信息的传播,使得网络按不同的拓扑分别进行 SPF 计算,最终实现拓扑分离;
229 号 TLV(多拓扑 TLV):
重要字段解释:
Type:8 bit,TLV 类型,此时值为 229(0xE5),表示支持多拓扑;
O:1 bit,Overload,超载位;
A:1 bit,Attach,附着位;
MT ID:12 bit,表示该接口属于什么拓扑;
IS-IS 为了支持多拓扑特性,定义了多种 TLV,包括:多拓扑 TLV、多拓扑中间系统 TLV、多拓扑可达的 IPv4 前缀 TLV 和多拓扑可达的 IPv6 前缀 TLV。其中本课程将对多拓扑 TLV 进行讲解,其他内容不详细展开;
多拓扑 TLV:
1)多拓扑 TLV 仅包含在 IIH 报文和 LSP 的 0 分片报文中;
2)预留的 MT ID 字段:MT ID=0,用于标准 IPv4 拓扑;MT ID=2,预留给 IPv6 拓扑;
应用

[Huawei-isis-1[……]

READ MORE

「IPv6」-

地址规划
规划原则
IPv6 地址规划的一般性原则:
层次化原则:IPv6 海量地址空间对路由聚合能力提出了更高的要求,IPv6 地址规划首要任务是减少网络地址碎片,增强路由聚合能力,提高网络路由效率。层次化设计有利于缩小路由表规模,可扩展、更灵活,便于实施和排除故障,便于管理和容量规划。层次化设计就是将 IPv6 地址划分为相对独立的几个字段,每个字段可以单独规划。实现路由汇聚,例如将“自定义前缀”划分为多个字段,每个字段赋予不同的涵义;
语义化原则:在层次化原则上,对不同字段进行定义,赋予业务类型、物理位置等含义,便于运维和故障定位;
安全性原则:相同业务属性具有相同的安全要求,业务之间的互访需要进行安全控制,同一种业务属性划分到同一段地址空间,有利于安全设计和策略管理;
连续性原则:IPv6 地址段与段之间、段内地址尽量保持连续。连续的 IP 地址避免地址浪费,有利于管理和地址汇总;且连续的 IP 地址易于进行路由汇总,减小路由表,提高路由效率;
可扩展性原则:地址分配时要有一定的余量,在规划时预留扩展字段,以满足网络扩展时的需要;
规划步骤
1)需求分析与确认
本次 IPv6 地址规划覆盖范围
IPv6 地址规划建议全局考量,全网统一规划;
2)划分地址结构
确定 IPv6 地址规划的基本结构
对申请到的 IPv6 地址进行结构化划分:固定前缀、自定义前缀、主机地址区;
32bit:固定前缀;32bit:自定义前缀;64-bit:主机地址区;
3)细化前缀定义
收集与地址分配相关的企业内部信息,定义前缀信息
区域位置与数量:国家、区域、省份、地市、县、园区建筑、楼层等;区分物理位置和逻辑位置,如网络 A 平面、B 平面、xx 专网等;
每个位置联接的业务、应用、系统:办公、研发、销售、行政、财务等;
自上而下分配定义;

地址规划设计建议:
根据获取到的地址前缀,首先确定子网地址划分为几个功能块(如图中的 3+3+6+N),明确各功能块的含义、占用多少比特,避免地址浪费;
这是仅是建议,目前还没有进行复杂的规划;
通常,建议 Interface Indentify 为 64-bit 长度;
规划举例
IPv6 地址规划举例,如 XX 银行分配的 IPv6 网络前缀为:XXXX:XXXX::/32;

网络划分:
使用建议
地址规划要点
通常,ISP 从地址分配机构获取的 IPv6 Address 至少为 /32 前缀长度,企业用户获得的前缀长度往往为 /48;
虽然 IPv6 地址空间巨大,但是在规划网络时,依然需要对地址进行合理规划;
确保 IPv6 地址的全网唯一性(除某些特殊的应用外,如 Anycast);
确保 IPv[……]

READ MORE

「JENKINS-PIPELINE」- 构建工具管理:NodeJS Maven NPM

该笔记将记录:在 Jenkins 中,如何维护管理和使用各种工具,以及常见问题的解决办法;
在 Jenkins 中,Job 将在各个 Agent 中运行,同时这些 Job 又依赖于各种构建工具及命令,这就要求我们在 Agent 中安装各种工具。但是,如果 Jenkins Agent 较多,则在各个 Agent 中进程安装是不现实的,而且不同 Job 又依赖于不同版本的工具(增加节点维护难度)。
在 Jenkins 中,其提供针对该问题的解决方案:

其提供 Manage Jenkins / Tools 功能,使得我们能够配置各种工具;
而后,在 Job 中,选择需要使用的工具及版本,当构建时 Jenkins 将自动在节点上进行工具的安装及配置;

NodeJS | 配置多版本 NodeJS 构建环境
前端开发人员使用多种版本 NodeJS 环境进行开发,并使用 NVM 自如切换版本。在使用 Jenkins 构建时,也应该使用对应版本进行构建。该部分将介绍在 Jenkins Pipeline 中,如何使用不同 NodeJS 版本进行构建任务;
通过 Jenkins NodeJS 插件
插件:https://plugins.jenkins.io/nodejs/
第一步、安装插件
通过使用 NodeJS 插件,网络教程详尽,不再赘述;
第二步、配置版本

或,通过 NodeJS 站点:

Manage Jenkins => Global Tool Configuration => NodeJS => NodeJS installations… => Add NodeJS

记住Name字段,它用于标识 NodeJS 环境,需要在流水脚本中使用。其他字段按照提示填写信息即可,不再赘述;

或,通过 NodeJS 在线镜像站点:

Install from nodejs.org mirror

Mirror URL: https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v20.17.0/

Version: x.x.x

在 Pipeline 中,如果使用 tool 步骤,则其返回目录为 NodeJS 的根目录,需要追加 bin/ 目录,才能使用 tools 命令。如果使用 tools 步骤,则其将自动添加到 PATH 环境变量中。

第三步、(可选)定义 npmrc 文件
Manage Jenkins => Managed files => Add a new Config => Npm config f[……]

READ MORE

「Kibana」- 安装

容器镜像:https://hub.docker.com/_/kibana
测试安装
配置
修改 /etc/kibana/kibana.yml 的内容如下:

# 配置监听的 IP 地址和端口号。“0.0.0.0”表示监听所有的 IP 地址。
server.port: 5601
server.host: 0.0.0.0
# 配置 es 服务器的 ip,如果是集群则配置该集群中主节点的 ip
elasticsearch.url: “http://127.0.0.1:9200”
# 配置 kibana 的日志文件路径,不然默认是 messages 里记录日志
logging.dest: /var/log/kibana.log

并创建 kibina.log 文件:

#!/bin/sh

touch /var/log/kibana.log
chown kibana: /var/log/kibana.log

并修改该文件的用户和组为 kibana 及其所属组。
启动
执行systemctl start kibana.service来启动服务。
执行systemctl enable kibana.service来设置服务的开机自启动。
验证
执行ss -l -n -p | grep 5601来查看是否监听 5601 端口。
然后,在浏览器中访问http://127.0.0.1:5601来访问 kibana,以检测 kibana 是否能够正常访问。
安装
安装参考官方手册「Installing Kibana」,已经非常详细了,介绍了各个平台的安装方法,以及各种包的安装方式。
Debian 8.2 and Kibana 6.5.0

#!/bin/sh

# 前几步在进行 Elasticsearch 6.50 的安装时已经进行过了
wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add –
apt-get install apt-transport-https
echo “deb https://artifacts.elastic.co/packages/6.x/apt stable main” | tee -a /etc/apt/sources.list.d/elastic-6.x.list
apt-get update

# 安装 Kibana 6.5.0
apt-get install kibana=6.5.0

CentOS 7.4 and Kibana 7.5.1

#!/bin/sh

rpm –import https://artifacts.elastic.co/GPG-KEY-elastic[……]

READ MORE

「TMV」- 社会保险 | Social Insurance | 五险一金 | 保险 | Insurance | 公积金 | Fund

认识
五险一金是指用人单位给予劳动者的几种保障性待遇的合称,包括 基本养老保险、基本医疗保险、失业保险、工伤保险、生育保险、住房公积金。
五险一金是国家建立基本养老保险、基本医疗保险、工伤保险、失业保险、生育保险等社会保险制度,保障公民在年老、疾病、工伤、失业、生育等情况下依法从国家和社会获得物质帮助的权利。
组成
养老保险
职工交纳养老保险后,达到法定退休年龄时累计缴费满十五年的,按月领取基本养老金。
Q:职工养老保险退休后每月可以领多少?
A:职工养老保险退休后每月领取的养老金数额并不是一个固定的数字,而是根据个人的工资水平、缴费年限、退休年龄等多个因素综合计算的。
医疗保险
职工医疗保险作用与好处有哪些_李聪聪律师精选解答-律图搜索智能精选-医保报销花的是医保卡上的钱吗医保个人账户和统筹账户的区别
参保人员完成缴费年限后可以终身享受基本医疗保险的权利,可以享受医疗报销和退休后享受医保待遇。好处有:参保人员医疗费用中应当由基本医疗保险基金支付的部分,由社会保险经办机构与医疗机构、药品经营单位直接结算。
医保卡账户分为:个人账户、统筹账户

一、缴费方式不一样。医保个人账户是指在职员工个人缴费金额。统筹账户中的金额一般由公司缴纳。个人账户主要是由在职员工个人缴存,但也包括公司缴存金额的 30%,而统筹账户的金额主要是由用人单位缴存。但统筹账户中的可用额度和公司每月打入的金额没有很大关系。

二、使用范围不一样。个人账户主要用于门诊、急诊的医疗费用等。个人账户主要用于支付定点零售药店购买药物的费用、门诊和急诊的医疗费用,同时也可用于参保者本身购买商业保险、意外伤害险等,以及基本医疗保险统筹基金起付标准以下的医疗费等。而统筹账户主要用于住院治疗的医疗费用。而统筹账户可用于支付住院治疗的医疗费用、恶心肿瘤放射治疗、肾透析、肾移植后服用抗排异药物的门诊医疗费用,以及急诊抢救后收入住院治疗的病人,其在住院前留观七日内的医疗费用。

医保报销花的是医保卡上的钱吗?

医保报销并不是花医保卡上的钱。

医保报销是通过医保制度将一部分医疗费用由国家或社会统筹支付的过程,而不是从个人的医保卡里扣钱。具体来说,当个人就医时,医院会根据医保政策和规定,将医疗费用结算后,将需要报销的部分直接从医保基金中扣除,而不是从个人的医保卡里扣钱。个人只需要支付自己需要承担的部分费用,剩余部分由医保基金支付。医保报销的具体金额和比例会根据不同的医保政策和个人的参保情况而有所不同。一般来说,医保报销的范围包括医疗费用、药品费用、检查费用等,但也有一些特殊项目可能不在报销范围之内。

医保卡的报销是根据情况来决定的,医保卡账户分为个人账户和统筹账户。统筹情况下的报销,是经过统筹账户按照相应[……]

READ MORE

「Elastic Stack」- Filebeat

Elastic Stack 是一个开源的数据处理平台,它由多个组件组成,包括 Elasticsearch、Logstash、Kibana 和 Beats 等。其中,filebeat 是 Beats 中的一个组件,用于收集和传输日志文件数据。
filebeat 可以监控指定目录下的所有文件,读取文件内容并将日志数据发送到指定的目的地。它可以轻松地与 Elasticsearch 和 Logstash 集成,也可以与其他第三方系统集成。
filebeat 的主要功能包括:

收集和传输日志数据:filebeat 可以从多种来源收集日志数据,包括本地文件、网络流和系统日志等。它可以将数据传输到 Elasticsearch、Logstash 或 Kafka 等目的地。

数据压缩和加密:filebeat 支持数据压缩和加密,可以保证数据的安全性和可靠性。

实时和批量传输:filebeat 支持实时传输和批量传输两种方式,可以根据具体需求进行配置。

支持多平台:filebeat 支持多种操作系统和平台,包括 Windows、Linux、MacOS 等。

总之,filebeat 是 Elastic Stack 中非常重要的一个组件,可以帮助用户轻松地收集和传输日志数据,并与其他组件进行集成,实现高效的数据处理和分析。[……]

READ MORE

「Elasticsearch」- 集群搭建 | with Docker Compose

镜像:https://www.docker.elastic.co/r/elasticsearch/elasticsearch
with Docker Compose
Is Docker Compose supported for a single node Elasticsearch setup? – Elastic Stack / Elasticsearch
sysctl -w vm.max_map_count=262144
chmod 777 -R ./data/


version: ‘3’
services:
elasticsearch:
container_name: es01
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.22
environment:
– ‘ES_JAVA_OPTS=-Xms2g -Xmx2g’
– ‘bootstrap.memory_lock=true’
– ‘discovery.type=single-node’
ports:
– 9200:9200
networks:
– elastic
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
– ./data/elasticsearch/:/usr/share/elasticsearch/data/
– /etc/localtime:/etc/localtime
kibana:
image: docker.elastic.co/kibana/kibana:7.17.22
container_name: kib01
environment:
LOGGING_ROOT_LEVEL: error
ports:
– 5601:5601
networks:
– elastic
volumes:
– ./data/kibana:/usr/share/kibana/data/
– /etc/localtime:/etc/localtime

networks:
elastic:

注意事项
1)版本不同,集群配置方法不同。例如 Elasticsearch 6.8.6 与 7.6.2 的集群配置方法是不同的。
第一步、服务搭建
跳过服务部署步骤,详细参考 Elas[……]

READ MORE

「ICMPv6」- NS(Type=135), NA(Type=136)

NS (ICMPv6.Type=135)

Frame 18: 86 bytes on wire (688 bits), 86 bytes captured (688 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_64:0e:23 (00:e0:fc:64:0e:23), Dst: HuaweiTe_60:33:15 (00:e0:fc:60:33:15)
Internet Protocol Version 6, Src: fe80::2e0:fcff:fe64:e23, Dst: 2002::2e0:fcff:fe60:3315
Internet Control Message Protocol v6
Type: Neighbor Solicitation (135)
Code: 0
Checksum: 0xbea2 [correct]
[Checksum Status: Good]
Reserved: 00000000
Target Address: 2002::2e0:fcff:fe60:3315
ICMPv6 Option (Source link-layer address : 00:e0:fc:64:0e:23)
Type: Source link-layer address (1)
Length: 1 (8 bytes)
Link-layer address: HuaweiTe_64:0e:23 (00:e0:fc:64:0e:23)

NA (ICMPv6.Type=136)

Frame 19: 86 bytes on wire (688 bits), 86 bytes captured (688 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_60:33:15 (00:e0:fc:60:33:15), Dst: HuaweiTe_64:0e:23 (00:e0:fc:64:0e:23)
Internet Protocol Version 6, Src: 2002::2e0:fcff:fe60:3315, Dst: fe80::2e0:fcff:fe64:e23
Internet Control Message Protocol v6
Type: Neighbor Advertisement (136)
Code: 0
Checksum: 0xb7b3 [correct]
[Checksum Status: Good]
Flags: 0xe0000000, Ro[……]

READ MORE

「IPv6」- 地址格式(地址分类)

概述介绍
鉴于 IPv4 Address 在规划和分配上的局限性,IETF 对 IPv6 地址类型进行精细划分,不同类型的 IPv6 地址被赋予不同的前缀,且受地址分配机构的严格管理(从 IPv4 习得的经验)。
现阶段,常用的 IPv6 地址或前缀有:

范围
描述

2001::/16
用于 IPv6 互联网,类似于 IPv4 公网地址;

2002::/16
用于 6to4 隧道(IPv6 Transition)

FE80::/10
链路本地地址前缀,用于本地链路范围内的通信

FF00::/8
组播地址前缀,用于 IPv6 组播

::/128
未指定地址,类似于 IPv4 中的 0.0.0.0

::1/128
环回地址,类似于 IPv4 中的 127.0.0.1

单播地址 | Unicast Address
其用于标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在 IPv6 中,单个接口拥有多个 IPv6 Address 是非常常见的现象;
单播地址(IPv6)结构,分为如下两部分:
网络前缀,Network Prefix,

长度:n bit,相当于 IPv4 地址的 Network ID 部分;
来源:通常由运营商分配;

接口标识,Interface Identify,Interface ID

长度:(128-n)bit,相当于 IPv4 地址的 Host ID 部分。注意,常见的 IPv6 单播地址(例如,全球单播地址、链路本地地址、……)要求 Network Prefix 和 Interface Identify 必须为 64 bit;
来源:需要我们自己进行配置的部分。

1)手工配置:通过命令行,配置指定的 IPv6 地址;

—- 顾名思义,手动配置就是人为指定 Interface Identify 来实现;

2)系统生成:操作系统(或网络设备)将自动生成地址。网络设备采用随机生成的方法产生一个 Interface ID,目前 Windows 操作系统使用该方式;

3)规范生成:通过 IEEE EUI-64 规范生成(最为常用);

—- 这种由 MAC-Address 产生 Interface Identify 将减少配置的工作量;

—- 只需要获取 IPv6 Network Prefix 就可以与 Interface Ident[……]

READ MORE

「ICMPv6」- 互联网控制消息协议 | Internet Control Message Protocol version 6

认识
IPv6 定义 ICMPv6(Internet Control Message Protocol for IPv6),除了提供类似 ICMP 的功能外,还有诸多扩展。
组成
与 ICMP for IPv4 相似,用于支持 IPv6 环境。
ICMPv6 报文用于通告相关信息或错误:传统的 ping、tracert 等等命令的 IPv6 版本。
性质
WIP
应用
ICMPv6 报文被广泛应用于其它协议中,包括 NDP、Path MTU 发现机制等。Neighbor Discovery Protocol(邻居发现协议,NDP)是基于 ICMPv6 实现的,作为 IPv6 的关键协议,NDP 提供例如 前缀发现、重复地址检测、地址解析、重定向 等等功能。
在 IPv6 中,ICMPv6 是 IPv6 的基础协议之一,非常重要,其控制着的地址自动配置、地址解析、地址冲突检测、路由选择、差错控制等关键环节。 其网络通信的各个环节均离不开 ICMPv6 协议。
参考
Internet Control Message Protocol for IPv6 – Wikipedia[……]

READ MORE