FRR BGP 协议分析 5 -- 路由更新(2)

动态路由协议BGP介绍 文章目录BGP介绍BGP相关术语BGP报文介绍BGP五种报文BGP报文结构路由属性分类:BGP常见路由属性Origin属性Next_Hop属性AS_Path属性Local_Pre属性Community属性MED属性BGP路由黑洞产生原因BGP路由反射器以及联盟BGP路由反射器BGP联盟BGP原理 BGP介绍 BGP(Border Gataway Protocol,边界网关协议)是一种用于解决OSP... 阅读详情

处理NLRI

获取NLRI的报文长度,填入nlris[NLRI_UPDATE],到现在为止nlris里面的4种类型(如果有的话),已经全部填写到nlris数组结构体里面

然后我们遍历这个数组,处理里面所有的NLRI的类型,本次先分析NLRI_UPDATE,MP后面再分析。

根据前面解析出来的SAFI选取不同的处理函数,afi/safi定义如下:

AFI_IP 的组合定义如下:

IP + UNICAST

普通的IP 单播路由处理

IP + MULTICAST

组播路由??

IP + MPLS_VPN

MPLS VPN 路由的处理

IP + ENCAP

??目前不太清楚

IP + EVPN

?? 还是L2VPN + EVPN ??

IP + LABELED_UNICAST

BGP的标签分发的路由处理

IP + FLOWSPEC

BGP FLOWSPEC的处理

 

 

可以从下面的函数查看组合:

IP + UNICAST/ MULTICAST走的是下面的函数,NLRI里面存放的是前缀,为了方便,把报文也放到下面:

这里又引出BGP的一个数据结构struct prefix

在每次的for循环里面,需要填充好prefix前缀里面的长度、family、前缀值,然后以便后续bgp_update函数继续处理。

bgp_update 引申出struct bgp_node的数据结构,是BGP 存放路由的关键数据结构,我们先认识下,使用关键字prefix组织成radix树

struct bgp_path_info 存放在bgp_node的void *info里面,这个数据结构的意义是什么??

bgp_afi_node_get在bgp对应的afi/safi table里面使用prefix前缀,获取struct bgp_node节点,并加入afi/safi table的二叉树里面。

如果需要记录adj_in,那么把当前的信息存入bgp_adj_in结构体,然后link到bgp_node的链表上面。

然后会进行AS_PATH的防环检查,

attr_new = bgp_attr_intern(&new_attr); 会根据前面解析的attr(局部变量传下来的),申请一个attr_new,以便后续保存。

info_make 会创建一个新的struct bgp_path_info数据结构,attr_new 便保存在里面的,后续会在给bgp_path_info赋值。

函数bgp_path_info_add 会把新的bgp_path_info,连接到bgp_node里面。

bgp_maximum_prefix_overflow 会检查BGP Max Prefix条目限制

bgp_process 会把rn入队work_queue,后续work_queue注册的回调函数bgp_process_wq,会出队继续处理rn,而work_queue是在初始化的时候,就已经初始化好了

这里的work_queue和linux内核的work queue是异曲同工之妙。

WORK_QUEUE 后续处理

work queue的回调函数bgp_process_wq出队queue继续处理,bgp_process_main_one 处理具体的queue node,即bgp route_node的信息,这里提个问题,单线程处理的bgpd,为何这里需要在异步下work_queue继续处理??

 

 

bgp_process_main_one 会根据BGP的选路原则选择一个最优的路由,选择原则如下:

https://i-blog.csdnimg.cn/blog_migrate/96cab4497ef4c00dd115d810cbf06d17.png

 然后group_announce_route发布路由,会遍历bgp->update_groups的HASH表,执行回调函数update_group_walkcb,最后会调到函数group_announce_route_walkcb

而这里涉及到的结构体struct update_group/ struct update_subgroup是在bgp_establish的时候调用update_group_adjust_peer_afs创建的

    /* assign update-group/subgroup */

    update_group_adjust_peer_afs(peer);

回到group_announce_route_walkcb函数,遍历group下的subgroup,然后得到struct bgp_path_info和bgp_node,调用函数subgroup_process_announce_selected,最后调用bgp_adj_out_set_subgroup 加入sync->update表,等待定时器更新发送,但此时传入定时器的时间为0,所以应该是一个实时的时间,此时相当于又异步了一次。

