fd

浮动静态路由和BFD联动实现路由自动更新

和自甴很熟 提交于 2019-12-04 18:26:55
组网需求 RouterA通过RouterB与外部网络相连,其中RouterA与RouterB之间通过SwitchC互连。要求RouterA能与外部网络正常通信,并在RouterA和RouterB之间实现毫秒级故障感知,提高收敛速度。 配置思路 采用如下思路配置IPv4静态路由与BFD联动: 1. 配置各路由器接口的IP地址,实现设备网络互通。 2. 在RouterA和RouterB上配置BFD会话,实现RouterA和RouterB之间的毫秒级故障感知。 3. 在RouterA上配置通向外部网络的缺省路由,并将此缺省路由与配置的BFD会话联动,实现快速检测链路故障,提高路由的收敛速度。 操作步骤 一、 配置各路由器接口IP地址 # 在RouterA上配置接口的IP地址。 [RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] ip address 1.1.1.1 24 [RouterA-GigabitEthernet1/0/0] quit RouterB的配置与RouterA一致 二、配置RouterA和RouterB之间的BFD会话 # 在RouterA上配置与RouterB之间的BFD会话。 [RouterA] bfd [RouterA-bfd] quit [RouterA] bfd aa

浮动静态路由和bfd联动实现路由自动更新

让人想犯罪 __ 提交于 2019-12-04 18:26:26
浮动静态路由和bfd联动实现路由自动更新 一.什么是浮动静态路由 静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也可以通过对路由器进行设置使之成为共享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。在一个支持DDR(Dial-on-Demand Routing)的网络中,拨号链路只在需要时才拨通,因此不能为动态路由信息表提供路由信息的变更情况。在这种情况下,网络也适合使用浮动静态路由。 二.什么是bfd BFD即双向转发检测,是一种实现网络可靠性的机制,可被用于快速检测网络中的链路状况、IP可达性。其可以与多种协议或机制进行联动,如与静态路由、OSPF、IS-IS、 BGP、VRRP、PIM及MPLS LSP等进行联动。 三.实验步骤 (1).实验网络拓扑图 (2).实验配置 PC1 ip address:192.168.1.3 255.255.255.0 SW1 ip address:192.168.1.2.255.255.255.0 PC2 ip address:10.0.0.2 255.255.255.0 AR1 Interface G0

实验三-并发程序 20175201张驰

♀尐吖头ヾ 提交于 2019-12-04 17:58:15
实验三-实时系统-1 任务详情 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 查看wc的功能 在终端中输入man wc查看wc的功能 代码 服务器端server // // main.c // server // // Created by shadow on 2019/11/17. // Copyright © 2019 shadow. All rights reserved. // include<netinet/in.h> // sockaddr_in include<sys/types.h> // socket include<sys/socket.h> // socket include<stdio.h> // printf include<stdlib.h> // exit include<string.h> // bzero define SERVER_PORT 175201 define LENGTH_OF_LISTEN_QUEUE 20 define BUFFER_SIZE 1024 define FILE_NAME_MAX_SIZE 512 int main

[转帖]推荐一款比 Find 快 10 倍的搜索工具 FD

放肆的年华 提交于 2019-12-04 15:21:29
推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018-08-13 运维之美 HOME ABOUT ARCHIVES TAGS fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。 fd 虽然不能提供现在 find 命令所有的强大功能,但它也提供了足够强大的功能来满足你日常需要。比如:简洁的语法、彩色的终端输出、超快的查询速度、智能大小写、支持正则表达式以及可并行执行命令等特性。 项目地址: https://github.com/sharkdp/fd 安装 fd fd 具有良好跨平台特性,支持在 Linux、macOS、Windows 等多种平台下安装。下面我们介绍下几个比较常用平台的安装方法: Ubuntu / Debain 12 $ wget https://github.com/sharkdp/fd/releases/download/v7.0.0/fd_7.0.0_amd64.deb$ sudo dpkg -i fd_7.0.0_amd64.deb Fedora 1 $ dnf install fd-find macOS 1 $ brew install

数学总结

故事扮演 提交于 2019-12-04 13:28:34
①乘法逆元 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define e exit(0) #define re register #define LL long long LL n,M; inline LL fd(){ LL s=1,t=0;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')s=-1;c=getchar();} while(c>='0'&&c<='9'){t=t*10+c-'0';c=getchar();} return s*t; } inline LL qsm(LL x,LL y){ LL base = 1; while(y){ if(y&1) base = (1ll*base%M*x%M)%M; x = (x%M*x%M)%M; y>>=1; } return base; } int main() { freopen("P3811.in","r",stdin); freopen("P3811.out","w",stdout); n = fd(),M = fd(); for(re LL i=1;i<=n;++i) printf("%lld\n",(qsm(i,M-2)%M+M)%M); return 0; }

数据结构总结

蹲街弑〆低调 提交于 2019-12-04 12:05:19
①并查集 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define e exit(0) #define re register const int M = 10005; int n,m,fa[M]; inline int fd(){ int s=1,t=0;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')s=-1;c=getchar();} while(c>='0'&&c<='9'){t=t*10+c-'0';c=getchar();} return s*t; } int find(int x){ if(fa[x] == x) return x; else return fa[x] = find(fa[x]); } int main() { freopen("P3367.in","r",stdin); freopen("P3367.out","w",stdout); n = fd(),m = fd(); for(re int i=1;i<=n;++i) fa[i] = i; for(re int i=1;i<=m;++i){ int c = fd(),x = fd(),y = fd(); if(c == 1){ int fa1

