【OSPF】DR、BDR的概念及深入探讨

1. DR、BDR的概念
 
MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网就是一种典型的广播型多路访问网络(见上图),连到这个MA网络的路由器接口都属于同一个广播域和逻辑子网。在MA网络中每台OSPF路由器需与其他的所有路由器建立OSPF全毗邻(FULL)的邻居关系,这意味着网络中共有n(n-1)/2个邻接关系,导致每台路由器不得不为维护这些邻居关系消耗更多的资源,而且当拓扑出现变更时,网络中的LSA泛洪可能会造成带宽的浪费和进一步的设备资源损耗。
为减少MA网络中的LSA泛洪及邻接关系数量,OSPF会在每一个MA网络中选举一个指定路由器 DR(Designated Router)和一个备用指定路由器BDR(Backup Designated Router)。MA网络中的路由器都只与DR、BDR建立全毗邻(FULL)的邻接关系,DRother之间不会建立全毗邻的OSPF邻接关系,而只是停滞在2way状态。说的通俗点,就是“大家共坐一个山头,现在选个大当家,再弄个二当家。其他的都是屌丝村民,所有的村民都只跟大当家和二当家结交好基友的关系,村民之间不许搞基……不许搞基……”
2. 选举过程
当一台OSPF路由器(的接口)激活后并去发现它的邻居路由器时,它将去检查网络中是否已经存在有效的DR和BDR路由器。如果DR和BDR路由器存在的话(网络中某台路由器发出的Hello消息中DR字段为其自身的RouterID),这台路由器将接受己经存在的DR和BDR路由器。
如果BDR路由器不存在,则执行一个选举过程,选出具有最高DR优先级的路由器作为BDR路由器(已经宣称自己是DR的路由器不能参与BDR的选举)。如果存在多台路由器具有相同的优先级,那么在数值上具有最高RouterID的路由器将被选中。如果没有有效的DR路由器存在,那么BDR路由器将被选举为DR路由器,然后再执行一个选取过程选取BDR路由器。
每台路由器的每一个多点访问接口都有一个路由器的DR优先级(范围是0-255,默认为1)。
3.要点总结
 
  • 如果在—个MA网络上只有惟—的一台具有DR选举资格的路由器,那么这台路由器将成为DR,而且在这个网络上没有BDR。其他所有的路由器都将只和这台DR路由器建立邻按关系。
  • 如果没有具有DR选举资格的路由器和一个MA网络相连(例如所有路由器的接口DR优先级都是0),那么这个网络上将没有DR或者BDR路由器,而且也不建立任何邻接关系。
  • DR、BDR的身份是非抢占的,也就是一旦网络中DR确立,则即使后来者的优先级比当前DR更高,也无法抢占DR的身份。当DR失效,BDR成为DR,同时再产生BDR。
  • DR与BDR、DR与Drother、BDR与Drother之间都是FULL状态,Drother之间是2way状态。所有的Drother都只和DR以及BDR建立全毗邻关系。
  • OSPF定义了一个Wait计时器,缺省等于Dead时间40s,当一个MA接口激活OSPF时,它会等待Wait计时器定义的时间,这个时间用于搜集MA网络中具有DR选举资格的路由器。这就是为什么我们在以太网接口上配置OSPF时,邻居关系的建立总是很慢,而在串行接口上配置OSPF,邻居关系很快就建立起来了,串行接口不选举DR、BDR,无需经过WAIT计时器。
  • DR、BDR是一个接口级别的概念。严格的说“这台路由器是DR” 这句话其实并不严谨,例如下图所示,
  • 在192.168.1.0/24这个MA网络中,R1的Fa0/0口最终被选举为DR的话,我们不会说R1就是DR,因为DR是接口级别的角色,只能说R1的Fa0/0口在直连的网络中是DR。并且R1的Fa0/1连接到另一个MA网络,那么在那个MA网络中,也要选举DR、BDR,至于R1的Fa0/1能否成为那个网络的DR,也是要看PK的结果。
4. 关于DR、BDR选举的深入探讨之一
1) 如果下图中两台路由器(的接口)同时激活OSPF,则在接口OSPF状态机的演进过程中,2way状态后会各自启动WAIT计时器,用于搜集MA网络中具有选举资格的OSPF路由器,在各自泛洪的Hello报文中,包含着他们自身的接口DR优先级、RouterID等信息。
40s后R1成为DR,R2成为BDR。此时大家发送出来的Hello消息中,DR字段填写的是R1的RouterID,BDR字段填写的是R2的RouterID。
 
2) 此后,如果R3也加入到了MA网络中,并且它的接口DR优先级比R1更高:R3的接口激活OSPF后,也会启动一个WAIT计时器,但是它会收到R1发送出来的Hello消息,该Hello消息中DR字段填写的正是R1自己的RouterID,这意味着“网络中有人宣称自己是老大”,因此R3将接受这个事实,它的WAIT计时器迅速超时。这就是所谓的DR的不可抢占性。
 
3) 但是我们考虑另一种情况:假设初始情况下R1、R2处于一个LAN中,R3自己处于另外一个LAN中,大家的接口IP都是同网段的,但是属于不通的LAN。例如三台路由器都连接在同一台交换机上,但是R1、R2属于一个VLAN,R3属于另一个VLAN。那么三台路由器的接口激活OSPF后,R1会成为LAN1的DR,而R3会成为LAN2的DR,也就是他们各自发送出来的Hello消息中,都宣称自己就是DR。现在假设两个LAN连接了起来,这就会有问题了,因为同一个LAN中,有两人宣称自己是老大,这就得重新干一架,重新DR选举。
5.关于DR、BDR选举的深入探讨之二
1) 在下图所示的场景中,R1、R2连接到同一个LAN。假设R1的接口在0时刻激活OSPF,而R2的接口在10时刻激活OSPF。虽然R1的接口先激活OSPF,但是它的WAIT计时器超时需要40s,而在该计时器超时之前R2的接口就已经启动了,因此它会收到R2发送的Hello消息并且知道R2的接口优先级比自己高,所以当绝对时间40s到期,R1的WAIT计时器超时,它发送的Hello消息中DR字段为R2的RouterID2.2.2.2,但此刻该LAN的DR还不算最终确立,因为R2的WAIT计时器还没超时,有点像:“别人宣称我是DR这不算数,我自己还没认呢”。因此当50s时刻到来时,R2的WAIT计时器超时,此时R2发送的Hello消息中DR字段就是自己的RouterID,LAN中的DR也就正式确立。
 
2) 现在再来看另一种情况。假设R3在绝对时间的45s时刻接口激活OSPF,会有什么样的情况发生?首先R1的接口率先激活,在其WAIT计时器超时之前发现了R2比自己的DR优先级高,因此它认为R2是DR,但是在R2的WAIT计时器超时之前它发现R3的DR优先级比自己更高,注意此刻R2的WAIT计时器还没超时,也就是说在绝对时刻50s之前,事儿都还没定。在50s时刻,R2的WAIT计时器超时,它认为R3是DR(当然R1也认为R3是DR),但此刻R3的WAIT计时器才开始没多久,只有等到它的计时器也超时并且宣称自己是DR时,这个MA的DR才算最终确立。
6. 闹着玩儿的实验:
 
  • R1、R2接口DR优先级设置为0,则R1、R2不建立FULL邻居关系
  • R1 接口优先级为0,R2为1,则R2成为DR,并且该MA网络中没有BDR
  • 在上一步的基础上,R1接口优先级改为100,对网络没有影响(DR非抢占)
  • 在上一步的基础上,R2(此时为DR)重启OSPF进程,则R1成为DR,R2成为BDR
7. 补充知识点
 
在实际的网络环境中,如若是三层以太网口运行OSPF且物理上为点对点连接,则OSPF仍然会在以太网上选举DR、BDR,因此在这种场景中,我们会将接口的OSPF网络类型改为Point-2-Point,以跳过DR、BDR选举过程,加快OSPF邻居建立。

