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,一经查实,立即删除!

相关文章

图形桌面linux触摸,新手看招:用图形桌面访问Linux操作系统

创建用户帐户:adduser login-name (OS:Red Hat)useradd login-name (OS:SuSe)为帐户添加密码:passwd login-name (密码应该包括一个数字,且不能为英文单词)结束登录程序,启动另一登录实例:CtrlD从终端启动图形窗口环境…

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…

html5中使页面中元素居中

在div中加入 style"text-align: center;

linux下jdk源码安装,Linux JDK 源码安装

一 环境1.1 操作系统[roothost-xxxsoft]# lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarchDistributor ID: CentOSDescription: CentOS re…

Python map/reduce

2017-07-31 18:20:59 一、map函数 map():会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的iterator,即迭代器,使用list函数可以将之转成列表。 map(f…

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

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

Effective C++ 条款21

必须返回对象时。别妄想返回其reference 我们上节分析了对象引用传递的优点,如今说明函数返回引用对象带来的种种坏处。 先来一段代码: class Rational{ public:Rational(int numerator0, int denominator1);…… private:int n, d;friendconst Rationa…

html 中 em

◆px像素(Pixel),相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 ◆em是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。 因此用px来定…

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

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

雇佣兵

题目链接:http://noi.openjudge.cn/ch0105/37/ 总时间限制: 1000ms内存限制: 65536kB描述雇佣兵的体力最大值为M,初始体力值为0、战斗力为N、拥有X个能量元素。 当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结…

织梦的if(!defined('DEDEINC')) exit("Request Error!");解析

1if(!defined(DEDEINC)) exit("Request Error!");细细看看你就会发现,这句代码一般都是在 /include 路径下的php文件里边,为什么 dede 路径下的php文件没有呢?因为 include 路径下的文件是 类文件,也就是 方法文件 ,是以后要被 require_once 引入的文件,M…

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

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

python学习(十七) 扩展python

c, c, java比python快几个数量级。 17.1 考虑哪个更重要 开发速度还是运行速度更重要。 17.2 非常简单的途径:Jython和IronPython Jython可以直接访问JAVA标准库。 IronPython中可以直接访问C#标准库。 17.3 编写C语言扩展 扩展Python通常就是扩展CPython&#xff0…

织梦DEDECMS网站留言板提交时验证码错误返回空白页的解决办法

织梦DEDECMS模板网站留言板提交时验证码错误返回空白页的解决办法: 默认情况下,如果我们使用DEDE模板中的默认留言板时,如果留言信息不正确或者输入内容为空时,dedecms系统就会返回一个空白页。 这样的方式很不利于用户体验&#…

android 车辆轨迹,Android自定义view实现车载可调整轨迹线

本文实例为大家分享了Android自定义view完成车载可调整轨迹线的具体代码,供大家参考,具体内容如下同事做的view,拿过来做个记录。/****/package com.text.myviewdemo.view;import org.apache.http.conn.routing.RouteInfo.LayerType;import a…

导航栏制作

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>*{margin: 0px; /*盒子外边距*/padding: 0px; /*盒子内边距*/}.NavigatorView {width: 100%;height: 50px;background-color: WhiteSmok…