quagga and frr,from The Linux Foundation

简介: website:https://frrouting.org/     github:https://github.com/FRRouting/frr FRRouting (FRR) is an IP routing protocol suite for Linux and Unix platf...

website:https://frrouting.org/     

github:https://github.com/FRRouting/frr

 

FRRouting (FRR) is an IP routing protocol suite for Linux and Unix platforms which includes protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP.

FRR’s seamless integration with the native Linux/Unix IP networking stacks makes it applicable to a wide variety of use cases including connecting hosts/VMs/containers to the network, advertising network services, LAN switching and routing, Internet access routers, and Internet peering.

 

支持的协议列表:

 

Protocol     IPv4     IPv6
OSPF    OSPFv2   OSPFv3
ISIS     ISIS IPv4   ISIS IPv6
RIP     RIP     RIPng
BGP     BGP IPv4   BGP IPv6
BGP 4-byte AS BGP   IPv4 4-byte AS BGP   IPv6 4-byte AS
LDP     LDP IPv4

 

每个守护进程使用socket收发报文,以RIP为例:

1、static int rip_create(void)

/* Create read and timer thread. */
rip_event(RIP_READ, rip->sock);
rip_event(RIP_UPDATE_EVENT, 1);

 

2、void rip_event(enum rip_event event, int sock)

thread_add_read(master, rip_read, NULL, sock, &rip->t_read);

thread_add_timer(master, rip_update, NULL,
sock ? 2 : rip->update_time + jitter,
&rip->t_update);

 

3、static int rip_read(struct thread *t)

len = recvfrom(sock, (char *)&rip_buf.buf, sizeof(rip_buf.buf), 0,
(struct sockaddr *)&from, &fromlen);

 

4、static int rip_send_packet(u_char *buf, int size, struct sockaddr_in *to, struct connected *ifc)

ret = sendto(rip->sock, buf, size, 0, (struct sockaddr *)&sin,
sizeof(struct sockaddr_in));

 

目录
相关文章
|
安全 Linux
什么是 Linux Foundation
什么是 Linux Foundation
490 0
什么是 Linux Foundation
|
网络协议 Shell Linux
Linux Foundation(笔记)
/************************************************************* * Linux Foundation * 1.
1025 0
|
5天前
|
NoSQL 关系型数据库 MySQL
Linux学习记录---(1、基本命令)
该博客文章提供了Linux系统中基本命令的使用记录,包括文件和目录操作、Redis服务管理、MySQL数据库操作以及Tomcat服务器的启动和检查。
Linux学习记录---(1、基本命令)
|
3天前
|
Linux
会玩这10个Linux命令,一定是个有趣的IT男!
会玩这10个Linux命令,一定是个有趣的IT男!
|
6天前
|
运维 Ubuntu Linux
Linux系统之ncdu命令的基本使用
【8月更文挑战第8天】Linux系统之ncdu命令的基本使用
14 2
Linux系统之ncdu命令的基本使用
|
2天前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
18 9
|
3天前
|
Linux Shell
linux命令
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
3天前
|
移动开发 运维 网络协议
运维必备 | Linux netstat命令详解
运维必备 | Linux netstat命令详解
|
3天前
|
Linux
真香~ Linux vi常用命令汇总!
真香~ Linux vi常用命令汇总!
|
4天前
|
Linux Shell
linux命令
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。