Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >路由选择:专用性与度量

我了解到,当Linux执行路由选择时,它会选择最具体的到达目的地的路径。但是路线的度量又如何呢?它是否比路线的特异性有更高的优先级?

还请参考Linux使用的路由选择算法的详细信息。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2014-12-01 08:40:38

路由度量是以相同的专一性在路由之间设置偏好。在一般情况下(如Cisco、Windows等),这是正确的。因此,该模型的工作原理如下:

  1. 找到最特定的路由(也就是最长的前缀匹配*)
  2. 如果有多条具有相同特异性的路由,那么选择行政距离最低的路由(这可以区分直接连接的路由、静态路由和各种路由协议)。
  3. 在该路由协议和特定路由(如果路由专用性和管理距离相同)中,选择度量最低的路由。

请注意,在这样的基于策略的路由上还有其他事情可以让您根据源IP地址执行路由之类的操作。但是,我认为主要的三件事情是路线特异性、行政距离、然后是公制。

*它被称为最长前缀匹配,因为二进制子网(例如/24)看起来像11111111.11111111.11111111.00000000。因此,路由器只需扫描二进制1的前缀,并在碰到零时停止,然后与前缀匹配。

票数 31
EN

Server Fault用户

发布于 2014-12-20 14:59:07

Linux为灵活的路由选择提供了许多工具。

单路由表

在最简单的情况下,只有一个内核路由表,没有带有SRC属性的路由。此表包含一些路由,这些路由由DHCP守护进程或路由守护进程手动放置(ip route add)。在这种情况下,内核选择:

  • 最具体的路线;
  • 如果存在多个相同特定的路由,则使用最小内核度量的路由。

注意,内核度量(由ip route show显示)由路由守护进程选择,不一定与任何特定路由协议的度量相关。例如,Quagga对它在内核中安装的所有路由使用相同的度量,而不依赖于协议的度量。

源专用路由

Linux还支持具有SRC属性的路由,该属性只匹配具有给定源地址的数据包。SRC只适用于IPv6,直到最近(如果内存正常的话,3.11)都是错误的;除非您知道自己在做什么,否则我不建议使用它。

多路由表

如果您需要比上面所提供的更多的灵活性,您将需要使用多个路由表,并编写规则来为每个数据包选择一个特定的路由表。一种常见的技术是在源地址上进行调度,以模拟特定于源的路由。另一种技术是在自己的路由表中运行每个路由守护进程,并模拟Cisco的“管理距离”。所有这些在LARTC第四章中都有详细的描述。

票数 10
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/648276

