linux进程路由策略,linux路由表,策略路由,路由查找

路由表

内核中路由表有2种:

l 一个是缓存路由(fib),是自动学习生成自动管理的,用户没必要去干预,但是内核还是提供了方法让用户可以去清空它。但是用户不能设置它的项,但是可以根据这个缓存更新的原理从外部影响他。

l 路由表:一共有256个,在内核中是一个数组,可以配置让内核使用其中的一个或者多个。默认的是使用0,254,255这三个。一般大家关系都是254号的main路由,route命令看到的和操作的都是这个路由表。255是local路由,还包含了广播地址等,0是全路由,还包括了ipv6的,是最全面的。但是254的主路由是最容易看,也是用户最关心的,所以route命令只操作这个路由表。选择使用哪个路由表叫做留有策略,这个也是可以通过ip rule命令配置的。

路由表里面的路由类型有6种,我们平时见的最多的是单播和网段类型的:

l 单播。目的地址是某一个ip,一般是手动添加的。

l 网段。这个是最常见的,到达某个网段需要从哪里发送出去

l Nat。是的,nat也是路由的一种,他会修改掉ip的地址域为要到达的地址。之所以nat也是路由的一种是因为,nat也是一种形式的路由。这个nat和iptable的nat是同时存在的两种不同的机制。

l Unreachable:不可达类型的路由。我们经常看到不可达,通常是因为没有配置到目的地址的路由,或者是配置的不对。但是还可以单独的配置一个不可达类型的路由,即使他是可达的。

l Prohibit:禁止类型的路由。到某个地址的路由默认都是添加的如何到达,但是也可以添加如何禁止。同样是到某个网段或地址的路由,可以在某个网口上设置其禁止,这个与实际的到不了不再一个层次。这个是查路由的时候路由表告诉你的这个网段是被禁止的。

l Blackhole:到达目标网段的所有数据包都可以查到,但是都会直接被丢弃。也就是这是一个欺骗的路由条目。你以为你查到了,你以为你发出去了,其实都被悄悄地丢掉了。

这些种类的路由由于功能和路由策略重合,同时使用比较混乱,所以如果要实现复杂的路由,就应该使用路由策略规则,而不是这里的路由类型。

路由表查询匹配算法

路由表的查询匹配算法一般是lpm(longest prefix match),这种算法适合于不同精细度的网段,允许匹配最精细的网段设置,如果没有更精细的则匹配当前的。最不精细的等级就是0.0.0.0网段,可以匹配全部的网段。

路由策略

每一个路由表都对应一个路由策略,默认的路由策略最简单,就是查询表即可。默认也有3个路由策略:

0818b9ca8b590ca3270a3433284dd417.png

所以,我们自己添加了一个0,254,255之外的路由表之后,这个路由表也是不会正常的工作的,路由表只是数据库,查不查询,怎么查询是由路由策略决定的。自己添加了路由表之后要想让这个路由表被查询,需要添加一个对应的路由策略。默认的路由策略都是lookup,就是我们通常意义的查询行为,还有其他的路由策略行为:

l Nat:查询到的路由是用来做nat的。对应的路由表中一般是有很多nat类型的路由表

l Unreachable:所有在对应的路由表中查到的路由条目都给出unreachable的答案

l Prohibit:所有在对应的路由表中查到的路由条目都给出prohibit的答案

l Blackhole:所有在对应的路由表中查到的路由条目都直接丢弃

路由策略从第一个开始向后查询,进入查询每个策略对应的路由表,如果查到了,就采取对应的路由策略规定的行为。

路由查找流程

路由会现在缓存(fib)中查找,找不到则到路由表中查找。但是这个在路由表中查找并不但单纯的去查表,网上很多资料都是描述的仿佛是直接去查路由表,匹配目的地址,但这已经是2.2版本内核之前的事情了。现在的流程复杂的多。

以前的路由查找,只是单纯的根据目的ip地址来进行lpm匹配查询,而现在的策略路由支持根据其他的域,比如源地址,tos,来的端口等来决定匹配的策略(这些叫做selector)。当然,路由表还是单纯的目的地址匹配,支持多种匹配的是路由策略(rule)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python namedtuple(命名元组)使用实例

Python namedtuple(命名元组)使用实例 #!/usr/bin/python3import collectionsMyTupleClass collections.namedtuple(MyTupleClass,[name, age, job]) obj MyTupleClass("Tomsom",12,Cooker) print(obj.name) print(obj.age) print(obj.job)执行结果: To…