【有点儿意思系列 03】解答:内网PC无法使用服务器NAT映射后的公网地址

博文“有点意思系列”其实就是给大家找点儿乐子,里头有个Case,关于“内网PC无法使用服务器NAT映射后的公网地址访问服务器的故障”,正好最近有个兄弟问到这个问题,所以稍做解析,这个案例虽然简单,但是具有一定的代表性(本例以华为防火墙做讲解,技术原理类似)。
在上图所示的网络中,PC Station及Server同属一个LAN,网关都在防火墙FW的GE0/0/1口上,都是zone trust。为了让Internet用户能够访问到Server,FW上部署了Nat Server:
nat server global 200.1.1.100 inside 192.168.1.100
也就是将公网地址200.1.1.100映射到192.168.1.100。完成上述配置后,Internet用户能够通过200.1.1.100这个公网IP访问Server。但是内网的PC在访问Server的时候,却存在一点问题:PC通过私有IP地址192.168.1.100能够访问Server的Web服务,但是当PC使用该服务器映射的公网地址200.1.1.100试图访问Server的时候,却发现始终无法成功。我们来分析一下PC使用公网地址访问Server的过程:
1)PC使用公网地址200.1.1.100 试图访问Server,首先要建立TCP三次握手,报文的源IP地址为192.168.1.1,目的地址为200.1.1.100,数据包被送到网关防火墙。
2) 防火墙由于部署了NAT server,因此将数据包的目的地址200.1.1.100转换成192.168.1.100,然后查路由表,发现192.168.1.0/24网络就是GE0/0/1口直连。
3) 防火墙将地址转换后的数据包发向Server。
4) Server收到数据包后,得回包吧,由于Server收到的这个数据包源地址为192.168.1.1,因此它在产生回程数据包的时候,回程数据包的目的地址就是192.168.1.1,而192.168.1.1又是本地直连网络内的节点,因此Server直接将这个源为192.168.1.100,目的地址为192.168.1.1的数据包发送给了PC Station,而不用再绕回防火墙。
5) PC在收到这个数据包的时候,发现数据包的源地址是192.168.1.100,这个地址是哪里冒出来的?它等候的是200.1.1.100的回程报文,可是现在却收到了192.168.1.100的数据包,它将该报文丢弃。这就是为什么,PC无法通过服务器的NAT server映射的公网IP来访问服务器的原因。数据包没有绕回防火墙,导致PC收到的回程数据包源地址没有被正确的转换,从而TCP三次握手不成功。要解决这个问题,就需要让回程的流量能够回到防火墙,然后让防火墙将源地址转换成200.1.1.100再发给PC。
我们可以通过在防火墙上为PC创建一个NAT地址池,然后部署trust安全域内的源地址转换即可:
[FW] nat address-group 1 192.168.2.1 192.168.2.1        
[FW] nat-policy zone trust
[FW-nat-policy-zone-trust] policy 10
[FW-nat-policy-zone-trust-10] policy source 192.168.1.0  0.0.0.255
[FW-nat-policy-zone-trust-10] policy destination 192.168.1.100  0
[FW-nat-policy-zone-trust-10] action source-nat
[FW-nat-policy-zone-trust-10] address-group 1
完成上述配置后,我们再分析一下数据包交互的过程:
1) PC使用公网地址200.1.1.100 访问Server,首先要建立TCP三次握手,报文的源IP地址为192.168.1.1,目的地址为200.1.1.100,数据包被送到网关防火墙。
2) 防火墙由于部署了nat server,于是首先将数据包的目的地址200.1.1.100转换成192.168.1.100,随后又发现还部署了源地址转换,要把源地址为192.168.1.0/24、目的地址为192.168.1.100的数据包进行源地址转换,将源地址转换成192.168.2.1,于是它将数据包的源地址进行转换。
3) 防火墙将地址转换后的数据包发向Server:
4) 服务器收到数据包后要发回程报文,回程报文的源地址为192.168.1.100,目的地址为192.168.2.1,这个数据包被发向了Server的网关192.168.1.254也就是防火墙。
5) 防火墙收到这个数据包后,由于本地已经有了NAT的映射条目,因此将数据包的源地址192.168.1.100替换成200.1.1.100,将目的地址192.168.2.1替换成192.168.1.1。
6) 防火墙将数据包转发给PC。
7) PC收到这个数据包后,发现正是自己期待的200.1.1.100的回包,因此TCP三次握手成功。

ospf与EIGRP的区别介绍

众所周知,OSPF和EIGRP都是动态路由协议,OSPF以协议标准化强,支持厂家多,受到广泛应用,而EIGRP协议由网络界公认的领先厂商Cisco公司发明,并靠其在业界的影响力和绝对的市场份额,也受到用户的普遍认同。然而这两种协议究竟有何区别?下面我们整理为您EIGRP与OSPF的区别,温故知新,希望有助您对EIGRP与OSPF的认识。
1. EIGRP是cisco专用的,而OSPF则是通用的协议。
2. EIGRP是一个距离矢量协议(有些资料说是混合型的),而OSPF是链路状态协议。
3. EIGRP支持自动汇总功能,它可以在A.B.C类网络的边界实现自动汇总,同时也支持手动配置;而OSPF则不可以,汇总必须手动配置
4. EIGRP的汇聚速度要比OSPF快,因为在它的拓扑图中保存了可选后继,直接后继找不到时可以直接通过可选后继转发。
5. EIGRP的多播地址是224.0.0.10,OSPF是224.0.0.5和224.0.0.6。
6. EIGRP的路径度量是复合型的,OSPF则是Cost型的(当然一般的cost还是根据bandwidth来计算的)
7. 尽管EIGRP支持路由汇总功能,但是它没有分级(hierachical)路由的概念,不像OSPF那样对网络进行分级。
8. 在邻居关系的建立上,EIGRP没有OSPF那么复杂的down-init-two way的过程,只要一个路由器看到邻居的hello包,它就与之建立邻接关系。
9. 在汇总功能的实现上,EIGRP可以在任何路由器的任何接口实现,而OSPF则只能在ABR和ASBR上实现,而且它的路由汇总不是基于接口的。
10. EIGRP支持不等路径度量值的负载均衡,而OSPF则只支持相等度量值的负载均衡。
11. EIGRP使用DUAL算法计算最短路径,而且它采用了有限状态机(finite-state machine)来跟踪所有的路由信息包,保证无回路(loop-free)以及后继路由的选择。OSPF采用Dijikstra算法计算最短路径,它不采用有限状态机。 eigrp在丢失邻居后如果有可行后继路由器的时候会立刻选择可行后继路由器作为后继路由器,如果没有,就以组播的方式向每一个有EIGRP邻居端口发送Query消息,原后继路由器端口除外,因为Query是RTP,所有在重传超时RTO的时间内会收到邻居发送回来的ACK包,如果在RTO内没有收到邻居发送的ACK包,路由器会以单播的方式向这个没有回复ACK数据包的邻居发送一次Query,所以Query第一次发是组播,第2次就以单播发送了.
12. EIGRP邻接关系的确立只要两个参数相符合就行:K-value和AS number;而OSPF的邻接关系的建立需要多个参数符合:hello/dead timer ,authentication password,area id, stub flag等。
13. 最后就是它们配置以及检查(show command)上的不同了,这方面不同点很多,就要慢慢体会了。如ospf 中的show ip ospf database对应eigrp中的show ip eigrp topology。

OSPF的LSA类型

原文地址:OSPF的LSA类型~作者:cfeng_026
OSPF的LSA类型种类繁多,往往让人头晕恶心。然后OSPF又是目前应用最广泛的IGP协议,我们不得不对它进行研究。OSPF的LSA类型一共有11种(之前说错12种自己数来数去少一种,哈哈,纠正下),分别是:
LSA1 路由器LSA(Router LSA)LSA2  网络LSA(Network LSA)

