2009年1月3日星期六

在运行Cisco IOS Software的交换机上配置VLAN(二)

一、两个层二VLAN之间的隔离
层二VLAN是指在交换机上创建了VLAN而且没有使用interface vlan vlan_number进行配置的VLAN。在两个不同的层二VLAN中的主机,彼此不能通信。
创建一个层二VLAN,并且将它与以前的层二VLAN进行隔离:
1、在数据库中创建新的VLAN:
switch#vlan database
switch(vlan)#vlan 5
switch(vlan)#vlan 6
switch(vlan)#exit
2、确定新的VLAN已经创建到数据库中,并且在show vlan命令的输出中能够看到。
3、不要给新创建的VLAN设置IP。
4、将连接有主机的物理端口添加到VLAN中:
switch(config)#interface fastethernet 2/1
switch(config-if)#switchport mode access
switch(config-if)#switchport access vlan 5
switch(config-if)#no shutdown

switch(config)#interface fastethernet 2/2
switch(config-if)#switchport mode access
switch(config-if)#switchport access vlan 6
switch(config-if)#no shut
5、给每个主机配置一个静态IP地址、子网掩码但是不要设置默认网关。这样,连接到两个端口上的主机相互之间不能通信。属于同一VLAN的设备只能与本VLAN的主机进行通信。

二、两个层三VLAN之间的隔离
当我们创建了一个VLAN,并且使用interface vlan vlan_number命令将其配置了IP地址以后,这个VLAN变成了一个层三VLAN。在层三交换机上,如果主机将所在VLAN端口IP地址配置成自己的默认网关,那么处于两个VLAN的主机之间能够互相通信。此时,我们只能使用ACL来对其进行隔离。
例如:有两个VLAN,VLAN4:192.168.1.0/24;VLAN5:192.168.2.0/24
访问控制列表:
access-list 104 deny 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 104 permit any any
access-list 105 deny 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
access-list 105 permit any any
然后将访问控制列表应用到SVI上。
interface vlan 4:
ip access-group 104 in
interface vlan 5:
ip access-group 105 in
注:这里判断是in还是out的时候要注意,SVI类似于交换机上的物理端口,因此in是指进入交换机;out是指出交换机
注:大多数Catalyst交换机只支持为每个数据包进行四次ACL查找:入站和出站安全ACL以及入站和出站QoS ACL。Cisco层三交换机能够识别三种ACL:
1、RACL(Router Access Control List,路由器访问控制列表)--RACL是应用于路由器型接口的Cisco IOS标准ACL,只有在跨VLAN路由时才会起作用
2、VACL(VLAN Access Control List,VLAN访问控制列表)--VACL又称为VLAN访问映射表,应用于VLAN中的所有通信流量。VACL支持基于Ethertype和MAC地址的过滤。与基于Cisco IOS的路由映射表一样,要注意VACL中条目的顺序
3、QoS访问控制列表-- QoS ACL指定了QoS分类、标记、控制(policing)和调度将应用于哪些数据报
4、PACL(Port Access Control List,端口访问控制列表)--通过在第二层应用PACL,将能够控制进出端口的流量

三、在Catalyst 6500系列交换机上配置扩展VLAN
为了在运行Cisco IOS的Catalyst 6500系列交换机上配置扩展VLAN,我们需要输入spanning-tree extend system-id命令。此外,扩展VLAN必须从全局配置模式创建,而不能通过vlan database模式创建。
1、console进交换机
2、进入配置模式
3、输入spanning-tree extend system-id命令,在全局配置模式下
4、输入vtp mode transparent命令,在全局配置模式下
5、创建扩展VLAN
6、退出配置模式
7、使用show vlan命令,来检查VLAN配置信息

在运行Cisco IOS Software的交换机上配置VLAN(一)