基于linux或windows平台上的c/s简单通信

血红的双手。 提交于 2019-12-04 11:55:14
linux: tcpclient.cpp 1 #include<iostream> 2 #include<unistd.h> 3 #include<sys/types.h> 4 #include<sys/socket.h> 5 #include<netdb.h> 6 #include<arpa/inet.h> 7 #include<cstring> 8 #include<sstream> 9 10 using namespace std; 11 12 #define BUFSIZE 512 13 14 // #define SERVERIP "192.168.41.32" 15 // #define SERVERPORT 4140 16 17 /*error report*/ 18 static void bail(const char *on_what){ 19 fputs(strerror(errno), stderr); 20 fputs(": ", stderr); 21 fputs(on_what, stderr); 22 fputc('\n', stderr); 23 exit(1); 24 } 25 26 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT) 27 { 28

Go netpoll I/O 多路复用构建原生网络模型之源码深度解析

北慕城南 提交于 2019-12-04 04:22:14
Go netpoll I/O 多路复用构建原生网络模型之源码深度解析 (转载) 导言 Go 基于 I/O multiplexing 和 goroutine 构建了一个简洁而高性能的原生网络模型(基于 Go 的I/O 多路复用 netpoll ),提供了 goroutine-per-connection 这样简单的网络编程模式。在这种模式下,开发者使用的是同步的模式去编写异步的逻辑,极大地降低了开发者编写网络应用时的心智负担,且借助于 Go runtime scheduler 对 goroutines 的高效调度,这个原生网络模型不论从适用性还是性能上都足以满足绝大部分的应用场景。 然而,在工程性上能做到如此高的普适性和兼容性,最终暴露给开发者提供接口/模式如此简洁,其底层必然是基于非常复杂的封装,做了很多取舍,也有可能放弃了一些『极致』的设计和理念。事实上 netpoll 底层就是基于 epoll/kqueue/iocp 这些系统调用来做封装的,最终暴露出 goroutine-per-connection 这样的极简的开发模式给使用者。 Go netpoll 在不同的操作系统,其底层使用的 I/O 多路复用技术也不一样,可以从 Go 源码目录结构和对应代码文件了解 Go 在不同平台下的网络 I/O 模式的实现。比如,在 Linux 系统下基于 epoll,freeBSD 系统下基于

Go netpoll I/O 多路复用构建原生网络模型之源码深度解析

ε祈祈猫儿з 提交于 2019-12-04 03:58:53
导言 Go 基于 I/O multiplexing 和 goroutine 构建了一个简洁而高性能的原生网络模型(基于 Go 的I/O 多路复用 netpoll ),提供了 goroutine-per-connection 这样简单的网络编程模式。在这种模式下,开发者使用的是同步的模式去编写异步的逻辑,极大地降低了开发者编写网络应用时的心智负担,且借助于 Go runtime scheduler 对 goroutines 的高效调度,这个原生网络模型不论从适用性还是性能上都足以满足绝大部分的应用场景。 然而,在工程性上能做到如此高的普适性和兼容性,最终暴露给开发者提供接口/模式如此简洁,其底层必然是基于非常复杂的封装,做了很多取舍,也有可能放弃了一些『极致』的设计和理念。事实上 netpoll 底层就是基于 epoll/kqueue/iocp 这些系统调用来做封装的,最终暴露出 goroutine-per-connection 这样的极简的开发模式给使用者。 Go netpoll 在不同的操作系统,其底层使用的 I/O 多路复用技术也不一样,可以从 Go 源码目录结构和对应代码文件了解 Go 在不同平台下的网络 I/O 模式的实现。比如,在 Linux 系统下基于 epoll,freeBSD 系统下基于 kqueue,以及 Windows 系统下基于 iocp。 本文将基于

(Linux)进程间通信

百般思念 提交于 2019-12-04 02:22:11
一、背景 进程间相互独立,内部变量,别的进程不可见 由内核提供一份公共资源,让多个进程可以看见 条件 独立性 为了相互通信,有共享资源 共享由操作系统内核实现 二、匿名管道 前一个进程的标准输出作为后一个进程的标准输入 1.本质 内核提供的一段内存(队列),通过内存借助这段内存,完成进程间通信。然后将管道这段内存抽象成文件。通过访问文件描述符的形式,来读写这块内存中的数据。 2.特点 1.只适用于具有亲缘关系的进程 2.单向通信,半双工 3.面向字节流 4.内置同步互斥机制 互斥:多个进程一起读,读到完整数据或者读不到数据 同步:管道为空,读阻塞;管道满了,写阻塞 5.生命周期随内存 所有引用这个管道的进程都销毁,管道才释放。真正释放的只是管道在内核中对应的这段内存,这个内存才是管道的本质 3.相关函数函数 pipe(创建一个匿名管道) #include <unostd.h> int pipe (int fd[2]); //参数:fd:文件描述符数组;fd[0]:读端;fd[1]:写端 //返回值:创建成功返回0;创建失败返回错误码 eg:从输入读取数据,写入管道,读取管道,写到输出(默认阻塞式等待) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main() {