事件执行会调用bgp_generate_updgrp_packets,然后调用subgroup_update_packet,里面封装发送的UPDATE报文,bgp_packet_attribute封装属性,报文封装好后,调用bpacket_reformat_for_peer修正下报文的nexthop,然后调用bgp_packet_add把报文加入到peer的obuf里面,然后调用bgp_writes_on(peer),等fd可写的时候,IO线程会把UPDATE报文发送出去。

到此我们分析了接受到UPDATE消息,然后在BGP 路由表里面添加了路由,并且发送出去的全部过程,涉及的路径很长,细节很大,只有后面再慢慢体会。

而这个BGP 路由下发到ZEBRA和linux内核的过程同样很长,后面再继续分析。

基于FRR全面解析BGP协议(二):BGP协议的路径属性 BGP协议的路径属性 当一条BGP路由被BGP路由器通告给其对等体时,这条BGP路由会携带多个路径属性值(Path Attributes)并传递给对等体。 这些路径属性,将影响BGP的路由优选,使得BGP的路由策略能力异常强大。 BGP路径属性分为公认属性和可选属性。公认属性是所有BGP协议实现必须都能正确识别的属性;可选属性是BGP协议实现可不支持的属性。公认属性又分为公认必遵和公认自决属性。公认必遵是在update报文中必须携带的属性;而公认自决并不要求必须包含在update报文中。可选属性分为可选传 阅读详情

相关推荐

华为设备--动态路由协议BGP基本原理和基础配置(BGP+RIP+OSPF实验)

BGP动态路由协议 ####BGP概述#### 1、 自治系统(AS)是由-个技术管理机构管理,使用统一选路策略的- -组路由器集合, 自治系统编号范围: 1-65535,其中1-64511是互联网.上注册公有AS号,类似公网IP地址。 64512-65535是私有AS号,类似私网IP地址 http://www.iana.org/ 2、动态路由的分类 [1]按自治系统分为 IGP: 自治系统内部路由协议,主要: RIP1/RIP2、 OSPF、ISIS、 EIGRP (思科私有协议) IGP是运行在AS内部

CN_ChenJian 3243

FRR BGP协议分析13 -- ZEBRA路由的处理2

前面可知,消息被enqueue了mq的work queue,当zebra的mq的work queue被调度的时候,meta_queue_process回调函数会被执行,for循环执行一个就退出,是为了实现subq的绝对优先级调度。 process_subq 取出头结点的存放的struct route_node,然后直接调用rib_process继续处理route_node,其核心思想是遍历r...

~~ LINUX ~~ 2479

FRR路由套件中BFD与OSPF/BGP联动机制实践

BFD(双向转发检测)是一种用于快速检测网络故障的轻量级协议,通过毫秒级的链路状态监测显著提升网络可靠性。其核心原理是通过UDP报文持续交换检测信息,结合滑动窗口算法实现快速故障判定。在路由协议领域,BFD与OSPF、BGP等传统协议的联动能有效解决Hello机制收敛慢的痛点,将故障检测时间从秒级缩短至毫秒级。这种技术组合特别适用于金融交易、视频会议等对网络延迟敏感的场景。通过FRR路由套件的实验验证,OSPF+BFD可将收敛时间控制在300-500ms,BGP+BFD方案也能将中断时间压缩到600ms内。

weixin_34337381的博客 445

FRR BGP代码分析21 -- 路由刷新 && MAX-PREFIX

路由刷新 && MAX-PREFIX

~~ LINUX ~~ 1026

CentOS8下VPP与FRR通过VRF实现跨协议栈通信(附完整配置命令)

本文详细介绍了在CentOS 8系统中,如何利用Linux内核的VRF技术,将高性能用户态数据平面VPP与开源路由套件FRR进行深度集成,实现跨协议栈的流量隔离与可控通信。文章提供了从环境准备、VRF与veth配置、VPP对接、FRR部署到最终测试验证的完整实战步骤与命令,为构建复杂的异构网络通信平台提供了清晰的解决方案。

g8f9d0s1a2的博客 708

BGP概述