在Catalyst3550、3750、4500/4000以及6500/6000交换机上配置VLAN,这些交换机都运行CiscoIOS。
一、创建VLAN和端口
这里我们使用Catalyst4500交换机作为例子,其他层三交换机(或者使用Cisco IOS的交换机)都是类似的配置。这里所说的其他交换机有Catalyst 3550、3750和6500系列运行Cisco IOS的交换机。在创建VLAN以前,交换机必须运行在VTP服务器模式或者VTP透明模式下。如果交换机是一个VTP服务器,那么我们必须在添加任何的VLAN以前,首先确定一个VTP域名。不管网络中交换机的数量是一个还是多个,也不管是否使用VTP来将VLAN信息传播网络中其他交换机,我们都需要确定一个VTP域名。
我们可以在VLAN database模式或者全局配置模式下创建VLAN。如果我们必须创建VLAN号大于1005的的VLAN,必须将交换机配置为VTP透明模式,以创建VLAN。VLAN号大于1005的VLAN不会被VTP发布。更进一步,号大于1005的VLAN被存储在交换机配置文件中,而不是VLAN.dat文件中。在使用Supervisor Engine IV的Catalyst4000系列的交换机中,VLAN.dat 文件的默认存储在Cat4000_flash目录中:
switch#dir cat4000_flash
dir---list files in a filesystem
注:运行Cisco IOS的Catalyst6500交换机允许我们不用VTP域名,就可以在VTP服务器模式下创建VLAN。
使用show vtp status命令查看交换机上的VTP信息
1、使用show vlan命令,检查VLAN信息
2、进入正确的模式:VLAN数据库模式或者是全局配置模式
在特权模式下,输入vlan database命令,进入VLAN database模式
3、使用vlan vlan_number来,配置一个VLAN。
注:为了使配置生效,我们需要使用apply命令或者使用exit命令退出VLAN database模式。end或者Ctrl-Z在VLAN database模式下不起作用。使用exit命令退出VLAN database模式。
在全局模式下的配置是立刻生效的,只需要输入vlan vlan_num。
4、使用show running-configure命令来查看VLAN号大于1005的VLAN信息。
在Cisco IOS 中,端口默认是关闭状态的。与基于CatOS的交换机不同。在CatOS中,端口检测到物理链接的时候,会自动激活。Cisco IOS则需要no shutdown。
默认情况下,在使用Cisco IOS的Catalyst3500、3750和4500系列交换机上的端口为层二端口。在Catalyst6500/6000系列交换机上的端口为层三端口。我们可以在端口配置模式下,使用switchport命令来配置一个层二端口。如果这个端口是一个层三端口,在将这个端口添加到VLAN中之前我们必须首先使用switchport命令来将端口配置为层二端口模式。将端口添加到VLAN中的命令是:switchport access vlan vlan_number。
注:如果端口被配置成一个层三端口,这意味着no switchport 命令被配置了。此时,我们不能将这个命令添加到VLAN中。
为了将一个端口添加到VLAN中(使用Cisco IOS),下面是最少的需要的配置:
switch(config)#interface gigabitethernet 3/1
switch(config-if)#switchport
!--如果端口处于层三模式下,这个命令是必须的,因为层三模式下no switchport 命令是被配置的,这些交换机,默认情况下都是层三端口
switch(config-if)#switchport access vlan 2
switch(config-if)#no shutdown
!--层三端口默认是shutdown
使用show interface gigabitethernet module/interface switchport命令来检查层二端口的状态。
如果使用默认配置,本地VLAN被设置成VLAN1。为了改变Trunk端口上的本地VLAN,可以使用switchport trunk native vlan vlan_number命令。
我们可以使用show interface gigabitethernet 3/1 trunk来确认本地VLAN的改变。

二、将多个端口添加到一个VLAN中
我们可以用一条命令,将多个端口添加到一个VLAN中:
1、switch(config)#interface range fastethernet [mod/slot-mod/slot]
2、switch(config-if-range)#switchport access vlan vlan_number
3、switch(config-if-range)#switchport mode access
4、switch(config-if-range)#no shut
注:interface range命令并不是所有的版本都支持。只有Cisco IOS Software Release 12.1(13)EW以及以上的版本才支持这个命令。

三、删除VLAN
为了将VLAN数据库中的VLAN删除,我们可以在VLAN database模式或者全局配置模式下,使用no vlan vlan_num命令来删除VLAN。下面例子是在VLAN database 模式下删除VLAN2:
switch#vlan database
switch(vlan)#no vlan 2
switch(vlan)#apply
在全局配置模式下,我们不需要输入任何信息来使VLAN的删除生效,但是我们还是应该使用show vlan 命令来确认VLAN的删除。

四、重命名VLAN
为了将VLAN数据库中的VLAN重命名,我们可以在VLAN database模式或者全局配置模式下,使用name vlan_name 命令进行配置。
例如在全局配置模式下:
switch(config)#vlan 3
switch(vlan-config)#name cisco
可以使用show vlan brief 或者show vlan-switch brief命令来确认修改。
注:当我们重命名VLAN的时候,没有必要使用switchport access vlan vlan_number,来将VLAN从端口上删除,再重新添加到新命名的VLAN中(因为所有属于原先VLAN的端口会自动添加到修改名字后的VLAN中)。

在Catalyst交换机上配置VLAN

在Catalyst 2900XL,3500XL,2950,2970,以及2940系列交换机上配置VLAN
一、创建VLAN和端口
在创建VLAN以前,交换机应该处在VTP服务器模式或者VTP透明模式。如果这个交换机是一个VTP服务器,我们必须在添加VLAN以前,定义一个VTP域名。
1、决定是否在网络中启用VTP
使用VTP,我们可以集中的在一台交换机上配置VLAN的改变,并且可以自动地将这些改变通知到网络中的所有交换机。交换机默认处在VTP服务器的模式。
注:我们可以使用show vtp status命令,查看XL系列交换机上的VTP模式。
2、在创建并确定了VTP域以后,开始在交换机上创建VLAN
创建VTP域:vtp domain domain_name
默认情况下,交换机上所有的端口都属于VLAN1。我们不能删除或重命名VLAN1,使用show vlan 命令来查看VLAN信息。
在全局配置模式下,使用vlan database命令进入vlan配置模式,以便配置VLAN信息。
注:vlan database命令模式是面向会话的,所以它与其他模式存在区别、当用户增加、删除或修改VLAN参数的时候,除非用户通过输入apply或exit命令来退出会话,否则交换机不会应用这些更改。
使用vtp server,将交换机设置为VTP服务器模式,类似的,可以将交换机设置为透明模式和客户端模式。
注:交换机只有在VTP服务器模式或透明模式下,才能够创建VLAN。
在VLAN配置模式下,使用vlan vlan_number name vlan_name命令,来创建VLAN。
注:如果交换机试图学习或者传递大于交换机本身支持的VLAN数量的VLAN信息时,交换机会从客户端模式转换成透明模式。我们需要检查运行在客户端模式下的交换机,它所支持的VLAN数是不是等于VTP服务器所有能支持的VLAN的数目。
3、使用show vlan 来确认VLAN是否正确的创建
4、现在我们可以向新产生的VLAN中添加端口了
我们必须进入端口配置模式下,为每个我们想添加进VLAN的端口进行配置。
我们可以将二层交换机上的端口添加到多个VLAN(这里的意思并不是说将一个端口添加到多个VLAN,而是说一个交换机可以配置多个VLAN),但是由于是二层的交换机,交换机同时只能支持一个管理VLAN接口,当一个管理VLAN接口起作用的时候,其他的SVIs(Switched Virtual Interfaces)不会激活。因此,二层交换机仅支持一个激活的三层管理地址。在二层交换机上,我们可以在新的SVI下面,使用management命令,来自动的关闭VLAN1的管理IP,而将这个IP地址转换到新的VLAN中。
switch(config)#interface vlan 2
switch(config-subif)#management
switch(config-subif)#exit
我们可以通过下面一系列命令,将某个端口添加到VLAN中:
switch(config)#interface fastethernet 0/2
switch(config-if)#switchport access vlan vlan_num
!--这里还有一个选项,dynamic,当端口处于访问模式时,这个端口所属的VLAN由VMPS动态分配。
switch(config-if)#exit
5、使用show vlan命令来确认VLAN配置