复制
相关文章
[Leetcode 2021 刷题计划] 224. 基本计算器
由于只含有加减法和括号, 并不需要考虑运算优先级的问题,仅有由于括号外符号对括号内符号的影响。所以只需要考虑括号外符号对括号内符号的反转。
windism
2021/03/10
2910
224. 基本计算器
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
张伦聪zhangluncong
2022/10/26
3840
227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
张伦聪zhangluncong
2022/10/26
3130
[Leetcode 2021 刷题计划] 227. 基本计算器 II
每日一题时间: 2020-03-11 题目链接: 227. 基本计算器 II 官方题解链接: 基本计算器 II 题目 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5 提示: 1 <= s.length <= 3 * 105 s 由整数和算符 ('+', '-', '*', '/') 组成,中间
windism
2021/03/11
3220
c++实现简单计算器
帮一个同学写的,非计算机类专业,应付交差,也没什么功能,两个数的加减乘除运算,以及三角函数的运算。要求用到模板、运算符重载和异常处理。 一直以来都是用的java,没怎么用过c++,就当是复习了一下c++语法。 代码如下: 1 #include<iostream> 2 #include<string> 3 #include<cmath> 4 #include<cstdlib> 5 6 using namespace std; 7 8 //四则运算 9 template
欠扁的小篮子
2018/04/10
2K0
Basic Calculator 基本计算器-Leetcode
1.题目: Implement a basic calculator to evaluate a simple expression string. The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces . You may assume that the given expression is
老白
2018/03/19
1.2K0
227. 基本计算器 II
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5 class Solution { public int calculate(String s) { /** 有一个记录上一次出现的符号变量的 pre 加法直接入栈
编程张无忌
2021/06/01
3280
LeetCode 224. 基本计算器(栈)
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
Michael阿明
2020/07/13
5590
c++多态案例之计算器类
案例描述:利用普通技术和多态技术分别实现两个操作数进行运算的计算器类。 多态的优点:代码结构清晰;可读性强;利于前期和后期的扩展以及维护; #include<iostream> using namespace std; //普通写法,如果想扩展,需要修改源码 //在实际开发中,提倡开闭原则,对扩展进行开发,对修改进行关闭 class Calculator { public: int num1; int num2; int getResult(string oper) {
西西嘛呦
2020/08/26
6340
LeetCode 227. 基本计算器 II(栈)
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
Michael阿明
2020/07/13
6250
LeetCode 227. 基本计算器 II(栈)
C++基本语法
&在c++中的一种作用为取出当前变量在内存的逻辑地址 *在c++中的一种作用为取出当前逻辑地址对应的内存空间的值 c++中提供指针变量存储对象的地址,指针的运算会被编译器优化为地址的运算,比如一个int类型的指针 p+1的值实际是p指向的地址+1个int所占空间大小后的逻辑地址 指针语法为 typename * variable,比如
歪歪梯
2020/08/17
1.1K0
用C++模拟"奇怪"的手机计算器
风水轮流转,出道多年一向默默无闻的手机计算器突然成了网红,类似手机计算器“全线阵亡”这样的言论充斥各种媒体。问题的起源是网友发现手机计算器上计算10%+10%这样的小学数学范畴的运算时,手机计算器得出的结果并不是标准数学答案0.2,而是让人觉得有点奇怪的0.11!这是不是手机计算器软件设计者出现的bug呢?
诸葛青云
2019/10/07
9030
用C++模拟"奇怪"的手机计算器
力扣227——227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。整数除法仅保留整数部分。
健程之道
2020/03/12
3410
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
恬静的小魔龙
2022/09/27
4560
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
简单计算器 C++ 你是真的会玩坑
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
叶茂林
2023/07/30
2360
小朋友学C++(24):实现简易计算器
一、需求 编写一个简易计算器,能实现最基本的加减乘除四则运算。 二、代码实现 #include <iostream> using namespace std; int main() { double num1,num2; char op; // 运算符号 char flag; // 是否继续运算,'Y'或'y'表示是,'N'或'n'表示否 while(true) { cout << "Enter first number:" << end
海天一树
2018/12/24
7980
【C++简明教程】C++基本语法
在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
机器视觉CV
2020/07/23
9680
【C++简明教程】C++基本语法
C语言和C++混合开发简单版本计算器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
1.2K0
C语言和C++混合开发简单版本计算器
基于STM32设计的计算器(实现基本运算)
计算器是最常见的工具了,现在不管是手机、电脑都带有计算器功能,支持强大的科学运算等。
DS小龙哥
2022/01/06
2K0
基于STM32设计的计算器(实现基本运算)
C++ OpenCV基本阈值操作
新建一个项目opencv-0014,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.这次我们直接在第二个图片上加上一个TrackBar直接显示出来,然后再进行操作,其中定义了一个thresthold_value的值为TrackBar的初始值,然后写了定义一了个TrackbarEvent(int,void*)的事件用于关联Trackbar的,这次我们加载的图片是几何形状的图片
Vaccae
2019/07/24
2K0

相似问题

C++新手-基本计算器问题

40

C++基本计算器。初学者

34

基本计算器

23

基本贷款计算器

12

基本JFrame计算器

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档