课后实验 实验要求: 所有路由器都开启BGP协议,R1、R2、R5为IBGP as 100,R3和R2为EBGP,R3属于as 200 R1、R2、R5配置ospf协议,属于area 0 R5有两个业务网段:202.0.0.1/24和202.0.1.1/24 R3可以访问R5业务网段 5)R2\R3配置RIP 步骤①:根据实验要求配置如下拓扑图 步骤②:配置R1,具体命令如下 <Huawei>sys [Huawei]undo in e [Huawei]sys R1 [R1]int g0/

28线不知名云架构师的后花园 518

FRR BGP代码分析20 -- 6PE\6VPE

下一代网际协议IPv6,是IPv4的增强版本,提供改进的地址空间、配置、维护和安全功能,支持更多的用户和设备接入互联网。 虚拟专用网络是由共享的链路或公网(如因特网)组成的专用私有网络的扩展,使用户在两个不同地域的计算机通过穿越共享链路或公网互通数据。 IPv6 层3隧道与IPv4 层3隧道的区别是IPv6 层3隧道中PE从CE接收到的是IPv6报文,IPv4 层3隧道中PE从CE接收到的是I...

~~ LINUX ~~ 2420

强化学习——day16 动态规划算法

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略

想太多的学习日志 1550

2022-07-19 网工进阶(二十)BGP-路由优选、路由优选逐条分析

优选的路由。优选的路由。本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级优选。优选的路由。优选Origin属性最优的路由。Origin属性值按优先级从优选的路由。优选从EBGP对等体学来的路由()。优选的路由。优选的路由。优选通告的路由。优选的路由。上述规则依序排列,BGP进行路由优选时,类似于ACL匹配规则。......

x629242的博客 2050

C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南

本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。

weixin_28077113的博客 164

ABAP - Function ALV 11 - 单元格下拉框

【代码】ABAP - Function ALV 11 - 单元格下拉框。

HeathlX的博客 1811

基于FRR全面解析BGP协议(一):BGP协议基础知识

#基于FRR全面解析BGP协议(一):BGP协议基础知识 ##BGP协议基础知识 ###定义 边界网关协议(Border Gateway Protocol,BGP)是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议 。简单地讲,就是交换两个网络的路由信息。 ###特征 BGP使用TCP为传输层协议,TCP端口号179。 路由器之间的BGP会话基于TCP连接而建立。运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。 两个建立BGP会话的路由器互为对等

m0_48594855的博客 4881

科研绘图系列:R语言绘制宏基因组分析的可视化图形(network & barplot & heatmap)

科研绘图系列:R语言多图形组合(network & barplot & heatmap)

专注生信领域 642

FRR BGP协议分析11 -- ZEBRA初始化

zebra,翻译是斑马,它负责管理其他所有协议进程的路由信息的更新与交互,并负责与内核交换信息,整体的架构如下: Zebra的初始化在zebra/main.c里面,代码也来的干净直接 frr_init创建zebra主进程的master数据结构,用来做事件驱动,我们可以看下thread_master的数据结构。 其整合了事件的可读、可写、定时器、信号的处理,后面有时间可以来学习下...

~~ LINUX ~~ 3878

Android Camera MTK框架

Camera简介: 虽然前文说道Android在5.0之后就推出了Camera2 API,但是各个厂家的基本未适配,导致目前市场上大部分机型使用的仍然是Camera1 API。PS:Android 9.0 Google强制要求各个平台厂商(高通/MTK/华为等)支持Camera2,不再兼容Camera1。 ...

weixin_49303682的博客 5506

NR PUCCH(二)PUCCH format 2/3/4

继续看PUCCH2/3/4:PUCCH format 0和1所携带的信息bits少,UCI bits2bits,信息bit需要经过编码等过程下面分别来看。

ModemProtocol的博客 537

一天一看————BGP路由技术

BGPBGP的概述自治系统-ASBGP的特点:BGP路由协议特点BGP分类BGP_工作原理BGP五大报文BGP六种状态BGP对等体之间的交互9个原则建立对等体注意点命令配置实验 BGP的概述 自治系统-AS BGP外部网关路由协议,高级的矢量路由协议,工作在AS与AS之间              同一技术管理机构管理                     统一选路策略                        路由器的集合 动态路由的分类 IGP EGP    BGP的特点: 1.BGP能够承载大

weixin_55609823的博客 1717

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8814

BGP路由