二、删除端口或者VLAN
在端口配置模式下,使用no switchport access vlan vlan_num命令,可以将该端口从VLAN中删除。在将一个端口从非默认VLAN中删除时,这个端口会被归到默认VLAN中。
例如:我们可以通过一系列命令,将fastethernet 0/2 端口,从VLAN2中删除:
switch(config)#interface fastethernet 0/2
switch(config-if)#no switchport access vlan 2
switch(config-if)#exit
在VLAN database模式下,使用no vlan vlan_num命令,可以删除VLAN。但是这个时候,这个被删除了的VLAN中的端口,仍然作为VLAN的一部分,而且被失效,因为它们现在不属于任何VLAN。
例如:我们使用下面一系列命令来将vlan2删除:
switch#vlan database
switch(vlan)#no vlan 2
switch(vlan)#exit
此时使用show vlan 命令,在这个命令的输出中,找不到属于vlan2的端口。因为由于VLAN2的删除,属于这个VLAN的端口都失效了。除非我们将这些端口重新添加回一个VLAN中。
为了使一个端口可用,我们必须将它添加到一个VLAN中,默认所有端口属于VLAN1。

三、在Catalyst 2900XL/3800XL上配置一个多VLAN端口
交换机上的多VLAN端口功能,可以允许我们将一个端口配置到多个VLAN中。这个功能允许用户在不同的VLAN中访问一个服务器或者路由器,而不用配置VLAN间路由。一个多VLAN端口能够与它属于的所有VLAN进行正常的交换功能。在多VLAN端口上的流量不会像Trunk那样进行封装。
注:有一些使用多VLAN端口功能的限制:
当在交换机上配置了一个Trunk的时候,不能再使用多VLAN端口功能。多VLAN端口只能连接到一个服务器或者路由器。当多VLAN端口功能被启用的时候,交换机会自动转换成VTP透明模式。交换机禁用了VTP功能,因为不需要VTP配置。
多VLAN端口功能只被Catalyst 2900XL/3500XL系列的交换机支持,其他的交换机不支持。
1、首先决定那个端口要被设置成多VLAN端口
2、将FastEthernet 0/1配置成多VLAN模式,并将其添加到多个VLAN中
注:这个端口只能连接到路由器或这服务器
switch(config)#interface fastethernet 0/1
switch(config-if)#switchport mode multi vlan 1,2,3
switch(config-if)#exit
3、使用show interface interface_id switchport命令和show vlan命令来确认配置
4、使用ping命令来确认从交换机到路由器或服务器的连通性
将SVI的IP地址分别赋给VLAN1、VLAN2、VLAN3,然后ping服务器或路由器,来测试连通性。

2008年12月31日星期三

OSPF路由协议(二)

一、SPF算法
SPF路由算法是OSPF的基础。当一个SPF路由器加电以后,它首先引导自己的路由协议数据组件,然后等待来自底层协议的信息。
当一个路由器确认它的接口正常工作以后,它使用OSPF的Hello协议来获取邻居信息。这些邻居是指有接口在同一网络中的路由器。路由器将hello包发送给它的邻居,并从邻居哪里接收hello包。为了帮助发现邻居,hello包也设置了保持生存计时器,来让路由器知道其他路由器是否可用。

在多播网络中(网络支持两个以上的路由器),Hello协议推选一个指定路由器和一个备用指定路由器。在其他事情中,指定路由器负责为整个多播访问网络产生LSA。指定路由器的存在也是为了缩减网络流量以及缩减拓扑数据库的大小。
当两个邻居的链路状态数据库同步了以后,我们就可以说这两个路由器是邻接状态。在多播访问网络中,指定路由器决定那些路由器应该变成邻接状态。拓扑数据库在邻接路由器之间是同步的。邻接控制了路由协议数据包的发布,这些数据包只能在处于邻接状态的路由器之间发布。
每一个路由器周期性的发送LSA来为它们邻接提供信息或者在一个路由器状态改变的时候通知其他路由器。通过已经确定的邻接和链路状态两者之间的比较(已经确定的邻接即拓扑数据库与最新的链路状态不相同,这样我们就可以判定网络发生了变化),失效的路由器能够迅速的被检测出来,并且网络拓扑也可以被正确的修正。通过从LSA的产生的拓扑数据库,每个路由器能够构建出一个最短路径树,每个路由器本身是这个树的根。这个最短路径树依次产生一个路由表(即这个最短路径树中的到达每个节点的一条路径就是路由表的一个条目)。