pd怎么卸载linux系统,parallels desktop11怎么卸载?parallels desktop11卸载方法

parallels desktop11是一款功能强大的MAC虚拟机软件,用户通过该软件可在mac系统下运行安装windows或Linux操作系统,不过很多时候用户在安装后,由于后期没有使用虚拟机的需求,故此想要将其删除,但是又不知道如何操作&am…

linux裸机安装nginx,linux环境下安装nginx步骤 - 进击的乌龟 - 博客园

开始前,请确认gcc g开发类库是否装好,默认已经安装。ububtu平台编译环境可以使用以下指令apt- get install build- essentialapt - get install libtoolcentos平台编译环境使用如下指令安装make:yum -y install gcc automake autoconf libtoo…

c语言命名参数,按照C语言的规定,实参和形参的命名不得重复。

按照羊脂玉具有( )光泽。衡量睡眠质量好坏包括入睡快慢,睡眠深浅,睡后能否解乏(精神情况、规定是否影响日常的工作和生活)三个方面。参和“有药吃而无伙食命亦难保”提示健康普及必须遵循的经济性原则。形参治病与调补都需要辩证,其中区别在于用药与药量的不同。命得重咳嗽除了…

阿诺德图像加密c语言,基于Arnold置乱的数字图像加密算法(二)

前文我们介绍了基于Arnold置乱的数字图像加密算法的两种图像置乱变换,今天我们介绍的是另外三种图像置乱变换:基于骑士巡游的图像置乱变换、基于Arnold变换的数字图像置乱和基于仿射变换的置乱变换。一、基于骑士巡游的图像置乱变换所谓骑士巡游&#xf…

8.2 css3 新增标签 盒子模型 长度单位 颜色 渐变 径像渐变

# CSS3 盒子模型* box-sizing 值 content-box 默认值 包括所有的值 / border-box 只算边框的长与宽* resize(调节框的大小) * 值 none不允许 / horizontal调节宽度 / vertical调节高度 / both都可以* outline轮廓边框 o…

Tomcat服务器的安装及配置

学习目标: 了解Tomcat服务器的主要作用掌握Tomcat服务器的安装与配置掌握Tomcat安装目录下主要文件夹的作用jsp的执行流程1.Web的工作原理流程图:从图中可以看出Tomcat服务器的主要作用就是接受客户端的请求和响应。 2.jsp执行流程 1)客户端发…

织梦DEDE网站后台如何上传附件

首先登录织梦网站后台: 分别点击 核心 — 附件管理 — 文件式管理 里面有织梦自带的几个文件夹,包括图片,视频,软件等文件夹。我们来新建一个file文件夹 点击 新建目录 建立file文件夹。 默认应该是跳转进file文件夹了&#xff…

泰拉瑞亚mod鸿蒙方舟,三款高评分的沙盒生存类手游,经典之作泰拉瑞亚你有玩过吗?...

沙盒类游戏由一个或多个地图区域构成,往往包含多种游戏要素,包括角色扮演,动作、射击、驾驶等等。能够改变或影响甚至创造世界是沙盒游戏的特点。自由度高也成为了沙盒游戏的一个标配,所以今天小皮就给大家推荐几款超赞的沙盒生存…

android任务 进程 线程详解,Android任务、进程、线程详解

singleTop模式,基本上于standard分歧,仅正在请求的Activity反好位于栈顶时,无所区别。此时,配放成singleTop的Activity,不再会构制新的实例加入到Task栈外,而是将新来的Intent发送到栈顶Activity外&#xf…

csdn markdown 编辑器开启

1、打开我的博客网址https://mp.csdn.net/ 2、在博客设置栏目中勾选markdown,并且选择自己喜欢的主题 3、保存

html检查输入为空,html input输入验证不为空

html5的话使用required即可,比较简单。但是ie10以下的浏览器没有required特性。所以就要靠其他方式来对用户输入做验证。下面是利用js的方法:function validate(){var domain document.getElementById(domain).value;var domainInfo document.getEleme…

Nagle算法延时确认

数据流分类成块数据交互数据Rlogin需要远程系统(服务器)回显我们(客户)键入的字符数据字节和数据字节的回显都需要对方确认rlogin 每次只发送一个字节到服务器,而Telnet 可以选择发送一行数据确认是通过期望数据序号Na…