NULL0接口的作用

NULL0是属于路由器的逻辑接口,NULL0接口总是处于Up状态,但不转发任何报文。当NULL0接口接收到报文后,会把报文丢弃。不能在NULL0接口上配置IP地址,也不能在NULL0接口上封装任何链路层协议。由于它的这个特征,NULL0接口主要有以下两方面的作用。

一、防止路由环

NULL0接口最典型的使用是用来防止路由环。在聚合一组路由时,总是创建一条到NULL0接口的路由。

null0

       如上图所示,由于10.1.4.0/22、10.1.8.0/22、10.1.12.0/22可以聚合为10.1.0.0/16, 路由器RouterA接收到目的地址是10.1.0.0/16网段内的报文,则RouterA会把该报文转发到RouterB。

       如果该报文的目的地址不是RouterC、RouterD和RouterE所连网段的网络地址,RouterB查找路由表后,会找到缺省路由,然后把该报文发给RouterA。

       因此这些目的地址不是RouterC、RouterD和RouterE所连网段的网络地址,但是10.1.0.0/16网段的网络地址的报文,会在RouterA和RouterB之间如此反复被传输,形成路由环。

       在实际应用中,一般会在RouterB上配置一条到NULL0接口的静态路由。

       ip rout 10.1.0.0 255.255.0.0 NULL0

       这样,当RouterA收到目的网段不是本地三个子网的报文后,RouterA会根据精确匹配原则,找到出接口是NULL0接口的路由,然后把该报文丢弃。

 

二、用于过滤通信量

       NULL0接口提供了过滤通信量的一个可选的方法。可以通过将不想要的报文发送到NULL0接口,避免过分涉及访问控制列表的使用。NULL0接口和访问控制列表都可以用于过滤通信量,这两种用法各有裨益。下面对NULL0接口和访问控制列表进行简单比较。

1、NULL0接口的优点

       NULL0接口的配置简单,只需将不想要的报文的出接口指定为NULL0接口。当路由器收到报文时,直接查找转发表,发现出接口是NULL0接口,则路由器不对报文做任何处理,直接丢弃。如果使用访问控制列表,首先要配置ACL规则,然后将它应用到接口。当路由器收到报文时,要首先查找访问控制列表:如果是拒绝,就直接扔掉。如果是接受,还要查找转发表,再对报文进行转发或丢弃。所以对比起来,应用NULL0接口效率高,速度快。比如某路由器不希望收到目的地址是131.1.0.0/16的报文:用NULL0接口实现,只需配置路由。如果用访问控制列表实现,需要先配置一条ACL规则,然后再将这条规则在路由器的相应接口上应用。

2、NULL0接口的缺点

       NULL0接口不能细化通信量,它面向的对象是整个路由器。访问控制列表是可以面向接口的。如果细致到面向接口的通信量,NULL0接口就不能满足要求了。 比如某路由器不希望在本地接口Serial1/0/0上收到目的地址是131.1.0.0/16的通信量。用NULL0接口是不能实现的,只能通过配置ACL规则,然后将其应用到接口Serial1/0/0。

展开阅读全文

接口作用

07-26

不好意思,也许我这个问题很低级,但是困恼自己好久,今天鼓起勇气问下大家,希望各位oo大神能不吝赐教rn如题,有一个和接口非常相似的存在:抽象类,它们都是对职责的抽象,区分2者还是比较简单的,抽象类表示是is-a,表示一个类型,是类型的抽象,而接口是行为的抽象。rn一个抽象类的方法并不能用来用来定义一个类型,举个例子:猫会叫,但是会叫的不一定是猫,比如说闹钟也会叫。既然如此,那一个行为到底是该定义在抽象类中,还是应该定义在接口中。比如说刚才的例子,叫这个行为到底应该定义在猫中,还是应该定义在ISayable接口中?问题在推广下,何时该把类中的行为抽出来定义成一个接口,也就是何时该使用接口?个人意见这里面一定有业务层面的考虑,没有一个决定的标准,比如说如果只有一个猫这种抽象,没有闹钟这个抽象就没有必要用专门定义一个ISayable接口rn经常有接口的滥用,个人认为接口的滥用更多的是凡是都用接口,比如现在的service+impl设计模式,明明只有一个实现类,一定要都定义一个接口rn目前自己的开发经验是这样的:从重构的观点去看接口的定义,一开始是没有任何接口的,只有无所的类,在需求不断变更中,发现共性的行为及行为的不同实现,在抽取成接口。也就是说在承认自己水平不够的情况下(无法一下子考虑行为的抽象),不建议一开始就定义接口,而是随着需求的变化中去添加接口 论坛

没有更多推荐了,返回首页