二、数据包格式
所有的OSPF数据包都以一个24字节的包头开始,如上图所示
1、版本号:用于标识OSPF的使用版本
2、类型:用于标识OSPF数据报的类型,具体类型如下:
Hello:确定和管理邻居关系
Database description:描述拓扑数据库的内容,这些信息会在一个邻接关系初始化的时候进行交换。
Link-state request:从邻居路由器哪里请求部分拓扑数据库。在一个路由器发现它的拓扑数据库以及过时以后,这些信息会被交换(通过测试数据库描述数据包)
Link-state update:回应一个链路状态请求数据包,这些信息也被用于LSA平常的发布。在一个链路状态更新数据包中可以包含多个LSA。
Link-state acknowledgment:一个链路状态更新数据包的确认(可靠传输)
3、路由器ID:标识包的源路由器
4、区域ID:标识这个包属于那个区域。所有的OSPF数据包属于一个单独的区域
5、校验和:校验整个数据报的内容有没有在传输过程中被损坏
6、认证类型:包含认证类型,所有的OSPF协议交换是被认证的。认证类型是基于每个区域的。每个区域之间可以不同
7、认证:包含认证信息
8、数据:包含封装了的上层的信息
三、其他的一些OSPF功能
这些功能包括:花费等价(equal-cost)、多路径路由和基于上层服务类型的路由请求。基于服务类型(TOS)的路由支持许多上层协议。例如,某一个应用可能需要特定的数据是紧急数据,如果OSPF在它进行传输的时候有高优先级的链路,我们就可以用高优先级的链路来传输这个应用的这些紧急数据。
OSPF支持一个或多个度量,如果只有一个度量被使用,那个会被认为是专有的,并且TOS不会被支持。如果有多于一个度量被使用,三个IP TOS位(延迟、吞吐量throughput、可靠性位)可以产生的八种组合,通过为每个组合使用一个单独的度量(即使用单独的路由表)TOS可以选择性的支持每种组合。例如:如果IP TOS位定义了一个低延迟、低吞吐量但是高可靠性的组合,那么OSPF会基于这个TOS设定,来计算一个通向所有目的地的路由。
IP子网掩码包含在每次目的地的发布中,并且也支持变长子网掩码。通过使用变长子网掩码,一个IP网络可以被分成不同大小的子网。这为网络管理提供了额外的网络配置扩展性。

OSPF路由协议(一)

一、背景知识
OSPF是IETF的IGP工作组专门为IP网络开发的一个路由协议。OSPF产生于19世纪80年代,由于RIP已经不能使用网络的快速增长。
OSPF有两个主要的属性:第一个是这个协议是开放的,OSPF的定义被发布在RFC1247。第二个是OSPF是基于SPF算法的。SPF算法有时被叫做Dijkstra算法。
OSPF是一个链路状态路由协议,它发送LSAs(Link-State Advertisements)给所有其他在同一等级区域的路由器。OSPF的LSA中的信息包括:经过的接口、使用的度量以及其他的一些变量。随着OSPF路由器积累链路状态信息,它们使用SPF算法计算出到每个节点的最短路径。
作为一个链路状态路由协议,OSPF与其他例如RIP、IGRP一类的距离矢量路由协议明显不同,运行距离矢量算法的路由器将全部或部分的路由表作为路由更新,发送给它的邻居们。

二、路由等级(Routing Hierarchy)
不像RIP,OSPF可以分等级的进行操作(即将网络划分为不同的等级)。在这个分级系统内最大的实体是自治系统AS。AS是一系列网络的集合,这里网络分享公共的路由策略,并且被统一管理。OSPF是一个AS内部的路由协议(即内部网关路由协议)。但是OSPF也可以从别的自治系统接收路由信息或者将路由信息发送到别的自治系统。
一个AS可以分为一系列的区域,区域是相邻的网络以及这些网络上的主机构成的集合。具有多个端口的路由器可以同时处于多个区域中。这些处于多个区域中的路由器叫做边界路由器,它们为每个区域单独维护着一个拓扑数据库。
拓扑数据库实质上是对所有路由器和网络相互关系的完全描绘。这些拓扑数据库包含了收集到的所有LSA信息,一个拓扑数据库中包含的信息都是来自同一区域内的所有路由器。因为在同一区域内的路由器分享相同的信息,这些信息确定了拓扑数据库。
域这个词有时被用于描述分享同一拓扑数据库的路由器所在网络的一部分。大部分情况,域可以与AS交换使用。
一个区域内部的拓扑结构对外而言是不可见的。通过保持区域拓扑的独立性,OSPF减少了很多路由流量,与AS不分区域相比。
根据源和目的在相同区域或者不同区域,产生了两种类型的OSPF路由,区域内路由是指源和目的在相同的区域内。区域间路由指源和目的在不同的区域内。一个OSPF骨干负责在区域间发布路由信息。骨干是由所有边界路由器、不完全包含在任何一个区域内的网络以及它们附带的路由器组成。如上图,就是一个多区域网络互联的示例。