内容概要1、BGP的基本概念 1、BGP的基本概念 自治系统AS:As是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。BGP网络中的每个As都被分配一个唯一的As号,用于区分不同的AS。 2009年1月之前,只能使用最多2字节(即2*8=16bit)长度的AS号码,即2^16-1=65535。 其中1-64511为公有AS,65512-65534为私有AS,不能用于公网。记忆办法:2^16-1=65535,私有AS有1024个, ...

芦苇的博客 1248

整理 钢琴 约翰·汤普森现代钢琴(大汤)

大汤

TS的博客 3991

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2021-08-20 SONiC中的FRR和Zebra

2021-08-20 SONiC中的FRR和Zebra SONiC中采用FRR和Zebra处理路由协议 以前写过SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件,之后改成了更流行的FRR。完整的路由器系统需要协议处理、FIB/RIB维护、转发面芯片配置等功能。FRR提供了BGP路由协议的处理,除此以外,还需要对其他路由协议如各种IGP协议进行管理,SONiC系统通过路由协议获得的路由信息还需要和Redis数据库关联,进而通告订阅/通告机制和系统其他功能互动。SON

weixin_44316184的博客 2643

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Frr代码分析之BGP不同类型报文收发

bgp_packet.c中bgp_notify_send_internal函数调用bgp_packet_set_marker(s, BGP_MSG_NOTIFY)来设置Type字段,调用bgp_packet_set_size(s)来设置Length字段,bgp_notify_send函数参数中输入差错码字段与差错子码字段,同时调用bgp_notify_send_internal函数,以将差错码,差错子码传参至notify报文中进行发送。

2301_79967043的博客 688

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

动态路由(五)BGP--边界网关协议

## 一. AS的概念 自治系统(Autonomous System ,AS),指的是在同一个组织管理下、使用相同策略的设备的集合。·不同AS通过AS号区分,AS号取值范围1- 65535,其中64512- 65535是私有AS号 中国电信163AS号:4134。 中国电信CN2AS号:4809。中国网通AS号:9929。 ## 二.BGP概述 边界网关协议(Border Gateway Protocol,BGP )是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是B

weixin_48190863的博客 1012

OSPF IP FRR + BFD 联动实验报告

Cost_opt(S,D):节点 S 到 D 的路径开销(S→LSW1→LSW2→R1→D,开销 1(S的GE0/0/1) +LSW1-LSW2(10)+ 1(R1的GE0/0/0) + 5(R1→D) = 7,中间交换机无 OSPF 开销),5+5=10<10+10+7,若备份路径开销。Cost_opt(N,D) ≤ Cost_opt(N,S) + Cost_opt(S,D),Cost_opt(N,D):节点 N 到 D 的最优路径开销(直接路径 N→R1→D,开销 5 + 5 = 10)。

2302_79311751的博客 1149

为SRv6实验铺路:手把手教你将Ubuntu中的FRR升级至最新v10.5稳定版

按照官方说法,FRR从7.5版本开始引入了初步的SRv6基础框架,当前Ubuntu默认支持的8.1版本也是SRv6支持的一个重要里程碑。期间,我们还发现,FRR通过Zebra组件与内核交互,只要不是由FRR自己生成的路由,无论是netplan配置还是ip route命令添加,如果有条件的话,应该还是要体验一下最新的FRR 10.5版本,是时候让官方源中年事已高的8.1版本退休了。由于Ubuntu官方仓库默认只提供8.1版本的FRR,要安装最新的稳定版,我们需要使用FRR官方维护的Ubuntu仓库。

衡水铁头哥的博客 926

Ubuntu 18.04下部署BGPalerter实现BGP路由实时监控

BGP监控本质是路由状态感知,而非简单邻居连通性判断。传统命令行检查(如show ip bgp summary)无法捕获前缀撤回、AS_PATH异常、策略漂移等静默故障。BGPalerter通过监听FRR/BIRD路由数据流,以低延迟、结构化方式实现BGP路由变更的实时感知与规则化告警。其核心价值在于将BGP协议‘黑盒’转化为可观测、可审计、可策略驱动的事件流,特别适用于金融、政务等运行Ubuntu 18.04等ESM系统的生产网络环境。本文聚焦Python 3.6.9兼容性约束下的落地实践,覆盖FRR s

454
上一篇: FRR BGP协议分析4 -- 路由更新(1)
下一篇: FRR BGP协议分析6 -- 路由更新(3)
废言Pro
博客等级 码龄16年 1092粉丝 142原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值