您好,欢迎访问三七文档
ip命令手册(四)摘要这一部分是关于多播路由和通道的内容,以及策略路由的一些相关内容。Bynixe0n10.ipmroute--多播路由缓存管理10.1.缩写mroute、mr10.2.对象这个命令的操作对象是多播路由缓存条目,这个缓存是由一个用户空间的多播路由监控进程(例如pimd或者mrouted)建立的。目前,由于受和多播路由引擎接口的限制,还不能通过ip命令修改多播路由对象,因此我们只能查看。10.3.命令show或者list10.4.ipmrouteshow--列出多播路由缓存条目缩写:show、list、sh、ls、l参数toPREFIX(default)选择到目的多播地址是PREFIXiifNAME接收多播数据包的网络接口fromPREFIXPREFIX选择多播路由的IP源地址输出格式kuznet@amber:~$ipmroutels(193.232.127.6,224.0.1.39)Iif:unresolved(193.232.244.34,224.0.1.40)Iif:unresolved(193.233.7.65,224.66.66.66)Iif:eth0Oifs:pimregkuznet@amber:~$多播路由缓存条目是(S,G)形式的,S是源地址,G是多播组。iif是接收多播数据包的网络接口,如果设备名是关键词unresolved,就表示路由监控进程不能解析这个条目;接下来的关键词是oif,它后面跟着一些输出网络接口,接口之间用空格分开。统计信息使用-statistics选项,我们可以得到更为详细的输出信息,包括:数据包的数量,通过这条路由转发的字节数以及到达错误接口的数据包数量(如果有)。kuznet@amber:~$ip-smrls224.66/16(193.233.7.65,224.66.66.66)Iif:eth0Oifs:pimreg9383packets,300256byteskuznet@amber:~$11.iptunnel--通道配置11.1.缩写tunnel、tunl11.2.对象iptunnel命令的操作对象是网络通道(tunnel)。所谓通道(tunnel)是指把数据包封装到IPv4数据包中,使用IP协议发出。有关通道的更多信息,请参考iproute的文档TunnelsoverIPinLinux-2.2。11.3.命令add、delete、change、show或者list11.4.iptunneladd--添加新的通道iptunnelchange--修改现有的通道iptunneldelete--删除一个通道缩写:add、a;change、chg;delete、del、d参数nameNAME(default)选择通道设备名modeMODE设置通道模式。有效的模式包括:ipip、sit和gre。remoteADDRESS设置通道远端地址localADDRESS设置进入通道数据包的固定本地地址,必须是在本机另外一个接口上的地址。ttlN设置进入通道数据包的TTL为N。N是一个1—255之间的数字。0是一个特殊的值,表示这个数据包的TTL值是继承(inherit)的。ttl参数的缺省值是:inherit。tosT或者dsfieldT设置进入通道数据包的TOS域,缺省是inherit。devNAME把通道绑定到设备NAME,以便进入通道的数据包只能通过NAME设备路由,并且当对端发生变化时,不能够在另外的设备解开封装。nopmtudisc在这个通道上禁止路径最大传输单元发现(PathMTUDiscovery)。默认情况下,这个功能是打开的。注意:这个选项和固定的ttl是不兼容的,如果使用了固定的ttl参数,系统会打开路径最大传输单元发现(PathMTUDiscovery)功能。keyk,ikeyk,okeyk只适用于GRE通道,设置keyedGRE通道的key。K或者是一个数字或者是IP地址形式的数字序列。参数key在通道的双向使用,ikey和okey为输入和输出设置不同的key。csum,icsum,ocsum只用于GRE通道,计算进入通道数据包的校验和。ocsum表示只计算出去的数据包的校验和;icsum表示只计算进入的数据包的校验和;而csum等于icsumocsum。seq,iseq,oseq只适用于GRE通道,顺序发送/接收数据包。oseq使向外的数据包顺序发送;iseq要求所有进入的数据包都是按照顺序的;而seq等于iseqoseq。示例建立一个点对点通道,最大TTL是32netadm@amber:~#iptunneladdCiscomodesitremote192.31.7.104local192.203.80.1ttl3211.4.iptunnelshow--列出现有的通道缩写:show、list、sh、ls、l参数无输出格式kuznet@amber:~$iptunnellsCiscoCisco:ipv6/ipremote192.31.7.104local192.203.80.142ttl32kuznet@amber:~$输出的第一部分是通道的设备名,接着是通道模式。下面就是设置通道时的各个参数。统计信息kuznet@amber:~$ip-stunllsCiscoCisco:ipv6/ipremote192.31.7.104local192.203.80.142ttl32RX:PacketsBytesErrorsCsumErrsOutOfSeqMcasts1256617075160000TX:PacketsBytesErrorsDeadLoopNoRouteNoBufs1344518796770000kuznet@amber:~$以上输出结果里面的数字和使用ip-slinkshow的输出是一样的,但是每个标志都是特定于通道的。CsumErrs对于打开校验和检验的GRE通道,这个数字是由于校验和错误而丢弃的数据包数量。OutOfSeg在打开顺序功能的GRE通道内,由于顺序错误而丢弃的数据包数量。Mcasts在GRE通道上接收到的多播数据包的数量。DeadLoop由于通道是回环到自己而没有传输的数据包数目。NoRoute由于到对端没有路由而没有被传输的数据包数目。NoBufs由于内核不能分配缓冲区而没有被传输的数据包数目。12.ipmonitor和rtmon--状态监视ip命令可以用于连续地监视设备、地址和路由的状态。这个命令选项的格式有点不同,命令选项的名字叫做monitor,接着是操作对象:ipmonitor[fileFILE][all|OBJECT-LIST]OBJECT-LIST是一些被监控的对象,它可以包括link、address和route。如果没有给出file参数,ip命令就打开RTNETLINK,在上面监听,并把状态的变化输出到标准输出设备。如果使用了file参数,ip命令就不是在RTNETLINK上监听,而是打开由file参数指定的包含RTNETLINK信息的二进制文件,把解析的结果显示出来。这种历史文件可以有工具产生。这个工具具有和ipmonitor命令的语法类似的命令行。理想的情况是,在网络配置命令起动之前运行rtmon命令(当然,你可以在任意的时间起动rtmon,它会记录从起动开始的状态变化)。你可以在起动脚本中插入以下命令行:rtmonfile/var/log/rtmon.log如果我们执行如下命令:[root@nixe0nroot]iprouteadddeveth0to61.133.4.7via211.99.114.65[root@nixe0nroot]iproutedeldeveth0to61.133.4.7然后,我们使用ipmonitor命令分析/var/log/rtmon.log会得到如下输出结果:[root@nixe0nroot]ipmonitorfile/var/log/rtmon.logrTimestamp:WedNov620:25:542002733331us1:lo:mtu16436qdiscnoqueuelink/loopback00:00:00:00:00:00brd00:00:00:00:00:002:eth0:mtu1500qdiscpfifo_fastlink/ether00:01:4f:00:15:f1brdff:ff:ff:ff:ff:ffTimestamp:WedNov620:25:58200233700us61.133.4.7via211.99.114.65deveth0Timestamp:WedNov620:25:592002924124usDeleted61.133.4.7via211.99.114.65deveth0[root@nixe0nroot]13.rtacct--路由范围和策略传播在使用OSPF或者BGP协议的路由器上,其路由表可能会很大。如果我们需要对其进行归类或者计算通过每条路由的数据包,就需要保留很多信息。更糟糕的是,如果我们需要区别的不止是数据包的目的地址,还要包括它们的源地址,这个任务就更为复杂了,几乎无法解决。对于这个问题,CiscoIOSRelease12.0QualityofServiceSolutionsConfigurationGuide:ConfiguringQoSPolicyPropagationviaBorderGatewayProtocol提出了一个解决方案,就是把策略从路由协议迁移到转发引擎。基本上,通过BGP的Cisco策略迁移(CiscoPolicyPropagationviaBGP)就是基于此种方式,它使路由器保留所有和转发引擎关系紧密的RIB(RoutingInformationBase,路由信息库),以便策略路由规则能够监查所有的路由属性,包括ASPATH的信息和团体(community)字符串。而Linux把这分为由用户空间监控维护的路由信息库(RoutingInfomationBase,RIB),和内核层的转发信息库(ForwardingInfomationBase,FIB)。这是我们的幸运,因为还有另外的解决方案,而这个方案允许更为灵活的策略和更为丰富的语义。换句话说,可以在用户空间根据路由的属性把它们归类,例如:BGP路由的ASPATH、团体(community);OSPF路由的标记和它们的范围。而管理员手工添加路由时,也知道它们的属性。按照这个标准划分的集合(我们把它们叫做realm)数量就很少了,因此按照路由的源地址和目的地址进行完全的分类就可以管理了。因此,每个路由都可以被分配到一个范围(realm)中。一般这是有路由监控进程作的,不过对于静态路由,也可以使用iproute命令手工处理。在某些情况下(例如路由监控进程不理解realm)为了方便,漏掉的realm可以由路由策略规则补齐。内核使用如下算法计算每个数据包的源范围(realm)和目的范围(realm):Ifroutehasarealm,destinationrealmofthepacketissettoit.Ifrulehasasourcerealm,sourcerealmofthepacketissettoit.Ifdestinationrealmwasnotgetfromrouteandrulehasdestinationrealm,itisalsoset.Ifatleastoneofrealmsisstillunknown,kernelfindsreversedroutetothesourceofthepacket.Ifsourcerealmisstillunknown,getitfromreversedroute.Ifoneofrealmsisstillunknown,swaprealmsofreversedroutesandapplystep2again.这个过程完成后,我们就知道了数据包的源范围和目的范围。如果某些还是未知,它
本文标题:ip命令手册4
链接地址:https://www.777doc.com/doc-2877830 .html