LSA3 网络汇总LSA(Network summary LSA)

LSA4  ASBR汇总LSA(ASBR summary LSA)

LSA5  自治系统外部LSA (Autonomous system external LSA)

LSA6  组成员LSA (Group membership LSA) *目前不支持组播OSPF (MOSPF协议

LSA7  NSSA外部LSA (NSSA External LSA)

LSA8  BGP的外部属性LSA(External attributes LSA for BGP)

LSA9  不透明LSA(本地链路范围)  (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

LSA10 不透明LSA(本地区域范围) (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

LSA11 不透明LSA(AS范围) (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

这11种LSA中,我们主要研究其中的LSA1、2、3、4、5、7。其余的在一些特殊环境使用,暂时不对它们进行深入的探讨。

请先看一幅图,此图涵盖了我们所研究的6种LSA类型在OSPF环境中的作用。

* 图中ADV是通告路由器;ABR是区域边界路由器;ASBR是自治系统边界路由器。
①   LSA1 路由器LSA(Router LSA)
描述路由器的直连链路状态信息。由每个发起路由器通告,只在本区域内传递,不会超过ABR。

②   LSA2  网络LSA(Network LSA)
描述本区域内BMA/NBMA(串行连接信息不会在此出现)的网络信息以及连接到此网络的路由器。由本BMA/NBMA网络的DR或BDR通告,只在本区域传递

③   LSA3 网络汇总LSA(Network summary LSA)
描述OSPF的区域间路由(在路由表中以 O IA 标识)。原LSA 1所描述的路由信息会由所在区域的ABR将其转换为LSA 3。
LSA3可以传播到整个OSPF的所有区域(特殊区域除外)。ABR通告。
注意:LSA 3每穿越一个ABR,其ADV Router都会发生改变,ADV Router转变为最后一次穿越的ABR路由器

④   LSA5  自治系统外部LSA (Autonomous system external LSA)
没有看错,这里是LSA 5,我们先讲LSA 5再反过来看LSA 4。
LSA 5描述的是OSPF区域以外的路由(RIP、EIGRP、BGP等等)。由ASBR所通告,LSA 5可以传播到整个OSPF的所有区域(特殊区域除外
注意:LSA 5的通告路由器在穿越ABR的时候是不会改变的。

⑤   LSA4  ASBR汇总LSA(ASBR summary LSA)
LSA 4所承载的内容是:ASBR的Router-ID。LSA 4其实就是图中R4(通告路由器)将Area 3中R11的Router-ID信息转换为LSA 4,在整个OSPF域中泛洪传播(由于LSA 5的通告路由器在穿越ABR的时候不会改变,如图中Area 3的LSA 5在穿越R4到达Area 0时,通告路由器不改变仍然是R11,因此除了Area 3,Area 0和其他区域都不知道R11的信息。此时就需要LSA 4为Area0和其他区域提供R11的信息,可以这么说,LSA 4是为LSA5所服务的)。

⑥   OSPF的特殊区域:Stub Area末梢区域
在Stub区域中只有域内和域间路由只允许LSA 3进入本区域,LSA 4/5不允许进入。配置Stub区域后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

⑦   OSPF的特殊区域:Total Stub Area绝对末梢区域
在Total Stub Area中只有本区域内的路由LSA3/4/5均不允许进入本区域。配置Total Stub Area后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

⑧   OSPF的特殊区域:NSSA Area次末梢区域
在NSSA区域中允许存在ASBR,所以也就可以引入外部路由。这个外部路由在NSSA区域内以LSA 7存在。当此LSA 7路由离开NSSA区域进入别的区域时,NSSA的ABR会进行LSA 7向LSA 5的转换(如图Area 6所示)。
本区域只允许LSA 3进入,禁止LSA4/5的进入。所以此区域有域内、域间和外部路由
配置NSSA区域需要在区域内手工的创建一条默认路由(以便访问OSPF中其他区域的网络)。
# router ospf x
# area 6 nssa default-information-originate

⑨   OSPF的特殊区域:Total NSSA Area绝对次末梢区域
在NSSA区域中允许存在ASBR,所以也就可以引入外部路由。这个外部路由在NSSA区域内以LSA 7存在。当此LSA 7路由离开NSSA区域进入别的区域时,NSSA的ABR会进行LSA 7向LSA 5的转换(如图Area 7所示)。
本区域禁止LSA3/4/5进入,只有本区域内路由和外部路由。配置Total NSSA Area后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

OSPF的区域类型和LSA类型这两个知识点,经常容易导致人们对他们理解上的混乱,今天就来谈谈这两个概念。
本文将会以下面这个拓扑图为例进行讲解。

一、LSA Type,链路状态通告的类型
本来想先讲区域类型,但是由于要理解不同类型的区域,必然要涉及到不同类型的LSA,现在把LSA放到前面先讲。
我们这里谈谈常见的几种LSA123457LSA
11LSA,路由器LSAOSPF网络中所有路由器都会产生1LSA,他的意思就是表示路由器自己在本区域内的直连链路信息。该LSA仅在本区域内传播。其中,Link IDADV Router写的都是该路由器的RouterID
下图为1LSA
22LSA,网络LSA在广播或者非广播模式下(NBMA)由DR生成。该LSA仅在本区域内传播。2LSA表达的意思应该是:某区域内,在广播或非广播的网段内选举了DR,于是DR在本区域范围利用2LSA来进行通告。该LSA仅在本区域内传播。其中,该LSALink ID就是该DR的接口IP地址,而ADV Router则是DRRouter ID
下图为2LSA
33LSA,网络汇总LSA由区域边界路由器ABR生成,用于将一个区域内的网络通告给OSPF中的其他区域。可以认为3LSA保存着本区域以外的所有其他区域的网络。举个例子,在多区域的环境如1-0-2这样的三个区域,含有area1area0ABR会把area1的网络以3LSA的形式通告给area0,当然它也会把area0里面的网络通告给area1。那么,area1里面的网络又是如何通告到area2呢?这里就要考虑到area1那些一开始被转换成3LSA的网络,是如何进入到area2的问题了。当原先这个3LSA进入到area0area2的边界路由器时,位于这个边界的ABR就把这条包含着area1链路信息的3LSA进行修改,修改的内容是把里面的ADV Router替换成自己的Router ID,并且维持原先的Link ID不变,然后把这条修改后的LSA通告给area2,这个就是3LSA的工作过程。
下图为3LSA

44LSAASBR汇总LSA4LSA5LSA是紧密联系在一起的,可以说4LSA是由于5LSA的存在而产生的。4LSA由距离本路由器最近的ABR生成,这句话应该要这样来理解:如果路由器想要找到包含了外部路由的那台ASBR(自治系统边界路由器)的话,你应该要到达哪台ABR,这台ABRRouter ID就写在该LSAADV Router里面,而LSA里面的Link ID代表的是该ASBRRouter ID
下图为4LSA:


55LSA,外部的LSA5LSA由包含了外部路由的ASBR产生,目标是把某外部路由通告给OSPF进程的所有区域(特殊区域除外,下面会提到)。5LSA可以穿越所有区域,意思是在跨区域通告时,该LSALink IDADV Router一直保持不变。通俗一点来说,就像是该ASBROSPF全网络的所有路由器说,我有这个外部路由,想去的话就来找我吧!其中,Link ID代表的是那台ASBR所引入的网络,ADV Router则是该ASBRRouter ID
下图为5LSA

67LSA7LSA是一种由NSSA区域中引入了外部路由的路由器生成的LSA,他仅在NSSA本区域内传播。由于NSSA区域不允许外部的路由进来从而禁止了5LSA,那么为了能够把自己的外部路由传播出去,于是使用了7LSA来代替5LSA的功能。值得注意的一点是,当这种7LSA到达NSSA跟其他区域的边界后,该边界路由器会根据这条7LSA。生成对应的5LSA然后继续传播给其他区域。此时,这条5类的LSA里面的Link ID7LSA一样,都是该外部网络地址,而ADV Router则变成了该边界路由器的Router ID,因为这条5LSA本来就是边界路由器产生的。这里要注意的一点是,该5LSA里面的Forwarding Address还是保持跟之前的7LSAForwarding Address一样。
下图为7LSA

下图为7类转成5LSA

二、Area Type,区域类型
OSPF的区域类型分为5种:Backbone area(area 0)Standard areaStub areaTotally stubby areaNo so stubby area(NSSA)。下面来逐一介绍。
1Backbone area,也叫骨干区域,其实就是area 0。根据OSPF的设计原则,area 0OSPF网络中起着中心节点的作用,其他区域的链路信息通过area 0来进行相互传递,这也意味着所有其他区域都必须跟area 0相连。该区域支持12345LSA

2Standard area,也叫标准区域,标准区域的意思就是在这个区域里面可以正常传递OSPF各类报文。该区域支持12345LSA

3Stub area,也叫末节区域,所谓末节区域,意思就是该区域不接受非OSPF网络的任何外部路由(external route),它如果要到达那些外部路由的时候,只需要通过默认路由把它发出去就可以了。该区域支持123LSA

4Totally stubby area,也叫完全末节区域,他的意思是该区域非但不接受外部路由,也不接受自己本区域以外的其他区域的链路信息。它如果要到达本区域以外的目标网络的时候,也是跟末节区域一样,直接把报文通过默认路由发出去。这里要注意的是,由于默认路由是用3LSA发送的,所以完全末节区域虽然不允许普通的3LSA报文,但是支持这种包含默认路由的3LSA。该区域支持12LSA,以及包含默认路由的3LSA

5No so stubby area,就是平时所说的NSSA了,这个NSSA其实是从stub区域发展而来的,它的意思是在含有stub区域的条件下,还拥有可以发送外部路由出去给其他区域的能力。该区域支持1237LSA。这里注意一点的是,NSSA区域还有另外一种模式,那就是是完全末节区域模式的NSSA。这个模式其实就是在完全末节区域环境下允许引入外部路由,这种区域模式支持12LSA以及包含默认路由的3LSA

附记:
下面附上stub区域和totally stubby area的配置方式:
Stub区域的配置方式,其实就像普通一样通告OSPF网络,然后在把该区域设置为stub,命令是area xx stub。举开始的拓扑图为例,要设置aera24stub区域,就要在R2R4上分别进入路由配置模式:
      network24.1.1.0 0.0.0.3 area 24
      area 24 stub
通告完24.1.1.0这个网段后,然后用这条命令“area 24 stub”即可把area24配置为stub区域,如果要配置为完全末节区域,则只要在该命令后面添加一个参数no-summary,即可,完整命令为“area 24 stub no-summary”。
若要查看该区域是否成功配置为stub区域的话,直接show ip ospf即可。

【BGP】BGP非等价负载均衡及BGP Link Bandwidth特性

与本文档配套的教学视频:http://v.youku.com/v_show/id_XNjMxNzgzMDgw.html
一、环境描述

红茶三杯(http://weibo.com/vinsoney/)原创文章,作者版权所有,转载请注明出处

拓扑及AS规划、BGP邻居关系如上图所示。
AS123内R1、R2、R3运行OSPF,通告各自互联接口及Loopback0口。
Loopback0口地址为x.x.x.x/32,x为设备编号。该接口用于BGP routerID。iBGP邻居关系基于该接口建立。
R1在BGP中通告11网段路由;R4在BGP中通告44网段路由。
二、eBGP非等价负载均衡
 
在R4上,能分别从R2及R3上学习到11.11.11.11/32的eBGP路由,如果配置上maximum-paths 2
则R4上,去往11网络就会同时将R2、R3作为下一跳进行等价负载均衡(虽然R3的上联口带宽更小,但是是直连)
R4的配置如下:
router bgp 200
neighbor 10.1.24.2 remote-as 123
neighbor 10.1.34.3 remote-as 123
maximum-paths 2
R4#show ip route 11.11.11.11
Routing entry for 11.11.11.11/32
  Known via “bgp 400”, distance 20, metric 0
  Tag 123, type external
  Last update from 10.1.34.3 00:00:02 ago
  Routing Descriptor Blocks:
    10.1.34.3, from 10.1.34.3, 00:00:02 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 123
  * 10.1.24.2, from 10.1.24.2, 00:00:02 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 123
从上面的显示可以看出,在R4上关于11的路由其实是等价负载均衡。Share count是1比1。但是不合理啊,因为R4上这两个出接口的带宽明显不一样是不?如何进行非等价负载均衡呢?
红茶三杯(http://weibo.com/vinsoney/)原创文章,作者版权所有,转载请注明出处
R4的配置修改如下:
router bgp 400
 bgp router-id 4.4.4.4
 bgp dmzlink-bw
 network 44.44.44.44 mask 255.255.255.255
 neighbor 10.1.24.2 remote-as 123
 neighbor 10.1.24.2 dmzlink-bw
 neighbor 10.1.34.3 remote-as 123
 neighbor 10.1.34.3 dmzlink-bw
 maximum-paths 2
 no auto-summary
R4#show ip bgp 11.11.11.11
BGP routing table entry for 11.11.11.11/32, version 8
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Multipath: eBGP
Flag: 0x840
  Advertised to update-groups:
     1         
  123
    10.1.24.2 from 10.1.24.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, multipath, best
      DMZ-Link Bw 12500 kbytes
  123
    10.1.34.3 from 10.1.34.3 (3.3.3.3)
      Origin IGP, localpref 100, valid, external, multipath
      DMZ-Link Bw 193 kbytes
我们看到,这里两条路由都打上了一个新的属性值(Link Bandwidth Community),这个值就是接口带宽的1/8。这实际上是一个扩展的communuty值。这里利用的就是BGP Link Bandwidth特性。通过这个特性,BGP能够用一个扩展的Community属性来描述与eBGP邻居的直连链路的带宽信息,从而利用这个属性值进一步的实现非等价负载均衡。
R4#show ip route 11.11.11.11
Routing entry for 11.11.11.11/32
  Known via “bgp 400”, distance 20, metric 0
  Tag 123, type external
  Last update from 10.1.34.3 00:00:02 ago
  Routing Descriptor Blocks:
    10.1.34.3, from 10.1.34.3, 00:00:02 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 123
  * 10.1.24.2, from 10.1.24.2, 00:00:02 ago
      Route metric is 0, traffic share count is 60
      AS Hops 1
      Route tag 123
F0/0口带宽为100M,S0/0口带宽为1.544M, 除一下,刚好比为将近1:60。
注意此时虽然在R4上路由表中已经出现了非等价负载均衡的两条路由,但是由于该设备目前的交换机制是CEF,而CEF默认的负载均衡方式是per-desination的方式,实际上就是基于源、目地址对的负载均衡。因此为了真正实现非等价负载均衡,需要在R4的F0/0及S1/0接口上配置:ip load-sharing per-packet。这样一来当R4下挂的用户要访问11.11.11.11网络,数据就会被R4在F0/0及S1/0口上执行非等价负载均衡。流量的比例大致是1/60,当然,在实验环境中可以适当的在F0/0及S1/0接口上调节bandwidth来使现象更明显。
 
红茶三杯(http://weibo.com/vinsoney/)原创文章,作者版权所有,转载请注明出处
三、iBGP非等价负载均衡
 
R1的配置如下:
router bgp 123
 bgp router-id 1.1.1.1
 bgp dmzlink-bw                           !!一定要打开这个开关
 neighbor 2.2.2.2 remote-as 123
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 update-source Loopback0
 maximum-paths ibgp 2
R2的配置如下:
router bgp 123
 bgp router-id 2.2.2.2
 bgp dmzlink-bw
 neighbor 1.1.1.1 remote-as 123
 neighbor 1.1.1.1 update-source Loopback0
 neighbor 1.1.1.1 next-hop-self
 neighbor 1.1.1.1 send-community extended   !!注意,一定要send-community ex,因为Link Bandwidth Community是个扩展的Community属性
 neighbor 10.1.24.4 remote-as 400
 neighbor 10.1.24.4 dmzlink-bw
 
R3的配置如下:
router bgp 123 
 bgp router-id 3.3.3.3
 bgp dmzlink-bw
 neighbor 1.1.1.1 remote-as 123
 neighbor 1.1.1.1 update-source Loopback0
 neighbor 1.1.1.1 next-hop-self
 neighbor 1.1.1.1 send-community extended
 neighbor 10.1.34.4 remote-as 400
 neighbor 10.1.34.4 dmzlink-bw
红茶三杯(http://weibo.com/vinsoney/)原创文章,作者版权所有,转载请注明出处
R4的配置就不贴了,主要是通告44.44.44.44。
R1#show ip bgp 44.44.44.44
BGP routing table entry for 44.44.44.44/32, version 4
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: iBGP
  Not advertised to any peer
  400
    3.3.3.3 (metric 2) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, multipath
      DMZ-Link Bw 193 kbytes
  400
    2.2.2.2 (metric 2) from 2.2.2.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, internal, multipath, best
      DMZ-Link Bw 12500 kbytes
R1#show ip route 44.44.44.44
Routing entry for 44.44.44.44/32
  Known via “bgp 123”, distance 200, metric 0
  Tag 400, type internal
  Last update from 2.2.2.2 00:10:40 ago
  Routing Descriptor Blocks:
   * 3.3.3.3, from 3.3.3.3, 00:10:40 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 400
    2.2.2.2, from 2.2.2.2, 00:10:40 ago
      Route metric is 0, traffic share count is 60
      AS Hops 1
      Route tag 400
四、BGP Link Bandwidth
 
1.特性描述
  • 通过利用BGP的Link Bandwidth特性,我们能够在AS边界路由器外部链路带宽不等价的情况下,实现BGP路由的非等价负载均衡。该特性通过在BGP进程的IPv4或VPNv4地址族中使用bgp dmz-bandwidth命令激活。这个特性搭配BGP multipath特性,即可实现非等价负载均衡。
  • BGP Link Bandwidth特性用于在扩展Community属性中通告一条AS出口链路的带宽。
  • 这个特性配置在一台AS边界路由器上,指向其eBGP邻居,那么此时该特性所描述的就是该路由器与其eBGP邻居之间的链路带宽。而且该链路带宽信息(使用扩展Community描述)除了AS边界路由器自己用(用于本地的非等代价负载均衡),还可以向AS内的iBGP邻居传递,当然,前提是得配置send-community extended.
  • 需要进一步的信息,可在CISCO.COM搜索BGP Link Bandwidth
2.BGP Link Bandwidth的前提条件
  • 需先激活maximum-paths特性
  • 当要向iBGP邻居通告Link Bandwidth特性时,需send-community extended
  • CEF或dCEF必须在所有参与该特性的路由器上打开
 
3.BGP Link Bandwidth特性的限制
 
  • 该特性只能配置在BGP进程的IPv4或VPNv4地址族下
  • BGP只能够在Link Bandwidth Community中通告与eBGP邻居直连的链路(接口)带宽
  • 在IPv4及VPNv4地址族中,iBGP及eBGP负载均衡都是支持的;但是eiBGP负载均衡却只能在VPNv4地址族中才能够支持,也就是iBGP与eBGP的负载均衡。
4.关于Link Bandwidth 扩展Community属性
该属性值是一个4bytes,描述的是一个单跳eBGP peer之间的直连链路(的带宽信息)。
例如上图中,R2作为一台ASBR,我们激活了bgp dmzlink-bw,同时neighbor dmz-bandwidth命令指定了一个单跳eBGP邻居R4。那么R3从F1/0接口收到来自R4的路由更新在本地会粘贴一个扩展Community属性(上图R2的BGP条目中红色粗体字),这个扩展Community属性值实际上描述的就是R2的F1/0口的带宽。这个扩展属性值R2自己可以用,当她有多条出口链路并且都激活了BGP Link Bandwidth特性、并搭配maximum-paths的话,就可以实现非等代价负载均衡;红茶三杯(http://weibo.com/vinsoney/)原创文章,作者版权所有,转载请注明出处
同时该扩展属性值也能传递给自己的iBGP邻居,例如R2及R3都激活Link Bandwidth特性,然后将描述各自出口链路Link Bandwidth信息的扩展Community属性传递给iBGP邻居R1,那么R1上就可以进一步执行非等代价负载均衡策略,其前往44.44.44.44的流量就可以在R2及R3上进行合理的分摊。
当然,R4上也可以利用BGP Link Bandwidth特性实现非等价负载均衡。

【BGP】BGP Policy Accounting

1.基本概念
 
BGP PA能够对BGP邻居发送来的、或者本地发出去的IP流量进行流量统计。
PA在接口上使能,可以基于Community-list、AS_PATH等参数来识别IP流量。
 
2.配置步骤
 
1)定义要统计的感兴趣流量并设置流量索引
 
Communitu-list、AS_PATH或者 AS号等参数都可以用于抓取感兴趣流量。
在route-map中匹配感兴趣流量。
例如:
ip community-list 30 permit 300:30
route-map PA permit 10
  match community-list 30
  set traffic-index 3
2)将IP流量归类
在BGP进程中使用table-map关键字关联上面定义好的route-map。
BGP将基于route-map中定义的规则对路由表中的路由进行归类。其实就是把感兴趣流量归类到traffic-index中。
例如:
router bgp 12
  table-map PA
3)在接口上激活BGP PA
bgp-policy accounting [input | output]
4)查看BGP PA的统计结果
show cef interface policy-statistics
3.配置案例一
 
配置的思路是,在R2上,想要抓取fast0/0口(也就是R1发过来的),去往30.30.30.0/24的流量
那么先在R2上对30.30.30.0/24的路由前缀进行标记,使用community标记,同时配置一个route-map PA,将特定community标记的路由设置traffic-index。配置如下:
ip prefix-list 30 permit 30.30.30.0/24
!
route-map setComm permit 10
  match ip address prefix-list 30
  set community 300:30
!
ip community-list 30 permit 300:30
!
route-map PA permit 10
  match community 30
  set traffic-index 30
!
router bgp 12
  table-map PA
  neighbor 10.1.23.3 route-map setComm in
!
interface fast0/0
 ip address 10.1.12.2 255.255.255.0
  bgp-policy accounting input
 
接下去在R1上向30.30.30.0/24去ping 10个ICMP包,那么就可以在R2上看到相应的流量:
R2#sh cef interface s0/0 policy-statistics input         
Serial0/0 is up (if_number 4)
  Corresponding hwidb fast_if_number 4
  Corresponding hwidb firstsw->if_number 4
  BGP policy accounting on input is enabled.
  IndexPacketsBytes
  …        …      
  30       10            1000
如果嫌输出太多,可以用管道符:sh cef interface s0/0 policy-statistics input | in 30
4.配置案例二
下面的示例,定义了多个流量索引(引用自CISCO官方文档)。
ip community-list 30 permit 100:190
ip community-list 40 permit 100:198
ip community-list 50 permit 100:197
ip community-list 60 permit 100:296
!
route-map set_bucket permit 10
match community 30
set traffic-index 2
!
route-map set_bucket permit 20
match community 40
set traffic-index 3
!
route-map set_bucket permit 30
match community 50
set traffic-index 4
!
route-map set_bucket permit 40
match community 60
set traffic-index 5

【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

1.通过next-hop-self可以变更next-hop属性
 
上图R5更新给EBGP邻居R2 BGP路由5.5.5.0时,NEXT_HOP=192.168.25.5,该属性将一直跟随本条BGP路由在AS234中传递,这时对于R4、R3来说,并不知道如何前往192.168.25.5,因此5.5.5.0的路由无法正常装入路由表。解决方法之一是R2在IGP路由中注入25.0这条外部路由,另一个方法是R2对其IBGP邻居使用next-hop-self,修改这条前缀的NEXT_HOP属性。
NEXT_HOP on shared Media(在共享介质上的运作)
 
RouterB将路由100.100.100.0/24传递给A,NEXT_HOP为10.1.123.2;
RouterA将路由100.100.100.0/24传递给C,此时NEXT_HOP保持不变;
如果路由器收到某条BGP路由,该路由的NEXT_HOP地址值与该路由器的接口IP(更新源)同属一个网段,那么该条路由的NEXT_HOP地址将保持不变并传递给它的(这个相同网段上的)BGP邻居,这个其实是一种优化机制,但是这种机制在NBMA环境中是否有问题呢?
NEXT_HOP on NMBA network
仍然看上图,中间的网络如果不是广播多路访问网络,而是一个帧中继网络,那么就要注意,C收到的路由,NEXT_HOP为10.1.123.2,那么如果C路由器上没有到该IP的PVC,就会出问题,所以这点要考虑进去。
2.通过route-map修改BGP路由NEXT_HOP属性值
 
BGP的邻居关系如图所示,R1-R2建立基于Loopback的iBGP邻居关系。R2-R3建立基于直连接口的eBGP邻居关系。那么在默认情况下,R1通告给R2的路由11.0/24下一跳属性值为1.1.1.1,也就是R1的更新源IP,而R2将路由更新给eBGP邻居R3时,路由的NH变成了10.1.23.2、
R2上增加配置
access-list 1 permit 11.11.11.0
route-map test permit 10
  match ip address 1
  set ip next-hop 10.1.23.99
router bgp 12
  neighbor 10.1.23.3 route-map test out
 
通过在R2上部署out方向的route-map,可以修改传递给R3的BGP路由的NEXT_HOP属性值,当然上面的范例设置的10.1.23.99没有任何意义,纯粹是一个测试而已。
3.关于BGP next-hop-unchanged特性
 
(承上一小节)另一个可以影响BGP NEXT_HOP属性值的特性是BGP next-hop-unchanged特性。
首先这条命令只能对多跳eBGP peer配置,所以上图中,R2及R3需建立基于Loopback的eBGP邻居关系,形成multihop eBGP peer。 
在R2收到iBGP peer传来的路由11.0/24,其NEXT_HOP属性值为1.1.1.1,如过R2上在BGP进程中使用neighbor 3.3.3.3 next-hop-unchanged配置,那么R2将BGP路由传递给eBGP邻居R3时,路由的NEXT_HOP属性值将不会发生变化。
再进一步做个测试,现在把拓扑环境变更一下:
 
R1-R2之间变成了eBGP邻居了,基于直连接口建立eBGP邻居关系;
R2-R3之间仍然是基于Loopback建立的多跳eBGP邻居关系;
现在R1传来的路由,在R2上NEXT_HOP属性值为10.1.12.1,那么默认情况下R2将路由再传给R3时,路由的NEXT_HOP属性值修改为2.2.2.2也就是R2的更新源IP。
如果此刻在R2上配置neighbor 3.3.3.3 next-hop-unchanged,我们发现命令无效,R2通告给R3的路由NEXT_HOP属性值还是会变,不会保留10.1.12.1。
因此我得出的结论是,BGP 的neighbor next-hop-unchanged命令,首先只能对多跳eBGP邻居配置,其次,它只在将本地的iBGP路由传递给自己的eBGP多跳邻居时才会生效。

BGP 地址族分析 – Address-family

所谓地址族,就是把ipv4、ipv6和vpnv4分成不同的“块”,对每个“块”单独进行配置,如下所示:

Rack1R3(config-router)#address-family ?
ipv4   Address family
ipv6   Address family
vpnv4  Address family

由于ipv6现在应用较少,所以暂时不予讨论,如果大家配置过MPLS VPN,那么对ipv4和vpnv4这两个地址族应该有些了解。
其实如果不是有特殊应用(MPLS、Ipv6),也不会用到这些地址族的概念,直接默认建立全局BGP邻居及属性就可以了。所以可以理解地址组是BGP的一个扩展。
下面我们就这两个地址族进行分析。

Ipv4vpnv4地址族的分析:

特殊说明:“no bgp default ipv4-unicast” 命令是在全局BGP下禁用单播的传播,在MPLS中,正确的配置就是打上此命令,然后如果需要全局BGP连接或在BGP vpnv4连接,那么就在各个地址族中激活此邻居就可以了。
但有些全局命令是可以被继承到各个地址族中的。

以下分别分析几种常见的情况

1、如果没有配置“no bgp default ipv4-unicast”,直接在全局配置BGP邻居关系,这样ipv4地址族会默认被激活的,但是不会显示在“show run”中,如下所示:

Rack1R1#config ter
Enter configuration commands, one per line.  End with CNTL/Z.
Rack1R1(config)#router bgp 1
Rack1R1(config-router)#bgp router-id 150.1.1.1
Rack1R1(config-router)#nei 150.1.2.2 remote-as 1

Rack1R1(config-router)#nei 150.1.2.2 update-source lo0
Rack1R1(config-router)#address-family vpnv4

Rack1R1(config-router-af)#nei 150.1.2.2 activate
Rack1R1(config-router-af)#nei 150.1.2.2 send-community ex
Rack1R1(config-router-af)#exit
Rack1R1(config-router)#end
Rack1R1#
Rack1R1#sh run | b r b
router bgp 1
no synchronization
bgp router-id 150.1.1.1
neighbor 150.1.2.2 remote-as 1
neighbor 150.1.2.2 update-source Loopback0
no auto-summary
  >>>>> 没有ipv4地址族

address-family vpnv4
neighbor 150.1.2.2 activate
neighbor 150.1.2.2 send-community extended
exit-address-family
!

2、此时如果打上“no bgp default ipv4-unicast” address-family ipv4地址族就会自动显示出来,此时如果再建立BGP全局邻居,这条命令就会生效:

Rack1R1#config ter
Enter configuration commands, one per line.  End with CNTL/Z.
Rack1R1(config)#router bgp 1
Rack1R1(config-router)#no bgp default ipv4-unicast

Rack1R1(config-router)#end
Rack1R1#
Rack1R1#sh run | b r b
router bgp 1
bgp router-id 150.1.1.1
no bgp default ipv4-unicast
neighbor 150.1.2.2 remote-as 1
neighbor 150.1.2.2 update-source Loopback0
!
address-family ipv4
neighbor 150.1.2.2 activate
no auto-summary >>>>> 这些命令从全局BGP配置中继承到了ipv4的地址族中

no synchronization
exit-address-family

!
address-family vpnv4
neighbor 150.1.2.2 activate
neighbor 150.1.2.2 send-community extended
exit-address-family

再加一个全局BGP邻居会怎么样呢?

Rack1R1#config ter
Enter configuration commands, one per line.  End with CNTL/Z.
Rack1R1(config)#router bgp 1
Rack1R1(config-router)#nei 150.1.3.3 remot 1

Rack1R1(config-router)#nei 150.1.3.3 update-source lo0
Rack1R1(config-router)#end
Rack1R1#
Rack1R1#sh run | b r b
router bgp 1
bgp router-id 150.1.1.1
no bgp default ipv4-unicast
neighbor 150.1.2.2 remote-as 1
neighbor 150.1.2.2 update-source Loopback0
neighbor 150.1.3.3 remote-as 1
neighbor 150.1.3.3 update-source Loopback0
!
address-family ipv4     >>>>>
在ipv4地址族中没有150.1.3.3 的邻居
neighbor 150.1.2.2 activate
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 150.1.2.2 activate
neighbor 150.1.2.2 send-community extended
exit-address-family
!

由于“no bgp default ipv4-unicast”命令的关系,虽然建立了全局BGP的邻居,但它是不会出现在任何地址族中的。如果想在ipv4或vpnv4中起效果,就得在地址族中用“nei 150.1.3.3 active”把邻居激活:

Rack1R1(config-router)#address-family ipv4
Rack1R1(config-router-af)#nei 150.1.3.3 activate
Rack1R1(config-router-af)#exit
Rack1R1(config-router)#end
Rack1R1#
Rack1R1#sh run | b r b
router bgp 1
bgp router-id 150.1.1.1
no bgp default ipv4-unicast
neighbor 150.1.2.2 remote-as 1
neighbor 150.1.2.2 update-source Loopback0
neighbor 150.1.3.3 remote-as 1
neighbor 150.1.3.3 update-source Loopback0
!
address-family ipv4
neighbor 150.1.2.2 activate
neighbor 150.1.3.3 activate
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 150.1.2.2 activate
neighbor 150.1.2.2 send-community extended
exit-address-family

3、如果在没打“no bgp default ipv4-unicast”时,配置“address-family ipv4” (不用配置地址族,进去后直接end退出),会怎么样呢?

Rack1R2#sh run | b r b
router bgp 1
no synchronization
bgp router-id 150.1.2.2
neighbor 150.1.1.1 remote-as 1
neighbor 150.1.1.1 update-source Loopback0
no auto-summary
  >>>>> 此时没有ipv4地址族
address-family vpnv4
neighbor 150.1.1.1 activate
neighbor 150.1.1.1 send-community extended
exit-address-family

Rack1R2(config)#router bgp 1
Rack1R2(config-router)#address-family ipv4
Rack1R2(config-router-af)#exit
Rack1R2(config-router)#end
Rack1R2#
Rack1R2#sh run | b r b
router bgp 1
bgp router-id 150.1.2.2
neighbor 150.1.1.1 remote-as 1
neighbor 150.1.1.1 update-source Loopback0
!
address-family ipv4
neighbor 150.1.1.1 activate
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 150.1.1.1 activate
neighbor 150.1.1.1 send-community extended
exit-address-family
!

可以看出来,全局的BGP邻居出现在ipv4的地址族中了,所以得出结论:在不配置“no bgp default ipv4-unicast”命令时,默认会把全局BGP邻居关系继承到Ipv4的地址族中。

此时可以用no命令no掉Ipv4地址组中的邻居关系,但命令形式有两种,一种是直接从配置中no掉,一种是no掉后不会从配置中清除,详细如下所示:

No 掉后不会从配置中清除:

Rack1R2(config)#router bgp 1
Rack1R2(config-router)#address-family ipv4
Rack1R2(config-router-af)#no nei 150.1.3.3 activate
Rack1R2(config-router-af)#exit
Rack1R2(config-router)#end
Rack1R2#
Rack1R2#sh run | b r b
router bgp 1
bgp router-id 150.1.2.2
neighbor 150.1.1.1 remote-as 1
neighbor 150.1.1.1 update-source Loopback0
neighbor 150.1.3.3 remote-as 1
neighbor 150.1.3.3 update-source Loopback0
!
address-family ipv4
neighbor 150.1.1.1 activate
no neighbor 150.1.3.3 activate
no auto-summary
no synchronization
exit-address-family

此时有2种方法可以从配置中清除ipv4地址族中的没有用的BGP邻居关系:

1、直接在全局BGP配置下配置“no bgp default ipv4-unicast”
2、用“no nei ” 来把整个邻居No掉,如下所示:

No 掉后从配置中清除:

Rack1R2(config-router)#address-family ipv4
Rack1R2(config-router-af)#no nei 150.1.3.3
Rack1R2(config-router-af)#end
Rack1R2#
Rack1R2#sh run | b r b
router bgp 1
bgp router-id 150.1.2.2
neighbor 150.1.1.1 remote-as 1
neighbor 150.1.1.1 update-source Loopback0
  >>>>> 整个全局BGP的邻居被No掉了
address-family ipv4
neighbor 150.1.1.1 activate
no auto-summary
no synchronization
exit-address-family

4、关于vpnv4的地址族,只要在vpnv4地址族中打上“nei active”就可以了,“neighbor send-community extended”是自动生成的,其他的BGP Policies需要自己手工配置。

在有路由反射器的情况下,“no neighbor peer-group ”命令可以直接从配置中删除此行(ipv4地址族中),但是不能No掉整个peer group,如:

c12012-GD-RR(config-router)#address-family ipv4
c12012-GD-RR(config-router-af)#no neighbor pc1 activate
% Peergroups are automatically activated when parameters are configured

总结:

1、无论是否执行“no bgp default ipv4-unicast”,可以说全局BGP配置同等于ipv4地址组中的配置,如果此时你在ipv4下直接用“no nei ”命令,他会直接从全局BGP的邻居中no掉此邻居,所以不建议如此操作。

2、如果执行了“no bgp default ipv4-unicast”,BGP的Policies (如“route-reflector-client”、“next-hop-self”等)就不能在全局BGP中配置,它们只能在地址族中起作用,这是新版IOS的特性,其实也是强制使配置规范。

ipv4-family unicast 指的是普通的ipv4路由
ipv4-family VPN 指的是mpls VPN路由
还有ipv6等,全局默认的就是ipv4-family unicast
发布不同的路由需要在不同的address family下发布
ipv4-family unicast 当然是为单播路由用的 
ipv4-family vpnv4 当然就是传送VPN路由的 该地址簇里的路由只服务于VPN路由 可结合mpls vpn在路由中打上对等体属性 你去把《mpls vpn网络体系架构》看一遍就明白了

igmp snooping原理

3.1.1 igmp snooping原理

   igmp snooping运行在数据链路层,是二层以太网交换机上的组播约束机制,用于管理和控制组播组。

   当二层以太网交换机收到主机和路由器之间传递的igmp报文时,igmp snooping分析igmp报文所带的信息。当监听到主机发出的igmp主机报告报文时,交换机就将该主机加入到相应的组播表中;当监听到主机发出的igmp离开报文时,交换机就将删除与该主机对应的组播表项。通过不断地监听igmp报文,交换机就可以在二层建立和维护mac组播地址表。之后,交换机就可以根据mac组播地址表转发从路由器下发的组播报文。

   没有运行igmp snooping时,组播报文将在二层广播,如图3-1所示。

   

   运行igmp snooping后,报文将不再在二层广播,而是进行二层组播,如图3-2所示.

   

   3.1.2 igmpv3 snooping简介

   s9500交换机支持igmpv1、 igmpv2、igmpv3协议。igmpv3协议是在igmpv2报文的基础上的扩充。igmpv3允许主机指定接收某些网络发送的某些组播组,相比以前的版本,增加了主机的控制能力,不仅可以指定组播组,还能指定组播的源。

   igmp查询报文分通用查询报文、特定组查询报文,下文着重介绍igmpv3新增的报文。

   3.1.3 查询报文

   igmpv3新增特定源组查询报文格式如下,从图中可以分辨igmpv2、igmpv3查询报文的格式的不同:

   对于通用查询报文,igmpv2报文长度为8字节,igmpv3长度为12字节。

   对于特定组查询报文,igmpv2报文长度为8字节,igmpv3长度大于等于12字节。

   igmpv3特定源组查询报文,长度大于12字节。

   

   设备收到igmpv3查询报文时,立即在vlan内透传该报文,然后再转换为igmpv2查询报文,进行后续处理。

   3.1.4 成员关系报告报文

   从图中可以分辨igmpv2、igmpv3查询报文的格式的不同:

   igmpv2成员关系报文类型为0x16;

   igmpv3新增igmpv3成员关系报告报文,igmpv2协议不能识别该报文。

   收到igmpv3 report报文时,立即在vlan内透传该报文,然后再转换为igmpv2 report报文,进行后续处理。

   

   igmpv3 report报文只支持include模式,即除了include { null } 报文转换为igmpv2 leave报文外,其它类型的报文都解析为igmpv2 report报文

   3.1.5 igmp snooping的实现

   1. 与igmp snooping相关的概念

   为描述方便,先介绍一下以太网交换机上与igmp snooping相关的概念。

   路由器端口(router port):交换机上连接组播路由器的端口,而不是指路由器设备上的端口。

   组播成员端口:以太网交换机上与组播组成员相连的端口。此处的组播组成员是加入某个组播组的主机。

   mac组播组:以太网交换机维护的以mac组播地址标识的组播组。

   路由器端口老化时间:路由器端口老化定时器设置的时间,如果在此定时器超时后还没有收到igmp通用查询报文,交换机就认为这个端口不再是一个路由器端口。

   组播组成员端口老化时间:当一个端口加入ip组播组的同时,启动该端口的老化定时器,组播组端口成员老化时间就是该定时器设置的时间。如果在此定时器超时后还没有收到igmp报告报文,那么以太网交换机就向该端口发送igmp特定组查询报文,如果还是接收不到igmp报告报文,则交换机就认为此端口不再是该组播组成员端口。

   最大响应查询时间:当向组播成员端口发送igmp特定组查询报文的同时,以太网交换机会启动一个响应查询定时器,最大响应查询时间就是该定时器设置的时间。如果在最大响应查询时间之内没有收到igmp报告报文,以太网交换机就把该端口从组播成员端口中删去。

2. 利用igmp snooping实现二层组播

   以太网交换机通过运行igmp snooping实现对igmp报文的侦测,并为主机及其对应端口与相应的组播组地址建立映射关系。为实现igmp snooping,二层以太网交换机对各种igmp报文的处理过程如图3-5所示。

   

   igmp通用查询报文:igmp通用查询报文是组播路由器向组播组成员发送的报文,用于查询哪些组播组存在成员。当收到igmp通用查询报文时,如果收到通用查询报文的端口原来就是路由器端口,以太网交换机就重置该端口的老化定时器;如果收到通用查询报文的端口原来不是路由器端口,则交换机启动对该端口的老化定时器。

   igmp特定组查询报文:igmp特定组查询报文是组播路由器向组播组成员发送的报文,用于查询特定组播组是否存在成员。当以太网交换机收到igmp特定组查询报文时,只向被查询的ip组播组发特定组查询。

   igmp报告报文:igmp报告报文是主机向组播路由器发送的报告报文,用于申请加入某个组播组或者应答igmp查询报文。当以太网交换机收到igmp报告报文时,首先判断该报文要加入的ip组播组对应的mac组播组是否已经存在。

   如果对应的mac组播组不存在,不只是通知路由器有成员加入某个组播组,还会新建mac组播组,并将接收报告报文的端口加入该mac组播组中,同时启动该端口的老化定时器,将该端口所属vlan下存在的所有路由器端口加入到此mac组播转发表中,而且新建ip组播组,并将接收报告报文的端口加入到ip组播组中。

   如果该报文对应的mac组播组已经存在,但是接收报告报文的端口不在该mac组播组中,则将接收报告报文的端口加入mac组播组中并启动该端口的老化定时器,然后判断此报文对应的ip组播组是否存在:如果不存在,则新建ip组播组并把接收报告报文的端口加入到ip组播组中,如果存在则将接收报告报文的端口加入到ip组播组中。

   如果该报文对应的mac组播组已存在,并且接收报告报文的端口也已经存在于该mac组播组,则仅重置接收报告报文的端口上的老化定时器。

   igmp离开报文:igmp离开报文是组播组成员向组播路由器发送的报文,用于告知路由器主机离开了某个组播组。当以太网交换机收到对某ip组播组的离开报文,则会向接收此离开报文的端口发送所离开组的特定组查询报文,以确认此端口相连的主机中还有没有此组播组的其他成员,同时启动一个响应查询定时器。如果在该定时器超时的时候还没有收到该组播组的报告报文,则将该端口从相应mac组播组中删去。如果mac组播组没有组播成员端口时,交换机将通知组播路由器将该分支从组播树中删除。

   可以通过将二层交换机的某个端口配置为组播组成员来响应组播路由器的igmp查询报文,从而避免组播路由器认为当前网段没有组播组的成员而取消相应的路径。具体配置原理及配置过程可参见“6.3.10 配置路由器加入指定组播组”。

   缺省情况下,二层交换机端口不加入任何组播组。

   指定的端口必须属于该vlan,且该vlan使能了igmp snooping协议,否则配置不会起作用。

【有点儿意思系列 06】一个看起来简单的案例

几年前,本肥曾经设计过一个面向网络工程实战的课程,今天分享一个当时用于阶段性测验的案例。如果您正在学习数据通信技术,或者正准备考Cisco/Huawei认证,可以试着做做,权当自我检验,拓扑说大不大,但是看起来简单,里头的东西还是挺值得琢磨的,网络拓扑如下:
[转载]【有点儿意思系列 <wbr>06】一个看起来简单的案例

需求如下:
  1. PC1、PC2分属VLAN10和VLAN20;DHCP服务器属VLAN30 ,PC1和PC2从DHCP服务器自动获取地址。
  2. SW4是内网用户接入交换机(仅具二层功能),要求内网两个网段的用户均能telnet到该设备。
  3. R3和R4作为内网用户的网关设备,互为热备份。
  4. R3、R4、SW2及SW3上不允许出现任何手工配置的静态路由条目。 
  5. SW1采用重发布的方式,将直连的服务器网段路由(如10.1.100.0/24)注入EIGRP。
  6. 内网用户(PC1、PC2)访问核心服务器Server(10.1.100.1)的数据流走向如下:
    PC1访问Server:R3 > R1 > SW2 > SW1 > Server;
    PC2访问Server:R4 > R2 > SW3 > SW1 > Server;
    沿途任何设备上到达Server的路由不允许出现负载均衡,且PC访问Server的流量往返路径一致。 
  7. 要求SW2和SW3访问Server都走最优路径,即SW2前往Server的数据流走SW1,SW3前往Server的数据流也直接到SW1。
  8. SW1上关于10.1.10.0/24和10.1.20.0/24的路由不应该出现等价负载均衡,正常情况下访问10.0/24网段的数据流走SW2,访问20.0/24网段的数据流走SW3。
  9. 当SW1-SW2之间的链路DOWN掉时,PC1访问Server的数据流切换至路径:R3>R1>SW3>SW1>Server,且往返路径一致。而当SW1-SW3之间的链路DOWN掉时,PC2应该仍然能够访问Server,情况类似。
  10. 当SW2-R1之间的链路DOWN掉时,PC1访问Server的数据流切换至路径:R3>R1>SW3>SW1>Server,此时不要求流量往返路径完全一致。当SW3-R2之间的链路DOWN掉时,PC2应该仍能够访问到Server。
  11. R3、R4任意一台路由器与内网交换机直连链路DOWN掉,不影响内网PC访问外网。
  12. 【可选】若R3的出口DOWN或R1的两条上联链路都DOWN,以上两种情况,R3都能检测到,要求此两种情况发生时内网用户访问SERVER都不受影响,R4同理。