自适应区分服务

原创 2008年10月02日 17:13:00

相关1

目前在计算机网络中使用的传统路由算法都是根据IP包目的地址进行路由选择.然而在现实应用中经常有这样的需求:进行路由选择时不仅仅根据数据报的目的地址,而且根据数据报的其他一些特性如:源地址、IP协议、传输层端口,甚至是数据包的负载部分内容,这种类型的路由选择被称作基于策略的路由。


  在Linux中,从2.1版本的内核开始就实现了对基于策略的路由的支持,它是通过使用路由策略数据库(RPDB,routing policy database)替代传统的、基于目的地址的路由表来实现的。RPDB通过包含的一些规则来选定合适的IP路由。这些规则可能会包含很多各种不同类型的健值(key),因此这些规则没有默认的特定次序,规则查找次序或规则优先级都是由网络或系统管理员设定的。

  Linux的RPDB是一个由数字优先级值进行排序的线性规则列表。RPDB能匹配数据报源地址、目的地址、TOS、进入接和fwmark值等。每个路由策略规则由一个选择器和一个动作指示组成。RPDB按照优先级递增的顺序被扫描,RPDB包含的每条规则的选择器被应用于数据报的源地址、目的地址、进入接口、TOS和fwmark值。若数据报匹配该规则对应于该规则的动作被执行。若动作成功返回,则规则输出将是一个有效的路由或是路由查找失败指示;否则查找RPDB的下一条规则。

  当选择器和一个数据报匹配成功,会执行哪些动作呢?路由软件的标准动作一般是选择下一跳地址和输出接口,可以称这种动作为“匹配&设置”类型动作。然而Linux采取了更加灵活的方法,在Linux中有多种动作可供选择。默认的动作是查询特定的基于目的地址的路由表。

  因此“匹配&设置”动作就成为Linux路由选择的最简单情况。Linux支持多个路由表,每个路由表都包含多条路由信息。也就是Linux的每个路由表都相当于其他操作系统的系统路由表。Linux支持多达255个路由表。(Linux 2.2.12 支持255个路由表,255个汇聚域和232个策略规则优先级。

  对于Linux2.1/2.2,启动时内核将包含一个由三条策略规则组成的默认的RPDB,察看这些默认规则的一个方法是使用命令来列出系统的所有规则:

root@netmonster ip rule list

  0:      from all lookup local

  32766:  from all lookup main

  32767:  from all lookup default
 

  下面的默认规则在对于理解启动复杂路由系统是非常重要的。

  首先是最高级别的优先级规则,规则策略0:

  规则0: 优先级 0 选择器 = 匹配任何数据报

  动作=察看本地路由表(routing table local),ID为255。

  local表是保留路由表,包含了到本地和广播地址的路由。规则0是特殊的规则,不可被删除或修改。

  规则 32766: 优先级 32766 选择器 = 匹配所有数据报

  动作 = 察看主路由表(routing table main), ID为254。

  main路由表是默认的标准路由表,其包含所有非策略路由,main表是存放旧的路由命令(route命令)创建的路由。而且任何由ip route命令创建的没有明确指定路由表的路由都被加入到该路由表中。该规则不能被删除和被其他规则覆盖。

  规则 32767: 优先级 32767 选择器 = 匹配所有数据报

  动作 = 察看默认路由表(routing table default),ID为253。

  default路由表是空的,为最后处理(post-processing)所预留,若前面的默认规则没有选择该数据报时保留用作最后的处理。该规则可以被删除。

  不要将路由表和规则混淆,规则是指向路由表的。也许会出现多个规则指向同一个路由表,而有些路由表可能并不被任何规则指向。如果删除了指向某个路由表的所有规则,则该表将不发生作用,但是表将仍然存在。一个路由表只有在其中包含的所有路由信息被删除才会消失。

 

 

相关2

Linux netfilter机制应用浅释

Netfilter是自2.2版本内核后Linux网络内核重要的组成部分,是Linux网络防火墙以及IPtable实现的基础。Netfilter是一个提供了不同于BSD Socket接口的操作网络数据包的机制。在Netfilter中,协议栈每种协议都定义了若干个钩子(HOOK),如IPv6和IP v4均定义了五个钩子(将在后面的章节中详解),而对应协议的数据包将按照一定的规则通过若干个钩子,每一个钩子都是处理函数挂载点。内核模块则可以在各个钩子上注册处理函数,以操作经过对应钩子的数据包。函数处理后,根据一定的策略返回给内核进行下一步的处理。下面我们一IPv6为例子作进一步的解释。
IPv6协议定义了一下五个钩子,它们的名字(名字后面的是它们对应的值)告诉我们它们所处的位置,如图(附件)所示:
1. NF_IP6_PRE_ROUTING 0:数据包在抵达路由之前经过这个钩子。目前,在这个钩子上只对数据包作包头检测处理,一般应用于防止拒绝服务攻击和NAT;
2. NF_IP6_LOCAL_IN 1:目的地为本地主机的数据包经过这个钩子。防火墙一般建立在这个钩子上;
3. NF_IP6_FORWARD 2:目的地非本地主机的数据包经过这个钩子;
4. NF_IP6_LOCAL_OUT 3:本地主机发出的数据包经过这个钩子;
5. NF_IP6_POST_ROUTING 4:数据包在离开本地主机之前经过这个钩子,包括源地址为本地主机和非本地主机的。
对照附件,我们分析数据报经过Netfilter机制的过程。数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子NF_IP6_PRE_ROUTING注册函数进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子NF_IP6_LOCAL_IN注册函数处理以后然后传递给上层协议;若该数据包应该被转发则它被NF_IP6_FORWARD注册函数处理;经过转发的数据报经过最后一个钩子NF_IP6_POST_ROUTING注册函数处理以后,再传输到网络上。
本地产生的数据经过钩子函数NF_IP6_LOCAL_OUT注册函数处理以后,进行路由选择处理,然后经过NF_IP6_POST_ROUTING注册函数处理以后发送到网络上。
注册函数处理完后,将返回一个整形常量,内核根据这个返回值随数据报作下一步的处理。目前内核定义了一下四个常量:
1. NF_DROP 0:丢弃此数据报,而不进入此后的处理;
2. NF_ACCEPT 1:接受此数据报,进入下一步的处理;
3. NF_STOLEN 2:表示异常分组;
4. NF_QUEUE 3:排队到用户空间,等待用户处理;
5. NF_REPEAT 4:进入此函数再作处理。

真正的自适应式安全公司

https://www.illumio.com/resources#download-access
  • cnbird2008
  • cnbird2008
  • 2015年11月04日 17:08
  • 1528

网站移动端自适应匹配搜索引擎优化

老版meta标记: [wml|xhtml|html5]——根据手机页的协议语言,选择其中的一种。 url=url——后者代表当前PC页所对应的手机页url,两者必须是一一对应关系 新版H5标记...
  • havenlovelove
  • havenlovelove
  • 2016年06月12日 19:01
  • 1377

Nginx根据IP区分实现虚拟主机

Nginx可以使在一台服务器上运行多个网站,而且网络之间互相不干扰.      区分不同的网站有三种方式:      1.ip区分      2.端口区分      3.域名区分      1、将/...
  • zjx86320
  • zjx86320
  • 2016年06月21日 16:06
  • 799

delphi编程将当前进程变为一个系统服务(详细)

现在很多木马病毒以及流氓插件都注册成系统服务了,现在一起来看看是如何实现这个功能的!   一、把当前进程变为一个系统服务:   目的是在任务列表中把程序隐藏起来。调用API函数RegisterSe...
  • Trassion
  • Trassion
  • 2012年12月05日 21:34
  • 1850

DiffServ:区分服务体系结构

DiffServ:区分服务体系结构 (DiffServ: Differenciated Service )    区分服务体系结构(DiffServ)定义了一种可以在互联网上实施可扩展的服务...
  • hrl7752
  • hrl7752
  • 2017年08月03日 21:27
  • 52

端口:区分不同服务

“端口”是英文port的意译,可以认为是设备与外界通讯交流的出口。端口详解端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态...
  • w124374860
  • w124374860
  • 2016年09月23日 19:29
  • 231

TCP IP首部详解

IP报文首部: 版本号 占4位,标识目前采用的IP协议的版本号。一般的值为0100(IPv4),0110(IPv6) 首部长度   占4 位,用来表示IP报首部的长度。范围是0000--1111...
  • Captain_MXD
  • Captain_MXD
  • 2016年04月18日 17:10
  • 515

SOA中怎样确定服务的粒度——by Vega

SOA,Service Oriented Architecture,顾名思义是面向服务的架构,整个系统要借助服务的设计来完成建模,因此服务的设计是整个系统中很重要的一环。服务的设计牵涉到两个重要的概念...
  • scutSOA
  • scutSOA
  • 2006年07月03日 16:09
  • 2942

个性化学习之自适应测试[Adaptive Test]

自适应测试的进展 计算机诊断是一种越来越受欢迎的评估学生的方法.这种方式需要进行优化,以便学生可以在尽可能少的时间里获取准确的评估。这种优化方式可能是通过学习分析或者计算机自适应测验(CATs):...
  • reallocing1
  • reallocing1
  • 2017年03月08日 13:53
  • 1320

自适应HTML页面源码

之前做一个简单的界面,需要自适应界面大小,下面是网上找的一个demo,不需要任何依赖文件就能跑的。   Demo: Responsive Design in 3 Steps ...
  • qq_28379809
  • qq_28379809
  • 2017年10月20日 16:55
  • 229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自适应区分服务
举报原因:
原因补充:

(最多只允许输入30个字)