在上图中,路由器4、5、6、10、11和12组成了骨干。如果在区域3中的主机H1向给区域2中的主机H2发送一个数据包。这个数据包首先发送给路由器13,路由器13将包向前发送给路由器12,然后再传递给路由器11,接着顺着骨干到达区域边界路由器10,然后可以通过两个区域内路由器9和7,最终将数据包传递给主机H2。
其实骨干区域本身也是一个OSPF区域。因此所有的骨干路由器使用相同的过程和算法来管理骨干区域中的路由信息。骨干区域拓扑也是对所有区域内的路由器不可见的。
我们也可以这些定义区域:骨干区域并不是直接相连的。在这种情况下,骨干区域的连接性,必须通过虚拟连接连进行保证。在任意骨干路由器之间配置虚拟连接,并将其连接到非骨干区域,最后实现与他们直接相连相同的效果。
运行OSPF的边界路由通过EGP学习外部路由,例如EGP或者BGP。

EIGRP路由

EIGRP基于四个基本的概念:邻居表、拓扑表、路由状态和路由标记。
一、邻居表
当一个路由发现了一个邻居,它就会就会将邻居的地址以及接口信息作为一个条目存储到邻居表中。每一个协议模块都会有一个单独的邻居表。当一个邻居发送Hello包时,路由器就会设置一个保持时间,这个时间是用来判断发送Hello包的邻居是否可达或可用的依据,如果在规定的时间内没有收到Hello包,就会判断为超时,则DUAL就会认为网络发生了改变。
邻居表中的条目也会被RTP使用。序号被用来匹配数据包的回应,通过查看从邻居哪里收到的最新的数据包序号,就可以判断哪些包是错序的。每一个邻居会有一个传输列表用于排列数据包以防止可能的重传。邻居表中的条目也会有一个计时器来确定重传间隔。
二、拓扑表
拓扑表中包含了邻居路由器所发布的所有目的地址。协议独立模块负责更新这个表,并且这个表被用于DUAL 进行路由计算。拓扑表中的每个条目包含了目的地址以及一系列曾经发布过这些目的地址的邻居。对于每个邻居,条目中都会记录邻居所发布的度量值(这个度量值是邻居存储在它的路由表中的度量值)。这里有一个所有距离矢量协议都必须遵守的规则:邻居路由器所发布到达某个目的地址的路由信息,那么它必须使用这个路由进行数据包的传递(即这条路由必须是这个路由用于发送数据包的路由)。
路由器用来到达某个目的地址的度量也与目的地址相关。这个路由器在路由表中使用并且发送给其他路由器的度量,是它从它的邻居中汇总出来最好的路由开销(即每个路由器中路由表的度量值都是到达某个目的地址的最好值)。
三、路由状态
拓扑表中关于某一地址的条目只能有两种状态:主动和被动。当路由器不需要进行重计算时,处于被动状态;需要重计算时,处于主动状态。如果有可行的继任者,那么该目的地址的条目就不会处于主动状态,这样就避免了重计算。
当某一目的地址没有可行的继任者的时候就会发生重计算。路由器通过发送询问数据包给它的邻居来开始进行重计算。如果某个邻居有到达目的地址的可行的继任者,那么它就会发送一个回复给路由器;如果邻居也没有,它就会继续询问它自己的邻居直到找到一个可行的继任者。当一个目的地址处于主动状态时,路由器不能修改路由表中关于该目的地的信息。当路由器收到某个邻居路由器关于这个目的地址的回复以后,拓扑表中关于这个目的地址的的条目变为被动状态,路由器就会根据拓扑表中的信息选这个一个继任者。
四、路由标识
EIGRP支持域内和域外路由。域内路由来源自一个EIGRP自治域内部。因此,被配置运行EIGRP的直连的网络被认为是域内的路由,并且这些信息在EIGRP自治系统内部进行传播。域外路由是指那些从另一个路由协议中学习到的、被当做静态路由添加进路由表的路由信息。这些路由被单独的添加了它们的来源标识。
域外路由被用下面的这些信息进行标识:
1、重发布这些路由的EIGRP路由器的路由器ID
2、目的地址的自治系统号
3、配置管理标识
4、域外协议的ID
5、域外协议的度量
6、默认路由的标志位
路由标识允许网络管理员自定义路由和可扩展的策略控制。路由标识在自治系统间传输时特别有用。这样可以为在内部使用EIGRP的AS之间的路由交换,提供一种基于策略的分层的路由类型。

EIGRP包类型
EIGRP使用下列包类型:Hello包和acknowledgment包、更新包以及询问包和回复包。
Hello包用于邻居发现/恢复的组播,不需要回应进行确认。一个回应包(是指需要对其进行回应的Hello包)是一个没有数据的Hello包(是用来请求回应号的?)。用于回应的数据包包含一个非0的回应号并且一般是用单播地址进行发送。
更新包用于汇集目的的可达性。当发现了一个新邻居,单播更新包会发送给那个邻居,从而使那个邻居能够构建自己的拓扑表。在其他情况下,比如链路花费改变,更新包会使用组播。更新一般都是可靠传输的。
请求和回复数据包一般都是组播。回应数据包都是可靠传输的
询问和回复数据包一般是在一个目的地址没有可行继任者的情况下发送的。询问数据包一般都是多播。回复数据包作为询问数据包的结果发送给询问者,来告诉询问者:我这里有可行的继任者,不要进行路由的重计算。回复数据包是单播,作为询问数据包的响应。询问数据包和回复数据包也都是可靠传输的。

