- IGP与EGP:
1、IGP简介
IGP(Interior Gateway Protocol,内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。Internet网被分成多个域或多个自治系统。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。
IGP协议包括RIP、OSPF、IS-IS、IGRP、EIGRP。
igp网关分类
内部网关协议可以划分为两类:距离矢量路由协议和链路状态路由协议。
距离矢量路由协议:距离矢量是指以距离和方向构成的矢量来通告路由信息。距离按跳数等度量来定义,方向则是下一跳的路由器或送出接口。距离矢量协议通常使用贝尔曼-福特 (Bellman-Ford) 算法来确定最佳路径。尽管贝尔曼-福特算法最终可以累积足够的信息来维护可到达网络的数据库,但路由器无法通过该算法了解网际网络的确切拓扑结构。路由器仅了解从邻近路由器接收到的路由信息。
距离矢量协议适用于以下情形:
-- 网络结构简单、扁平,不需要特殊的分层设计。
-- 管理员没有足够的知识来配置链路状态协议和排查故障。
-- 特定类型的网络拓扑结构,如集中星形(Hub-and-Spoke)网络。
-- 无需关注网络最差情况下的收敛时间。
链路状态路由协议:配置了链路状态路由协议的路由器可以获取所有其它路由器的信息来创建网络的“完整视图”(即拓扑结构)。并在拓扑结构中选择到达所有目的网络的最佳路径(链路状态路由协议是触发更新,就是说有变化时就更新)。
链路状态协议适用于以下情形:
-- 网络进行了分层设计,大型网络通常如此。
-- 管理员对于网络中采用的链路状态路由协议非常熟悉。
-- 网络对收敛速度的要求极高。
2、EGP简介
EGP(Exterior Gateway Protocol,外部网关协议)是一个在自治系统网络中两个邻近的网关主机(每个都有它们自己的路由)间交换路由信息的协议。EGP常常被用来在英特网的两个主机间交换路由表信息。路由表包括已知的路由器清单、它们能到达的地址以及与每个路由的路径相关的成本度量,以便选出最好的可用路径。每个路由器按照一定的时间间隔,通常在120秒到480秒之间,就给它的邻近路由发送信息,然后邻近路由就会将自己的完整路由表发回给它。EGP-2是EGP的最新版本。
外部网关协议用于在非核心的相邻网关之间传输信息。非核心网关包含互联网络上所有与其直接相邻的网关的路由信息及其所连机器信息,但是它们不包含Internet上其他网关的信息。对绝大多数EGP而言,只限制维护其服务的局域网或广域网信息。这样可以防止过多的路由信息在局域网或广域网之间传输。EGP强制在非核心网关之间交流路由信息。
由于核心网关使用GGP,非核心网关使用EGP,而二者都应用在Internet上,所以必须有某些方法使二者彼此之间能够通信。Internet使任何自治(非核心)网关给其他系统发送“可达”信息,这些信息至少要送到一个核心网关。如果有一个更大的自治网络,常常认为有一个网关来处理这些可达信息。
和GGP一样,EGP使用一个查询过程来让网关清楚它的相邻网关并不断地与其相邻者交换路由和状态信息。EGP是状态驱动的协议,意思是说它依赖于一个反映网关情况的状态表和一组当状态表项变化时必须执行的一组操作。
3、IGP与EGP的区别:
互联网是由路由器连接的网络组合而成的。为了能让数据包正确地到达目标主机,路由器必须在途中进行正确地转发。这种向“正确的方法”转发数据所进行的处理就叫做路由控制或路由转发。路由器根据路由控制表(Routing Table)转发数据包。它根据所收到的数据包中目标主机的IP地址与路由控制表的比较得出下一个应该接收的路由器。因此,这个过程中路由控制表的记录一定要正确无误。但凡出现错误,数据包就有可能无法到达目标。
路由协议大致分为两大类,一类是外部网关协议EGP,另一类是内部网关协议IGP.
IP地址分为网络部分和主机部分,EGP和IGP的关系与IP地址类似,EGP类似IP的网络部分,可以根据EGP在区域网络之间(或ISP之间)进行路由选择;IGP类似Ip的主机部分,根据IGP在区域网络内部(或ISP内部)进行主机识别。
由此,路由协议被分为EGP和IGP两个层次,没有EGP就不可能有世界上各个不同组织机构之间的通信,没有IGP机构内部也就不可能进行通信。
IGP中还可能使用RIP,RIP2,OSPF等众多协议 ,EGP使用的是BGP协议。
- AS:
AS(autonomous system,自治系统)在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。
一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。
- routed命令
routed是一个在POSIX计算机上通过UDP消息实现RIP协议的被广泛应用的程序。它实质上是一个独立的程序,这个程序在主机上通过调用icoctl()函数取得路由信息并更新路由表。
routed 既能够在服务器模式(-s)下运行,也能够在沉默模式(-q)下运行。两种模式都监听广播,但只有服务器模式发布它自己的信息。通常,只有那些具有多个接口的机器才应该是服务器。如果既没有指明-s,也没有指明-q,那么routed应该在只有一个接口时以沉默模式运行,而在具有多个接口时以服务器模式运行。 routed把它发现的路由添加到内核的路由表中。至少每隔4分钟就必须复审路由,否则路由将被删除。
不过,routed知道它已经添加了哪些路由,而且不会删除用route命令安装的静态路由。 routed -t用来调试路由。这个选项让routed在前台运行,并把它发送或接收的包都输出到屏幕。 一般而言,routed 能够动态地发现路由信息,它不要求配置。然而,如果网点包含了到 Internet或其他自治系统的网关,那么必须采取额外的步骤来使routed可以同这些链路配合使用。如果只有一个出口网关,那么,使用-g标志来运行routed,可以将这个网关公告为一条全局默认路由。这与在一台机器上设置默认路由类似,不同之处在于,这条路由会传遍您的网络。
routed还支持一个配置文件/etc/gateways,这个文件的目的是:提供网关的静态信息,“预先载入”到routed的路由表里。
命令格式:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
命令功能:
Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用"add"或者"del"参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。
命令参数:
-c 显示更多信息
-n 不解析名字
-v 显示详细的处理信息
-F 显示发送信息
-C 显示路由缓存
-f 清除所有网关入口的路由表。
-p 与 add 命令一起使用时使路由具有永久性。
add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到。
metric:设置路由跳数。
例:
[xxx@xxxx XXX]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric ref Use Iface
10.6.0.0 0.0.0.0 255.255.0.0 U 0 0 0 bond0
169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 bond0
0.0.0.0 10.6.0.1 0.0.0.0 UG 0 0 0 bond0
Flags标志说明:
U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态
- RIP协议报文格式,字段含义
RIP消息:分为两种,一种是RIP请求消息,一种是RIP响应消息
RIP协议版本:目前2个协议版本,分别为RIP-1和RIP-2(RIP Version 2 ,RIPv2)
RIP-1报文格式如下: (一个RIP报文最多携带25条路由)

Command: Response (2) #命令:1为RIP请求信息;2为RIP响应信息
Version: RIPv1 (1) #版本:使用RIPv1版本
Address Family: IP (2) #协议簇,该字段长度为4字节。对于TCP/IP协议簇,该字段的取值为2
IP Address: 192.168.0.0 #路由项的目的网络地址
Metric: 1 #跳数
RIPv2报文格式如下:

【Route Tag】:用于标记外部路由或者路由引入到RIPv2协议中的路由。
【 Subnet Mask】:用来标识使用IPv4地址的网络和子网部分
【NextHop】:下一跳IP地址
- ICMP重定向错误的处理流程
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发.
ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:网络重定向)达到这个目的。
重定向报文的处理
主机和路由器对于重定向报文有不同的处理原则。
路由器一般忽略ICMP重定向报文。而主机对于重定向报文的感知取决于操作系统。以Windows为例,对于网关返回的ICMP重定向报文,Windows会在主机的路由表中添加一项主机路由。那么以后对于这个目的地址数据报,主机会将其直接送往重定向所指示的路由器。支持重定向报文处理的还有许多的Unix系统,如FreeBSD的诸多版本等。这类主机收到ICMP重定向报文后所采取的行动基本都是增加主机路由。显然,修改默认网关是不合理的。
同时,有的操作系统对于重定向报文是不做任何处理而直接丢弃(虽然也同样经由网络层向上递交),比如Sun的某些系统。某些主机可以启动路由器功能,如FreeBSD的某些版本和Win32系统。这时主机的行为要特殊一些,会施加一些特殊条件来判断是否处理该重定向报文,这是依系统而异的。比如BSD,它检查重定向报文的条件之一是“重定向报文不能让主机本身作为网关”。
ICMP重定向的利与弊
ICMP重定向使得客户端的管理工作大大减少,使得对于主机的路由功能要求大大降低。该功能把所有的负担推向路由器学习。但是与此同时ICMP重定向也有很多弊端。
就重定向本身的机制来说,ICMP重定向增加了网络报文流量,因为主机的报文总是要在网关的直连网段上重复传输。那么更进一步如果主机的操作系统支持重定向(比如Windows)会如何?而主机收到重定向报文,会在自己的路由表中产生指向B的主机路由,经由1.1.1.2。事实上,主机这样可能会引起两点显著问题:
其一是引起性能问题,例如:有一台大型的服务器,要处理数十个子网下的数千台主机的业务。如果要支持重定向,那么服务器将会维护一个庞大的充满主机路由的路由表。这是一笔很大的开销。可能很大程度上降低服务性能,甚至导致网络服务瘫痪。
其二是可能埋下安全隐患。利用这点可以进行攻击和网络窃听。如果目的某主机A支持ICMP重定向,那么主机B发一个IMCP重定向给它,以后它发出的所有到指定地址的报文都会转发主机B,这样B就可以达到窃听目的了。当然,拿windows操作系统来说,它会对ICMP报文进行检查,如果这个重定向不是网关发送的,会被直接丢弃。不过伪造一个网关的数据包很容易。另外,如果刻意伪造许多虚假的ICMP重定向报文,主机路由表就可能被改的乱七八糟。
ICMP重定向的避免与消除
针对上述ICMP重定向引发的问题,我们可以采用一些手段来避免或补救。我们讨论的前提条件是不改变网络拓扑
关掉ip redirects
在路由器上取消ip redirect。这样路由器不向主机发送ICMP重定向报文。或者当起动HSRP或VRRP的时候,ICMP重定向会被关掉。这是相当于一台路由器作备份。有效的避免出现ICMP重定向。该方案是看似根本上解决了问题,但是只是ICMP重定向报文不会发回主机,解决了安全和主机负荷的问题,网络上的流量却没有减少。
不同掩码长度子网划分
使用子接口来改变ICMP重定向条件。
使用访问控制列表(ACL)
在高级的ACL中可以根据报文类型进行过滤,在出接口上绑定ACL,过滤掉报文。这样做实事上减少了网络流量,保证了主机的安全性,减轻主机负荷。但是会消耗路由器的处理资源。
代理ARP
代理ARP的方法比较直接,干脆在RT1上启动代理ARP,让自己的。主机广播ARP请求后,网关RT1返回RT2的接口MAC地址。这种方法相当于修改了主机的默认网关。其后所有的流量都被导向RT2。这样可能会影响原来的业务需求。所以这种方法是不可取的。
734



被折叠的 条评论
为什么被折叠?