2008年12月29日星期一

EIGRP简介

一、背景
增强型内部网关路由协议(Enhanced Interior Gateway Routing Protocol EIGRP)是IGRP的增强版本。这使得EIGRP能够更好的适应复杂的网络环境。EIGRP在协议中整合了部分链路状态协议的功能。EIGRP采用弥散更新算法(DUAL)提高了路由计算的能力。DUAL能使EIGRP判断一个路径是由环路的邻居还是无环路的邻居提供的(即:DUAL能帮助EIGRP避免环路的产生)。此外,EIGRP能够自己发现备用的路径,而不是等待其他路由器的路由更新。

EIGRP和IGRP相互之间可以无缝衔接。通过自动的路由重发布,可以很轻松的在IGRP网络内部署EIGRP路由。此外,EIGRP会把IGRP路由视为外部路由,并且网络管理员可以自定义这些路由。


二、EIGRP的功能和特性
EIGRP收敛迅速、支持变长子网掩码、支持路由的部分更新(仅更新发生了改变的部分路由表)、支持多种网络层协议。
运行EIGRP的路由器会存储它所有邻居的路由表,这样它就能迅速的计算出替换路由。如果没有合适的替换路由存在,EIGRP会请求它的邻居帮它找一个合适的替换路由,这些请求会不断传递下去,直到找到合适的路由。
对变长子网掩码的支持,使得EIGRP能够自动在网络边界汇总,此外,EIGRP也可以在任意的端口汇聚到任意的网络边界(即:不一定非要汇聚到某一类网络,也可以汇聚到10.0.0.0/22这样)。
EIGRP不会周期性的更新,而是只有在某条路由的度量发生改变的时候才会产生针对该条路由的更新。并且这些更新会被限制,而只会使需要更新的路由器产生更新(类似VTP修剪)。由于这两个功能,EIGRP比IGRP占用更少的带宽。
EIGRP能够支持AppleTalk、IP和Novell NetWare。EIGRP(在采用AppleTalk的网络中)能够将从RTMP(Routing Table Maintenance Protocol)学习到的路由进行再发布进EIGRP网络;在IP网络中,EIGRP能够从OSPF、RIP、IS-IS、EGP或者BGP中学习到的路由进行再发布进EIGRP网络;在Novell网络中,EIGRP也可以将从Novell RIP或者SAP中学习到的路由再发布进EIGRP网络中。
注:Intermediate System-Intermediate System IS-IS;Exterior Gateway Protocol EGP;Border Gateway Protocol BGP;Service Advertisement Protcol SAP。

三、EIGRP所采用的关键技术
为了更好的提高路由能力,EIGRP采用了四项关键技术:邻居发现/恢复、可靠的传输协议RTP、弥散更新算法有限状态引擎(DUAL finite-state machine)以及协议独立模块。
邻居发现/恢复机制能够使路由器动态的学习到在其他路由器上直连的网络。当邻居无效或者不可达时,路由器也能够及时的发现。这种机制是通过定期发送的Hello包来实现的(这种Hello包占用很小的带宽)。只要路由器能收到邻居发送的Hello包,那么就认为这个邻居是可用的,这两个路由器之间就可以交换路由信息。
可靠的传输协议RTP负责将EIGRP包传递给所有的邻居,它可以发送多播包和单播包。为了提高效率,只有特定的EIGRP包才会使用可靠传输。在一个像Ethernet这样的多播网络中,没有必要单独给每个邻居发送可靠的Hello包。由于这些原因,EIGRP发送的Hello包中会包含一个指示:接收到Hello包的路由不需要对这个包进行回应。其他类型的包,比如路由更新包,则会要求进行回复。当没有收到回应包时,EIGRP会继续发送多播包,这样会提高在多种线路速度网络中,加快收敛。
弥散更新有限状态引擎负责将从路由器所有邻居哪里收集来的信息进行路由计算的任务。DUAL使用距离信息来选择高效没有环路的路径,并且会选择要插入基于可行继任者(feasible successor)的路由表的路由信息(路由表中的是successor,是feasible successor 中的优胜者,具有最好的度量)。feasible successor是到达目的地具有最小花费而且不会产生环路的路径的下一跳路由器。当邻居的度量改变或者网络拓扑发生改变的时候,DUAL会测试可行继任者,如果找到了一个,DUAL就使用这个路由,从而避免了重新计算路由。如果没有可行继任者存在,那么就重新计算路由,这也也会重新产生一个继任者(successor)。虽然重新计算不会是很大的运算,但是毕竟对收敛时间会有影响,因此应该尽量避免不必要的计算。
协议独立模块分别为某个网络层的协议进行服务。比如IP-EIGRP模块,负责传送和接收使用IP协议封装的数据包,IP-EIGRP模块也负责解析EIGRP包并且为DUAL的计算提供信息。IP-EIGRP模块会要求DUAL进行路由的选择,并将选择结果存到路由表中,该模块也负责将从其他IP路由协议中学到的路由进行再发布。

2008年12月28日星期日

RIP 路由更新包的格式

一、RIPv1路由更新包的格式

command:占一个字节,用于标记这是一个请求或是一个回应数据包。请求数据包会告诉路由器发送部分或全部的路由表;回应数据包标明这是一个周期性的路由更新包或是一个路由更新请求的回应。回应数据包中含有路由表中的条目(部分或全部)。复合RIP(Multiple RIP)包被用于从大型路由表中提取信息
version nubmer:占一个字节,用于确定RIP协议的版本,可以用来区分潜在的可能不相容的版本
zero:占两个字节,这个部分没有被RFC1058 RIP使用,只是为RIP的后续开发预留,默认填充0
address-family identifier(AFI):占两个字节,用于标识使用的地址类型,RIP被设计用于可以承载多种不同协议的路由信息。每一个条目有一个地址类型标识,来区分不同的地址类型,IP地址的AFI为2
IP address:占四个字节,确定目的IP地址
metric:到达目的IP地址的度量


二、RIPv2路由更新包格式
command:占一个字节,与RIPv1相比没有改变。主要用于分辨是请求还是回应
version:用于确定RIP的版本,这里值为2
unused:值设为0

address-family identifier(AFI):用于标识地址的类型。与RIPv1相比,如果消息中第一个表项的AFI为0xFFFF,那么这个表项的其余部分包含的是认证信息,目前这个认证只能是简单的密码认证。(即,每次路由更新时都要进行密码验证,消息中的第一个包是用来密码验证的)
route tag:用于区分路由是通过RIP学习到的还是通过其他的路由协议学习到的
IP address:确定该条目的IP地址
subnet mask:包含该条目的子网掩码,如果置0,则标明该条目没有子网掩码
metric:标识到达目的地需要几跳,即到达目的地址的度量值

RIP简介

一、背景
RIP协议是路由协议中存在时间最长的协议之一,RIP使用距离向量来比较得出到达目的地址的最佳路径,现在的开放标准协议RIP(有时也被叫做IP-RIP)是通过两个文档定义的:RFC1058和STD56。后来随着网络的增大,IETF意识到以前的RIP已经不能适应新的情况,于是发布了RFC1388和RFC1723描述了RIPv2来适应新的需求。RIPv2每次路由更新能够携带更多的信息,而且可以携带子网掩码,还可以使用简单的认证来保证网络安全。

二、RIP路由更新
RIP周期性的发送路由更新或者当网络拓扑改变时发送更新(几种路由协议都可以在网络拓扑发生改变时发送更新,只是计算最佳路由的方法不一样,一种类是根据距离和方向,一种是根据链路的状态)。当一个路由器接收到包含某一条目的改变的更新包时,它就会更新自己的路由表进而影响新的路由。路径的度量值是按1递增的,通过下一跳来显示发送者要发送的数据应该通向的下一个点。RIP路由只管理到达某一目的地的最佳路径信息(即包含最小度量的路径的信息)。
当一个路由更新了它的路由表以后,它会立刻通知网络上的路由器:网络发生了改变,这个更新是独立于一般的周期性的RIP路由更新(即,在路由发生改变后,会立刻发送路由改变的更新,而不是等待周期性的更新)。

三、RIP路由度量
RIP使用单一的路由度量(跳数)来计算源与目的网络之间的距离,每经过一跳,跳数会增加1。当一个路由器接收到一个到达某目的地址的路由更新条目(当这是一个新的路由表项,或者是旧的,但是发生了改变的路由表项)的时候,路由器会将路由更新信息中显示的计量值加1,然后加入到自己的路由表中。路由更新发送者的IP地址被当作下一跳(原文是:The IP address of the sender is used as the next hop)(被当做要到达目的路由,下一跳所要到达的地方。因为路由更新的内容是:我知道到达某个目的地址的路径,经过我就可以,以后有到达哪里的数据包就把包发给我;与发送数据包向区别,路由更新是从目的地址所在的路由开始发送路由更新,而发送数据报则是从源地址所在的路由器,向目的地址所在的路由器发送。)

四、RIP维持其稳定性的功能
RIP使用最大跳数来防止路由环路的产生,最大跳数为15,大于等于16的跳计数则被认为是网络不可达。这也限定是使用RIP路由协议的网络的规模(路由中毒)。
此外,RIP也包含一些在其他路由协议中也具有的维持稳定性的功能,比如说水平分割(split horizon)、保持关闭(holddown)等一些方法来防止环路、路由频繁变化(翻动)以及一些不正确的路由传播等情况的发生,从而保持网络的稳定性。

五、RIP计时器
RIP使用数目众多的计时器来控制RIP协议的工作。包括:一个路由更新计时器,路由失效计时器和一个路由擦除计时器。路由更新计时器为周期性的路由更新计时。默认设置为30秒(当每次计时器被重新设置时,会在30秒后面附加一小段随机时间,这样做主要是为了防止所有路由器在同一时间进行路由更新,从而造成网络拥塞)。每个路由表项有一个路由失效计时器,当路由失效计时器到期时,该条路由会被标记为不可用,但是会继续留在路由表中,直到路由擦除计时器到期才会将该条目从路由表中删除。

Linux基本命令

一、文件操作命令
ls 显示当前目录的文件列表
ls -al 显示当前目录的文件列表的详细信息,包括隐藏文件
cd dir 进入目录dir
cd 切换到用户的默认目录(主目录)
pwd 显示当前目录
mkdir dir 创建目录dir
rm file 删除file文件
rm -r dir 删除dir目录
rm -f file 强制删除file文件
rm -fr dir 强制删除dir目录,特别注意,慎用!!!
cp file1 file2 将file1复制为file2
cp -r dir1 dir2 将目录dir1复制到dir2,如果dir2不存在,就创建dir2
mv file1 file2 重命名file1,或者将file1移动为file2,如果file2是一个目录,那么就把file1移动到file2这个目录中。
ln -s file link 创建一个file文件的链接
touch file 产生或更新文件file
cat > file 将标准输出写入到file文件中
more file 显示文件内容,分屏
head file 显示文件的前10行
tail file 显示文件的最后10行
tail -f file 当文件增长时,显示文件的后10行和增长的内容

二、进程管理
ps 显示目前处于激活状态的在运行的进程
top 显示所有在运行的进程
kill pid 杀死进程号为pid的进程
kill all proc 杀死所有叫proc的进程,慎用!!!!
bg 列出所有被停止的或者在后台的进程,也可以用这个命令来恢复停止的进程(使用job号来恢复)
fg 将最新的job放到前台执行
fg n 将job号为n的进程放到前台执行

三、文件权限
chmod octal file 用于修改文件的权限,三个数字分别代表创建者、创建者所在的组以及其他人。

四、系统信息
date 显示当前日期和时间
cal 显示当月的日历
uptime 显示运行时间,运行了多久
w 显示谁在线
whoami 显示当前用户以什么用户登录
finger user 显示用户名为user的用户信息
uname -a 显示内核的信息
cat /proc/cpuinfo 显示CPU的信息
cat /proc/meminfo 显示内存的信息
man command 显示命令command的帮助信息
df 显示磁盘的利用情况
du 显示目录空间的使用情况
free 显示内存和置换空间的使用情况
whereis app 显示应用程序app的二进制文件或者源文件或者MAN页的位置信息
which app 显示应用程序app的目录信息

五、压缩
tar cf file.tar files 创建一个叫做file.tar的磁带归档,里面包含文件files(Tape ARchive 磁带归档 tar )
tar xf file.tar 将文件从file.tar中释放出来
tar czf file.tar.gz files 创建一个采用Gzip压缩方式的磁带归档
tar xzf file.tar.gz 使用Gzip释放该压缩文件中的文件
tar cjf file.tar.bz2 files 创建一个采用Bzip2压缩方式的磁带归档
tar xjf file.tar.gz2 使用Bzip2释放该压缩文件中的文件
gzip file 使用Gzip方式对文件file进行压缩,产生的压缩包名字为file.gz
gzip -d file.gz 将压缩包file.gz解压缩为文件file

六、网络
ifconfig 配置IP地址
ip route show 显示路由信息
route add 添加路由
ping host ping主机名为host的主机,并显示结果
whois domain 取得域domain的whois信息
dig domain 取得域domain的DNS信息
dig -x host 反向查询host的IP地址
wget file 下载文件file
wget -c file 继续一个停止了的下载

七、程序安装
从源文件安装:
1、首先要将得到的压缩包进行解压缩:tar xvzf package.tar.gz
2、进入packet目录:cd packet
3、运行configure文件:./configure
4、从源文件中创建可运行的二进制程序:make
5、安装创建好的二进制程序:make install (这里需要root权限)
6、清除安装过程中产生的不必要的文件:make mess
卸载时:make uninstall

dpkg -i pkg.deb 安装文件包pkg.deb,Debian系列的系统适用
dpkg -r package 删除一个安装过的文件包
rpm -Uvh pkg.rpm 安装文件包pkg.rpm,红帽系列的系统适用
rpm -e package 删除一个安装过的文件包

solaris常用命令(2)

一、翻译和查找
tr set1 sert2 将set1转换为set2(eg:echo "h" tr h j,将h转换为j,这个命令的输出结果为j)
sed 一个文本管理工具
grep pattern filename 寻找文件中包含pattern的行
grep -v pattern filename 寻找文件中不包含pattern的行
grep -i pattern filename 寻找文件中包含pattern的行,但是不区分大小写
find path condition 寻找路径以下所有符合条件的文件(包含路径下面的文件的子文件)
find path -inum n 用于寻找硬链接,例如寻找所有inode号为0的文件。
注:inode用于标记文件以及文件的其他一些属性,比如文件大小,拥有人一类的信息。文件系统中有唯一的inode号用于标识每个inode。我们也可以用inum对文件进行操作,可以使用ls -il 来查找文件的inum,在第一列显示的就是inum。
who 显示用户
who am i 显示真实的用户ID
id 显示有效的用户名&UID和组成员
look word 在/usr/dict/words中寻找word

二、网络
telnet hostname [port] 远程连接某个主机
ftp hostname 使用FTP协议连接某个主机
ssh hostname [port] 使用SSH连接某个主机
ifconfig 配置IP地址
route add 添加路由

三、进程以及进程控制
ps 显示主机中正在运行的进程
prstat 显示一直占用CPU的进程(iterating 反复)
command & 在后台运行command
jobs 显示jobs列表,即用jobs号显示进程
fg [%n] 恢复在前台被挂起的进程,n是进程的job号
bg [%n] 恢复在后台的被挂起的进程,n是job号
stop %n 挂起后台进程,n是job号
kill %n 杀掉job号为n的进程
kill n 杀掉进程号为n的进程
kill -9 n 终止进程号为n的进程,一般用在kill n 不能起作用的情况
sleep n 休眠n秒