标签:bgp

BGP ALL IN ONE 详解

No Comments CISCO

BGP

为什么使用BGP

BGP是可靠的,基于TCP(Port Numer 179)进行建立和维护连接,并且具有并使用TCP的滑动窗口的机制来更新路由表,可以支持一次性的大量路由条目的更新. BGP是增量更新,同时也是触发更新;周期性的发送Keepalive 信息来验证TCP连接是否正常,以确保对方的路由器状态是正常的。

PS:EIGRP(使用IPV4协议号89)和OSPF-V2(使用IPV4协议号88)使用One-One 窗口机制,OSPF一次更新100条路由。

BGP的使用原则

1. 多条路径时,BGP Speaker只选最优的给自己使用

2. BGP Speaker只把自己的路由通告给邻居

3. 从EBGP获得的路由会向它所有BGP 邻居通告(EBGP/IBGP)

BGP Speaker从IBGP获得的路由不会通告给它的IBGP邻居(BGP 的水平分割)IGP是基于端口的水平分割;而IBGP是基于邻居的水平分割。水平分割的作用是避免产生路由环路。

4. BGP Speaker从IBGP获得的路由是否通告给它的EBGP邻居要服从IGP和BGP是否同步来决定

5. 邻居关系一建立,BGP Speaker就把自己所有的BGP最优路由通告给新的邻居

BGP邻居协商过程(4Message

1. Open (code 1):用于建立连接,包含版本号(如BGP3/BGP4)Hold Time=180s(是一个协商的过程,以较小的Hold Time为准),Router-ID(OSPF和BGP可以手动配置),AS号(范围从1~65535,其中64512~65535 的AS编号范围留作私有);

2. KeepAlives(code 4):周期发送用于维护连接检查路径(这个包是不可靠的),T=Hold Time/3, Hold Time=0 => No KeepAlive.,keepalive 是个19 字节周期发送的BGP 消息头标,没有数据域。

3. Update(code 2):消息包含了三个组件:网络层可达性消息(NLRI)、路径属性和被撤销的路由。包括到达目的网络的路径和属性,更新路由信息用,一次更新只有一条路径,但可以有多条网络。Update可以删除(宣告不可达)和增加(宣告可达)路由.其内容是前缀的长度。

4. Notification(code 3):网络中出现错误(Error),检测到后断开连接并发送通知给对方。

5.Route-Reflesh message:一个可选的message (negotiated during capability advertisement) that is sent to request dynamic BGP route updates from the Adj-RIB-Out table of a remote BGP speaker

PS :BG Ptime

在BGP路由配置模式下可以配置全局的BGP timer :timers bgp 70 210

对于特定的neighbor可以使用特定的 BGP timer:neighbor 172.17.1.2 timers 80 240

过程:Idel,connect,open sent,open confirm,establish。

BGP邻居建立会话的5种状态:

1. Idle:查找路由表,该过程BGP对它的资源进行初始化,复位一个连接重试计时器,发起一条TCP 连接,并开始倾听远程对等体所发起的连接。

2. Connect:找到路由表后进行TCP三次握手,TCP 连接成功,则转到OpenSent状态,TCP连接失败,则转到active 状态,将尝试再次连接。

3. Open Sent:握上手后发送Open message消息,等待其对等体发送打开消息,如果出错,则发送一条出错消息并退回空闲状态,如果无错,则开始发送Keepalive 并复位keepalive 计时器。

4. Open Confirm:收到对方发来的Open消息,如果收到keepalive 消息,BGP 就进入established状态,邻居关系协商完成;如果系统收到一条更新或keepalive 消息,它将重新启动保持计时器;如果收到Notification消息,BGP 就退回到空闲状态。

5. Established:会话建立,邻居关系协商过程最终状态;这时BGP将开始与它的对等体交换路由更新数据包。

PS: Active状态:当路由器发送出OPEN包给邻居等待回应,如果长时间未接收到回应则超时,超时后状态更改为Idle,试图发起TCP连接获得对等体,成功转到Open Sent状态,连接重试计时器超时,退回连接状态。,这是由于TCP链路上出现了问题所致。??

产生问题的原因主要有:

1. Neighbor命令后面的ip-address配置有错;

2. 没有打上Neighbor命令(两边都要)

3. 更新源错误,或者更新源不可达。

Debug信息:

Aspen#

18:24:33: BGP: 192.168.1.221 went from Idle to Active

18:24:41: BGP: 192.168.1.221 went from Active to OpenSent

18:24:42: BGP: 192.168.1.221 went from OpenSent to OpenConfirm

18:24:42: BGP: 192.168.1.221 went from OpenConfirm to Established

18:24:43: BGP: 192.168.1.221 computing updates, neighbor version 0, table version

n 1, starting at 0.0.0.0

18:24:43: BGP: 192.168.1.221 update run completed, ran for 0ms, neighbor version

0, start version 1, throttled to 1, check point net 0.0.0.0

BGP Input Events

BGP的3个数据库

邻居表、BGP转发表(也叫转发库)、IP路由表。

BGP同步和黑洞问题

BGP 路由器不应该将从其内部BGP 邻居处学到的目的地网络通告给其外部邻居路由器,除非这些目的地网络是通过IGP 可达的。不同步的时候,路由表里面显示的是 非最优(①下一跳是否可达 ②同步原则是否满足),同步默认是打开的,全互连时(用于IBGP)需要关闭同步,命令是:Router(config-router)#no synchronization

BGP 路由进程

从对等体处收到的路由->输入策略引擎->路由判定过程(BGP 表)->路由器所用的路由(IP 路由表)->输出策略引擎->通告给对等体的路由

BGP的下一跳跳属性

1. 在多路广播网络中,其下一条属性不变
clip_image001

如图:B 通过EBGP通告网络172.30.0.0 给A而不改变其下一跳属性 10.10.10.2,这种行为防止了一个不必要的Hop,因为他们都同在一个多路广播网络里面。如果改变了其下一跳属性为10.10.10.1,当AS 65000作为一个Transit AS的时候, AS 64520的EBGP Router就不是以最优的路径通过AS 65000。

PS:BGP是一种AS-by-AS的路由协议,它的下一跳指的是下一个AS.而不是下一个Router

1. 从EBGP学习到的路由,其下一跳属性不变,可以手动做next-hop-self

2. 在IBGP关系中,下一跳地址,就是通告该路由的IBGP 的 更新源。???还是Router-id???

jeans_young:

next_hop的三个规则是这样的:
a.如果是由EBGP peer通告的BGP update报文,那么next_hop就是AS外这个EBGP peer的IP地址。(实际上,是与本AS直连的接口IP地址)
b. 假如BGP update报文是由IBGP peer通告的,那么next_hop就是这个IBGP peer发出更新报文的接口IP地址
c.如果update 报文最开始是由EBGP peer通告,但是是从本AS内的边界路由器(也就是IBGP peer),那么next_hop是EBGP peer的通告出更新的接口IP地址,而不是本AS的这个IBGP peer。
ps:其实,前两条规则,比较容易理解,我们可以这样记忆前两条:谁通告的,那么下一跳就是它。主要是第三条有点特殊。但是只要我们把BGP协议本身的起源想一想就容易理解了。BGP是对于大型互联网的一个路由协议。它其实我们应该把它理解成路径向量协议。也就是说它的视角是AS,而不是单个的router。BGP是宏观视角,IGP则是微观视角。所以,像第三种情况,我们要把视角上升到一个更高的高度——从AS来看。那么就容易理解了。既然是IBGP peer转发通告EBGP peer发来的路由,那么得追根溯源。最终追到EBGP peer。所以它才是真正的下一跳。
这里,我们会发现一个问题,就是假如这个边界路由器没有告诉本AS的其它路由器到这个EBGP peer怎么走,那么这样路由不可达就会导致数据包被丢弃。所以引入了next_hop_self机制,配置在边界路由器上,使得IBGP peer要发路由更新给EBGP peer的时候,强制从自己这里走,因为对于边界路由器来讲,他是知道怎么到达EBGP peer的。这个其实有点类似于代理的概念。比如proxy ARP。就是把自己的MAC地址通告给ARP请求者,而不是把ARP请求的真正目的MAC回送回去。目的就是代理。

BGP属性

①公认属性(Must be recognized by all compliant BGP implementations Are propagated to other neighbors)

②Well-known mandatory attributes(Must be present in all update messages)

③Well-known discretionary attributes(May be present in update messages)

④可选(Recognized by some implementations (could be private), expected not to be recognized by everyone ,Recognized optional attributes are propagated to other neighbors based on their meaning )

⑤可选传递属性(If not recognized, are marked as partial and
propagated to other neighbors )

⑥可选不可传递属性(Discarded if not recognized)

公认必选:ORIGIN/AS_PATH/NEXT_HOP

公认自选:LOCAL_PREF/ATOMIC_AFFREGATE

任选可透明传递:AGGREGATOR/COMMUNITY

任选非可透明传递:MED/ORIGINATOR_ID/CLUSTER_LIST

AS-path (prepending):BGP中用于检测环路,当一个AS-PATH中有两个相同的AS号说明有环路产生,如果自己的AS出现在某接收到的路由AS-PATH中,?接收吗?是一个有序列表。

Next-hop详见上方。

MED又叫BGP的metrics值(没有MED的路由->MED=0;缺少MED的路由,将成为最先优选的路由),作用是影响邻居AS的路由选择。在有多出口的本AS中,决定邻居AS更优先从哪个出口进入本AS,默认值是0,值越小优先级越高。MED仅向EBGP邻居发送。它是可选的、非传递属性。bgp bestpath missing-as-worst命令修改cisco ios对med的行为,使得和最新的ietf标准(丢失MED->将MED设置成无穷大;缺少MED的路由,将成为最后优选的路由)一致

如果没有启用bgp deterministic-med,接收到的路由的顺序可能影响基于med的最有路径选择,当从多个as收到同一条路由,而且具有完全一样的路径长度和不同的med,就会发生下面的情况:

A) ASPATH 1, MED 100, internal, igp metric to NEXT_HOP 10

B) ASPATH 2, MED 150, internal, igp metric to NEXT_HOP 5

C) ASPATH 1, MED 200, external

在没有配置bgp deterministic-med的路由会优选B(较低的IGP metric),接着是C(EBGP>IBGP),而C的MED值高于A

在启用bgp deterministic-med的Router,将清除对基于MED最优路径选择的临时依赖,它可以确保满足MED的原始要求,来控制进入本AS的流量的选择,会对进入被AS的所有路由进行med比较,最后选择有最小med值的A是最优路径,但是如果Router配置了bgp always-compare-med,将总是采用BGP MED 判断。

WeightCisco Only):权重,(范围0 到 65,535)weight是CISCO私有的参数,路由器配置了权重后在本地有效,缺省情况下,从对等学习到的所有路由的Weight都是0,由本Router产生的路由的Weight都是32768。作用是影响路由选择,值越大优先级越高。不向BGP邻居发送,仅限本地路由器,

neighbor {ip-address | peer-group-name} weight default-weight,将邻居发送来的路由的weight值改变

Local-preferenceLocal-preference是在一个多出口的as中控制流量更优先的从哪个出口出去, Local-preference的默认值是100,更改值的命令是:Router(config-router)# bgp default local-preference value 他的值越高,其优先级越大.本地优先值仅在AS内部中有效.(学习的路由影响出去的流量,公告出去的路由影响进来的流量.)

Origin起源(也叫起点)属性。

注入BGP路由表有三种方式(来源/起源):

一种是用Network命令进行,在BGP路由表显示为i(源属性:0),另一种是再发布EGP获得的,在路由表中显示为E(源属性:1),最后一种是从IGP或静态路由再发布过来的,显示为?(源属性:2)。

Communities(团体)

扩展communities属性(AS号:AS自己定义的号码)

将他们化成10进制就是CISCO路由器对标准communities属性的表示方法。

(1).INTERNET:INTERNET团体没有一个确定的值,所有属于这个团体的路由豆芽一个缺省值,可以自由的公布属于这个团体的路由(Advertise to any peer)

(2)NO_EXPORT(4294967041或者0Xffffff01):接收到的携带该值的路由不能公布给EBGP对等体,或者如果配置了一个联盟,该路由不能在联盟范围以外公布――邻居
(3)NO_ADVERTISE(4294967042或者0Xffffff02):接收到的携带该值的路由不能公布给EBGP或者IBGP的对等体。――不广播,只留给自己,自私(Do not advertise to any peer /will go to next-hop only

(5).LOCAL_AS(4294967043或者0Xffffff03):RFC1997称这个属性为NO_EXPORT_SUBCONFED.不能将接收到的携带该值的路由公布给EBGP对等体,以及在联盟内的其他AS的对等。――本AS内

(6).None(Removes the community with: set community none)

Transit AS

Stub AS经过这个AS才能到达其它的AS。

BGP汇总(Route Aggregation)

1. BGP默认是自动汇总(主类网络)的,可以用 no auto-summary来关闭

可以用network *.*.*.* mask *.*.*.* 来手动汇总(只有在路由表里面有这些条目的时候,才可以用这条命令来实现手动汇总,而且只能用这条命令公布200条前缀)Network命令不仅宣告汇总路由,并且也将具体路由宣告出去。如果不想将具体路由宣告出去,需进行过滤(前面提到的Outbound策略)。Network命令本身不能做汇总,需要IP route命令配合。这种汇总比较麻烦,我们并不推荐。只当需要将已由IGP汇总(OSPF、EIGRP等)后的路由原封不动地发布到BGP里的情况下才使用。(自动汇总只能汇总到主类网络)

PS: Network命令是将已存在(和已由IGP汇总)的路由表宣告到BGP中。无Mask的宣告将是有类网络(A、B、C),有Mask的则是无类网络。

2. Router(config)# ip route prefix mask null0 Null 0是空端口,不是一个物理的端口,目的是告诉其它路由从我这个路由走,但具体怎么走,不是指定一个物理的端口。只是在路由表里面形成类似于已经汇总的路由,有点路由欺骗的味道,当到达本Router的数据包目的地可达的时候(有相关的路由),不会出现问题,但是,当路由不可到达的时候,所有的包将发送给NULL0口,这样可以防止DDOS攻击。

ip route 192.168.192.0 255.255.248.0 null0(在IGP表里面有的条目)

router bgp 100

network 192.168.192.0 mask 255.255.248.0(向所有建立的邻居都发送聚合路由)

3.

Router(config-router)# aggregate-address ip-address mask [summary-only] [as-set]

对BGP表中的路由器条目进行汇总,在BGP路由进程配置模式下 Aggregate-address汇总命令它是创建一个汇总的路由并进行宣告。

Summary-only参数是只宣告汇总路由,抑制具体路由(不发布具体路由)。

AS-Set参数:不同路由经过的AS可能不一样,这条命令的作用在于汇总路由知道具体路由所经过的AS的集合,不是有序的AS-PATH),以避免产生环路。

这样汇总不须人工指定空端口,系统会自动产生。

Sun#show ip bgp 192.168.192.0 255.255.248.0

BGP routing table entry for 192.168.192.0/21, version 23

Paths: (1 available, best #1)

Advertised to non peer-group peers:

192.168.1.229

300, (aggregated by 300 192.168.1.250)

192.168.1.233 from 192.168.1.233 (192.168.1.250)

Origin IGP, localpref 100, valid, external, atomic-aggregate, best, ref 2

②用aggregate-addresssuppress-map过滤/抑制路由

router bgp 100

no sy

neighbor 192.168.1.253 remote-as 200

neighbor 192.168.1.246 remote-as 200

aggregate-address 192.168.192.0 255.255.248.0 suppress-map VERMONT

aggregate-address 192.168.192.0 255.255.248.0 suppress-map CALIFORNIA

aggregate-address 192.168.192.0 255.255.248.0 attribute-map ORIGIN suppress-map

VERMONT

aggregate-address 192.168.192.0 255.255.248.0 as-set summary-only advertise-map

ALLOW_ROUTE

!

ip prefix-list SUPPRESSEDROUTES seq 5 permit 192.168.192.0/22 le 24

ip prefix-list SUPPRESSEDROUTES seq 10 permit 192.168.199.0/24

access-list 1 permit 192.168.195.0 0.0.0.255(隐式拒绝all,表示对其他所有路由都不抑制)

access-list 2 deny 192.168.197.0

access-list 2 permit any

!

route-map VERMONT permit 10

match ip address 1

!

route-map CALIFORNIA permit 10

match ip address prefix-list SUPPRESSEDROUTES

route-map ORIGIN permit 10

set origin incomplete

!

route-map ALLOW_ROUTE permit 10

match ip address 2

在access-list中的permit表示运行被抑制的,而deny是不运行被抑制。

③用aggregate-addressattribute-map改变聚合路由的属性

例子在上方,聚合路由有一个IGP的ORIGUN属性。

④neighbor *.*.*.* distribute-list命令过滤路由

neighbor 192.168.1.249 distribute-list 1 out(阻止出站路由)(in-阻止入站路由)!

access-list 1 deny 192.168.192.0(拒绝)

access-list 1 permit any(其他的允许)

⑤用aggregate-addressadvertise-map去掉community属性

例子在上方。

PS:EIGRP本地自动汇总,关掉自动汇总,show ip route后马上看到效果。

BGP默认是打开自动汇总的,如果关掉自动汇总,在发给对方的时候才看到效果,也就是给对等体发送的是汇总路由,在本地看不出,

clip_image002

BGP选路原则

PS:在show ip bgp *.*.*.*后面不合法的BGP路由:

1. 如果启用了BGP同步—当前IOS软件的缺省配置,路由器会忽略那些在输入show ip bgp *.*.*.*命令语句后系统输出信息中被注明“not sychronized”的路径—在IP路由表中一定会有一条内部路径(IBGP)与一个地址前缀的匹配被看作是合法路径。

2. 忽略那些下一跳不可达的路径。这就是为什么运行IGP协议非常重要,因为IGP使得与路径的相关下一跳地址可达。

3. 忽略那些从EBGP Peer得到的,本地AS号码出现在AS-PATH中的路径信息。这类路径信息在路由器入口就被拒绝,甚至还来不及按照到BGP RIB库中。同样规则可以使用与ACLS,IP Prefixs,AS路径或者团体属性列表进行判断,并拒绝,除非对等体配置了inbound soft reconfiguration命令语句

4. 如果Router启用了 Bgp bestpath enforce-first-as ,当对等体送来的更新信息中在AS序列项对等体的AS号码不在第一位,则发送一个NOTIFICATION报文并中止回话连接。

5. 忽略那些在输入show ip bgp *.*.*.*命令语句后系统输出信息中被注明“(received-only)”的路径。这条路径被路由器上实施的策略所拒绝,但仍就被保存在路由器内,因为发送这条路径信息的对等体配置了“soft reconfiguration inbound”。

6. 忽略那些下一跳度量值被标记为不可达的路径。

IOS软件BGP最优路径算法:

1.优选有最大Weight的路由

3.优选有最大LOCAL_PREF值的路由(范围 0到 4,294,967,295).

4.优选从本路由器始发的路由(包括本地network配置的重分布,或者在IGP表中已经有一些需要被配置路由聚合的地址,在BGP中用Aggregate命令配置的路由聚合,)

5.优选有最短AS_PATH的路由

A.如果配置了Bgp bestpath as-path ignore,则这个步骤被忽略

B.B.一个AS路径集被当作一个AS,无论在这个集合中有多少AS。AS路径长度中没有包括。AS_CONFED_SEQUENCE。

6.根据Origin属性.优选具有最低起源类型的路由(IGP>EG>Incomplete)

7.优选最小MED 值的路由(范围 0到4,294,967,295).

A.只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序列号(AS_CONFED_SEQUENCE)都会被忽略。

B.如果路由器上配置了 bgp always—compare—med ,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则有可能发生路由环路。

C.如果路由器上配置了 bgp bestpath med confed ,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。

D.如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bestpath missing—is—worst,将被看作MED值为4,294,967,295的路由将在注入到BGP路由选择表之前被改为4,294,967,294。

E.BGP明确的MED值9(详见本章后面的“BGP明确的MED”段落)也可以影响此步骤。

8.外部路由EBGP优先于联盟(confederation)外部路由优于内部路由IBGP(优选 E-BGP路由)

注意,路径中包括AS_CONFEND_SEQUENCE属性对联盟只有在本地有效,因此被看作是内部路径。无法区别外部联盟和内部联盟。

9. 优选能通过最近的IGP邻居到达的路径(优选对BGP下一跳具有最低IGP度量值的路径);

10.如果在路由器上配置了maximum—pathsN,而且从同一个对等体自治域/子自治域接收到多条外部/外部联盟的路径,则最多可以将N条最近接收到的路径加入到IP路由选择表中。这可以使得eBGP在多条路径上进行负载分担。目前N所代表的最大数目是6;当没有启用此功能时,缺省数值是1。在输入了show ip bgp x.x.x.x后系统输出信息中可以看到最早接收到的路径被标记为最优路径,在将这条最优路径转发到内部对等体之前,需要执行与next_hop_self作用相同的功能。

11.如果是external的路由,优选最老的路由(最先被学习到的路由).

A.此步骤可以将路由摆动的影响减到最小,因为新接收到的路径不会取代老的,即使这条新接收的路径是通过下面提及到的额外路径选择标准来进行选择的。这使得只在iBGP路径下应用额外的选择步骤更有意义。

B.此步骤可以被bgp bestpath compare_routerid命令语句所关闭。

C.如果路由器标志是一样的,此步骤可以被屏蔽,因为这说明路由器正在从自己那里接收路由。

D.如果当前没有最优路由器,此步骤可以被屏蔽。当提供某个路径的对等体路由器宏机,就会发生丢失

当前最优路径的情况。

12.如果在同一时间学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由,注意,如果一个路径包括路由反射器属性,起始者标识将代替路由器标识在路径选择过程中起作用。

12.如果路由从路由反射器上学习到 ,优选最小Cluster-ID(BGP_ID of the route reflector)长度的路由,而且它运行客户机和其他反射器族中的RR/Clients 之间做对等连接,在这种情况下,路由器必须知道BGP协议中的RR的具体配置。

13.优选具有最低对等体地址接收到的路径。这个地址是在BGP对等体上配置并使用的地址,这个地址是本地对等体路由器在其上配置TCP邻居并与远端对等体建立连接时采用的地址。

step12的翻译是这样的:如果从相同的主机收到路径,不论它是对等体还是路由反射器,选择拥有最低对等体IP地址(直连接口的地址或者如果没有直连的话,最近间接相连的接口的地址)的邻居学来的路径。
就像这个图的情况:路由器ABCD处在同一个AS中,A到达D穿过了一个网云,路由器A从路由器D收到两条到达它的路由。如何选择呢。按step12的意思应该是选择路径A。这是我的理解。大家讨论下。
clip_image004

AS-Path/Prefix-List/Outbound/Route-map过滤

限制从邻居收到路由Prefix的数量

Neighbor *.*.*.* maximum-prefix threshold-value [warning-only]:限制从一个邻居接收前缀的数量,[warning-only]参数表示当邻居公布的前缀超过了最大值的90%,Router就生成一个日志消息。

限制从邻居收到路由as路径长度

(1) as路径过滤(filter-list/ip as-path access-list 1 permit …)

(2) Router bgp 109

Neighbor 192.168.1.1 remote-as 65534

Neighbor 192.168.1.1 maxas-limit 10

所有接收到的地址前缀都在BGP 路由表里,但是只有那些as路径长度低于或者等于10的地址前缀才可以进入BGP路由选择处理进程。

路由反射器(Cluster-id)

#路由反射器不改变客户传来的路由的属性

#RR和它的client 就形成一个Cluster,如果AS中有多个RP及其相应的Client,就可以通过不同的Cluster-ID 来区分,对于Cluster内部的Client来说,它不需要FULL-MESHed,并且Client 只与和它位于同一Cluster内部的RP向连接即可,它不会去Cluster外部的BGP Speaker 建立Peer关系。(RFC1966)

#RR防止环路的机制:两个属性originaor_id,包含了始发这条路由的路由器的route-id,因此RR不会将此路由又重新发回给源,如果发起者收到一个带有自己的RID的更新消息,它会不理睬该消息;RR有一个单点故障问题,如果RR挂掉,则client就会丢失他们唯一的NLRI来源,这样就可以做一个双RR备份,此时cluster-list(是一个任选非传递属性,当一个RR将一条路由从一个client反射到一个non-client,它将它的cluster-id加到cluster-list上,如果cluster-list是空的,rr就生成一个,其包含RR的cluster-id(在最新版本的IOS里面,cluster-id在配置RR的时候自动生成),当RR收到一个更新消息的时候,他检查cluster-list,如果在cluster-list里面看到自己的cluster-id值,就不会接收这条路由。????)

可以避免环路,

clip_image005

(1)两个RR配置相同的cluster-id

1.在client1上有一条1.1.1.0的路由,它将这条路由传给它的两个RR(RR1/RR2),RR1和RR2都接收这条路由,因为路由反射器的性质打破了IBGP的水平分割的原则,两个RR互相把这条路由传给对方和另外的客户端,这时候,他们互相在cluster-list里面看到了自己的cluster-id,他们就不接收这条路由(不放进BGP database),所以在RR1/RR2看到的这条路由只有从client1传来的。在client2/3上看到分别从RR1/RR2收到这条路由,但是优选从RR1收到的(我觉得这里面又包含先从谁那里先收到这条路由的问题)

2.在RR1上有一条2.2.2.0的路由,这时候RR1将这条路由传给了RR2和它的3个client,RR2接收这条路由并且把他÷他们传给他的client,这时候3个client同时从RR1和RR2收到这条路由,它在路由的cluster-list里面看到两者有相同的cluster-id,他们优选从RR1收到的路由,由于RR的client就是普通的IBGP路由器,存在水平分割的原则,他们就不会把这条路由传给其他的IBGP邻居。

PS :在Rr的client上的路由里面才看到cluster-list.

在as内部,不改变BGP的下一条属性,show ip b和show ip b *.*.*.*的内容不一样,后者可以看到路由的详细情况。

clip_image006

r1#sho ip b 22.22.22.0

BGP routing table entry for 22.22.22.0/24, version 2

Paths: (2 available, best #2, table Default-IP-Routing-Table)

Not advertised to any peer

Local

2.2.2.2 (metric 65) from 3.3.3.3 (3.3.3.3)

Origin IGP, metric 0, localpref 100, valid, internal

Originator: 22.22.22.22, Cluster list: 0.0.0.1

Local

2.2.2.2 (metric 65) from 2.2.2.2 (22.22.22.22)

------中间广告---------

Origin IGP, metric 0, localpref 100, valid, internal, best

r1#sh ip b 44.44.44.0

BGP routing table entry for 44.44.44.0/24, version 3

Paths: (2 available, best #2, table Default-IP-Routing-Table)

Not advertised to any peer

Local

4.4.4.4 (metric 129) from 3.3.3.3 (3.3.3.3)

Origin IGP, metric 0, localpref 100, valid, internal

Originator: 44.44.44.44, Cluster list: 0.0.0.1

Local

4.4.4.4 (metric 129) from 2.2.2.2 (22.22.22.22)

Origin IGP, metric 0, localpref 100, valid, internal, best

Originator: 44.44.44.44, Cluster list: 0.0.0.1

—————————————————————————————————————-

r2#sho ip b 22.22.22.0

本文隐藏内容 登陆 后才可以浏览

—————————————————————————————————————-

r3#sho ip b 22.22.22.0

BGP routing table entry for 22.22.22.0/24, version 2

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Advertised to non peer-group peers:

1.1.1.1 4.4.4.4

Local

2.2.2.2 (metric 11) from 2.2.2.2 (22.22.22.22)

Origin IGP, metric 0, localpref 100, valid, internal, best

r3#sho ip b 44.44.44.0

BGP routing table entry for 44.44.44.0/24, version 3

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Advertised to non peer-group peers:

1.1.1.1 2.2.2.2

Local, (Received from a RR-client)

4.4.4.4 (metric 75) from 4.4.4.4 (44.44.44.44)

Origin IGP, metric 0, localpref 100, valid, internal, best

—————————————————————————————————————-

r4#sho ip b 22.22.22.0

BGP routing table entry for 22.22.22.0/24, version 3

Paths: (2 available, best #2, table Default-IP-Routing-Table)

Not advertised to any peer

Local

2.2.2.2 (metric 65) from 3.3.3.3 (3.3.3.3)

Origin IGP, metric 0, localpref 100, valid, internal

Originator: 22.22.22.22, Cluster list: 0.0.0.1

Local

2.2.2.2 (metric 65) from 2.2.2.2 (22.22.22.22)

Origin IGP, metric 0, localpref 100, valid, internal, best

r4#sho ip b 44.44.44.0

BGP routing table entry for 44.44.44.0/24, version 2

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Advertised to non peer-group peers:

2.2.2.2 3.3.3.3

Local

0.0.0.0 from 0.0.0.0 (44.44.44.44)

Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best

(1)两个RR配置不同的cluster-id

1.在client1上有一条1.1.1.0的路由,它将这条路由传给它的两个RR(RR1/RR2),RR1和RR2都接收这条路由,因为路由反射器的性质打破了IBGP的水平分割的原则,两个RR互相把这条路由传给对方和clients,根据bgp的选路原则,他们会优选有较小IGP metric的路由,这时候,就是选择从client1接收的路由。

2.在RR1上有一条2.2.2.0的路由,这时候RR1将这条路由传给了RR2和它的3个client,因为在这条路由的cluster-list里的cluster-id不一样,他们就互相都接收了这条路由,因为路由反射器的性质打破了IBGP的水平分割的原则,他们又把这条路由再传给clients,而3个client在接收这条路由的同时,由于RR的client就是普通的IBGP路由器,存在水平分割的原则,他们就不会把这条路由传给其他的IBGP邻居,但是他们收到了两次这条路由信息的更新,根据bgp的选路原则,他们会优选有较小IGP metric的路由,这时候,就是选择从RR1接收的路由。

clip_image007

(1)如果路由是从Non-client的IBGP学习到的,只将她反射给client。

(2)如果路由是从client学习到的,将它反射给除了发起该路由的client以外的所有non-clent及其client

(3)如果路由是从EBGP对等体学习到的,将它反射给所有的client和non-client。

Confederations(联盟)

由子AS组成的AS,

clip_image008
联盟AS9184是由AS65510/AS65520/AS65530组成的。

AS_path两类属性:as_sequence和as_set,联盟为AS_path增加了两个属性类型。AS_CONFED_SEQUENCE和AS_CONFED_SET

AS_CONFED_SEQUENCE:由属于本地联盟中的自治系统的AS号组成的有序列表,在联盟内部防止路由环路。

AS_CONFED_SET:由属于本地联盟中的自治系统的AS号组成的无序列表,在联盟内部防止在做路由聚合的时候,由于丢失AS信息而引起路由环路。

在联盟中,到联盟外部的EBGP路由优先与到AS成员的EBGP路由,到AS成员的EBGP路由优于IBGP路由,联盟和AS之间还有一个不同:例如NEXT_HOP/MED,可以不加修改地公布给联盟的其他AS成员中的EBGP对端,而且也可以发送LOCAL_PREF.

在RR环境下,只要RR支持路由反射器功能就可以,在联盟环境下,所有的Router都要支持这一特性,因为所有Router都必须识别AS_PATH中的AS_CONFED_SEQUENCE和AS_CONFED_SET类别,因为向联盟外面公布路由的时候,要把这些AS_PATH类去掉,因此其他AS的路由器不要支持联盟。

当向联盟外部的EBGP对等体发送update消息的时候,会将AS_CONFED_SEQUENCE和AS_CONFED_SET

从AS_PATH属性中去掉,将联盟as号加到AS_PATH中,因为这一点,外部的对等体就把联盟看作是一个AS而不是一个自治系统的集合。

PS: AS-Path/AS-Set的区别:AS-Path(有序列表)/AS-Set(无序集合)

Sugarbush#show ip bgp

BGP table version is 19, local router ID is 172.20.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i – internal

Origin codes: i – IGP, e – EGP, ? – incomplete

Network Next Hop Metric LocPrf Weight Path

Network Next Hop Metric LocPrf Weight Path

*> 192.168.192.0/21 192.168.1.230 0 400 300 i

*> 192.168.192.0/21 192.168.1.233 0 300 {200,100,500} ?

Peer Group(对等体组)

如果在某一Router的旁边有一些路由器,它们都有一致的策略,就可以指定一个邻居组(对等组)

创建组的命令:Router(config-router)# neighbor [peer-group-name] peer-group

添加成员的命令:Router(config-router)# neighbor [ip-address] peer-group [peer-group-name]

这样的好处是简化配置。

BGP Route Damping(BGP路由抑制)

bgp dampening [[route-map map-name] [half-life-time reuse-value suppress-value

maximum-suppress-time]]

Penalty:默认值是1000 per flap

Suppress-value:范围1~20000;默认值是2000

Reuse-value:范围1~2000;默认值是750

Half-life:范围1~45min;默认值是15 minutes

Maximum-suppress-time:范围1~255;默认值是60 minutes, or 4 times the half-life

例子:对172.16.220.0/20做抑制
clip_image009

ROUTER C

router ospf 10

redistribute bgp 1 subnets

network 192.68.0.0 0.0.255.255 area 0

router bgp 1

bgp dampening route-map SELECTIVE_DAMPENING

network 192.68.11.0

neighbor 172.16.20.2 remote-as 3

neighbor 192.68.6.1 remote-as 1

no auto-summary

access-list 1 permit 172.16.220.0 0.0.0.255

route-map SELECTIVE_DAMPENING permit 10

match ip address 1

set dampening 20 950 2500 80

route-map SELECTIVE_DAMPENING permit 20

改进BGP的聚合

BGP的邻居认证

#bgp的认证仅仅限制于邻居之间.

例如:\

nei 5.5.5.5 password cisco(默认就是md5认证)

调用认证功能需要CISCO ios软件在TCP连接中每发送一个TCP字段就生成并校验MD5摘要,如果调用了认证,但是其中一个字段没有通过认证,会向console口发送一个message

如果只是在一边配置了认证:

%TCP-6-BADAUTH: No MD5 digest from [peer’s IP address]:11003 to [local router’s IP address]:179

如果两边的认证密码不匹配:

%TCP-6-BADAUTH: Invalid MD5 digest from [peer’s IP address]:11004 to [local router’s IP address]:179

正则表达式

. 任意单一字符,包括空格,句号  .标志匹配任意一个字符,包括空格,如:当我们使用permit .*的时候,表示匹配所有的路由。

[] 在方括弧中罗列的任何字符

[^] 除了在方括弧中罗列字符外任何字符

– 在由连字符所分隔的两个字符之间的任意字符, 表示两个AS之间的连接符,如:permit ^254_253_252$, 表示起源于252,经过253和254的路由条目

? 字符或模式出现0次或1次,标志匹配前面的一个字符,注意:只是匹配一个字符。?允许前面的字符出现一次或者是空。如:permit 254[0-9]?$,那么就是只匹配起源于AS 254/2540—2549的路由,注意?在CISCO路由器上用CTRL-V来替代。

* 字符或模式出现0次或多次,标志匹配前面的一个字符,注意,和?不同的是,*允许前面的字符出现许多次或者是空,而?只允许匹配出现一次或者是空。如:permit 254[0-9]*$,那么就是只匹配起源于AS 254/2540—25499999……..的路由 如果是permit 254[5-9],那么就是匹配起源自AS 254/2545-2549/25455-25459/254555-
254599…………

+ 字符或模式出现1次或多次,+和*的区别就是*可以匹配空,但是+必须匹配一个值才行如permit ^254+$,表示起源于254或者2544/25444……..而permit ^254*$则可以匹配起源于AS 25/254/25444。

^ 一行的开始,标志一个表达式的开始,如果不用这个字符,那么默认就没有开始的限制了。如:当使用permit ^254,那么表示的意思就是和本地相连的AS是254传过来的路由全部都允许了。如果使用简单的permit 254,那么就是只要是经过了AS 254的路由,全部都被允许了,其实和permit _254_表达的意思相同。

$ 一行的结束,标志一个表达式的结束,如果不用这个字符,那么默认就没有结束的限制了。如:当使用了permit 254$,那么表示的意思就是起源于AS 254的路由全部被接受,如果permit 254那么见上面的解释。

| 由元字符特殊字符分隔的字之一

_ 一个逗号,行的开始,行的结束或空格

BGP的其他性质

1.BGP和ISIS一样以链路为边界。

2.BGP不支持负载均衡,因为通过它复杂的选路原则一定可以决定一条最优的路由。

3.BGP版本向后兼容,如果发现对方是更低的版本,将会降低自己的版本来与之兼容,当前的版本是BGP V4。

4.BGP Peer=BGP Speaker=BGP Neighbor

5. 在本AS内,BGP的AS-PATH属性不变,在离开本AS的时候,会在AS-PATH前面附加上本AS的AS 号。

6.一个Router 只能运行一个BGP实例(不会把一个路由器放到多个BGP(AS)中)。但是可以采用local-as这来使Router可以同时有2个asn(但是实际上只用一个),这是对于Ebgp邻居而言的,如果在A(as 109)—–EBGP—-B(as 159) 之间,A配置了

neighbor 145.2.2.2 local-as 210这时候,B就会以为它正在和Asn是210的EBGP Peer建立邻居关系,A在向B通过路由更新的时候,会把路由里面的as号码改成local-as中配置的asn,在A上显示的从B上学习到的路由就是210_159,在B上显示的从A上学习到的路由就是159_210就相当于as210和as159的EBGP在通信。这在两个ISP何必的时候作为过渡策略使用,避免大面积的地址重新规划和网络环境的重新配置。

7. iBGP TTL = 255

eBGP TTL= 1

8.当重分布OSPF到BGP中的时候,或者如果存在RR ,Ospf的 router-id必须和BGP的router-id一样。
#redistribute ospf 10 match internal external 1 external 2
  default-metric 2
redistribute ospf internal external 1 external 2: 必须显式的匹配internals & externals OSPF路由
default-metric 2:  Assigns a metric of 2 hops in BGP to the OSPF routes

#router eigrp 100
redistribute bgp 100 route-map test
route-map test permit 10
set automatic-tag
set as-path tag

This will redistribute the BGP path and Origin code into EIGRP /… [Cisco conly]

BGP的几种管理距离

Internal BGP :200

External Border Gateway Protocol (BGP):20
Local BGP:200

Exterior Gateway Protocol (EGP):140

router bgp 200

distance bgp 20 95 200

BGP -4 Command

1.Router(config-router)#neighbor {ip-address | peer-group-name} remote-as autonomous-system

可以用IP地址或对等组名来指定,这个ip-address是对方邻居的路由更新源。EBGP(ip-address应该是与本Router直连的IP)IBGP(ip-address是对方路由器上任何一个IP地址,只要是路由可达,一般是用L0口做更新源,因为这样做可以提高BGP网络的健壮性),用Lo口做更新源一般用于IBGP中,在EBGP中使用,要满足路由可达的原则。

PS:

①两个BGP Neighbor的更新源必须匹配,不然数据包将会被丢弃。

②在EBGP中的TCP包的TTL值是1,所以有了Neighbor ip-address ebgp-multihop x(x是TTL的值) 命令。

2.Router(config-router)#neighbor {ip-address|peer-group-name} shutdown| soft-reconfiguration inbound

Shutdown:邻居关系并没有被删除,而是暂时不可用,一般用于维护和更改策略,它防止路由摆动(Route Flapping),管理shut down。

Soft-reconfiguration inbound:告诉Router存储所有从它的Neighbor更新的路由,才可以让新的inbound policy 生效而不要重新Reset BGP(会话连接仍然维持),这是条内存密集型命令。

3.clear ip bgp {* | address | peer-group-name} [soft [in | out]]

*:所有的BGP会话都将被Reset,全部BGP路由表将被丢弃,BGP会话状态更改为Idle。

Address:特定IP地址的邻居将被Reset,其BGP会话状态更改为Idle,清除从该BGP Peer 学习到的路由。邻居关系将重新建立。

Peer-group-name:指定的 BGP peer-group 将被Reset

Soft out:Router 不会丢失从Neighbor那边学习到的路由,Router重新发送所有BGP路由给Neighbor而不要Reset BGP会话(连接仍然维持),对inbound policy 无效,在做Onbound policy时,这条命令强烈建议使用。

Soft in:Routes advertised to this neighbor are not withdrawn,Router存储所有从它的Neighbor更新的路由,才可以使用存储的,未经改动的更新信息来执行新的inbound policy,而不要重新Reset BGP(会话连接仍然维持)。

下列情况下必须手动Reset 邻居关系

1.补充或者改变与BGP相关的ACLS

2.改变与BGP有关的weight

3.改变与BGP有关的distribute-list

4.改变与BGP有关的Timer

5.改变与BGP有关的Admin distance

6.改变与BGP有关的Router-map

4.建立Neighbor关系的特例(配置练习)

A以对方的LO0(2.2.2.2)口来建立邻居(在as 100中)

B以对方的直连接口(12.12.12.1)来建立邻居(在as 200中)

clip_image011
A:Router bgp 100

Neighbor 2.2.2.2 remote-as 200

neighbor 2.2.2.2 ebgp-multihop 2

B: Router bgp 200

Neighbor 12.12.12.1 remote-as 100

Neighbor 12.12.12.1 update-source lo0

待续…

4.r2#show ip rou

Codes: C – connected, S – static, I – IGRP, R – RIP, M – mobile, B – BGP

D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area

N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2

E1 – OSPF external type 1, E2 – OSPF external type 2, E – EGP

i – IS-IS, L1 – IS-IS level-1, L2 – IS-IS level-2, ia – IS-IS inter area

* – candidate default, U – per-user static route, o – ODR

P – periodic downloaded static route

r2#show ip bgp

BGP table version is 13, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i – internal

Origin codes: i – IGP, e – EGP, ? – incomplete

Network Next Hop Metric LocPrf Weight Path

*>i11.11.11.0/24 1.1.1.1 0 100 0 i

*> 45.45.45.0/24 4.4.4.4 0 0 400 i

5. show ip bgp paths 显示BGP 拓扑图

和show ip bgp 显示BGP 路由表的区别?

6. 私有AS号码剥离:

RTA(config)#router bgp 1

RTA(config-router)#neighbor 172.16.20.2 2 remote-as 65001

RTA(config-router)#neighbor 192.168.6.3 remote-as 7

RTA(config-router)#neighbor 192.168.6.3 remove-private-as

1. Bgp配置缺省路由和路由聚合

① ip route 0.0.0.0 0.0.0.0 null0

router bgp 100

network 0.0.0.0(向所有建立的邻居都发送缺省路由)

② router bgp 100

neighbor *.*.*.* default-originate(只是向特定的邻居发送缺省路由,如果只想发送缺省路由,则需要做路由过滤,这条命令不需要)手动建立一条缺省路由。)

2. Neighbor *.*.*.* version :不同版本的BGP直接的手动协商。

3.

思科BGP技术详解九

第六条:MED,多出口鉴别器,

AS200R

clip_image002如图:

AS100为运营没:AS200为企业,

如果企业做属性影响ISP,即所影响

的是R1R4的属性。

是在本地实现的影响是的外到内。

MED的默认值为0,越小越优先。从R1R4现在默认是从的R3地,现在改成为走上面,即把R3 MED改大即可。“修改的是本地AS内,影响的是对方AS到本地AS的的路径。在r3 上面来做:

用到前面我们学到的映射工具:router-map.还要匹配一条路径(一个规则)match,先定一个防表:到4.4.4.4的路由,走上面的那一条R2的路径。

R3:Acces-list 10 permit4.4.4.0 0.0.0.0255 为什么不用扩展防表:“只是影响的目的“。

Route-map med(名字) perit 10 (序号)

Match ip addr 10(防表)

Set metric 20(修改MED的值,默认为0.show ip bgp 下,MED是用metric表示的。)

Router bgp 200

Neig 13.1.1.1 route-map med(名字) out 把设置的值映射给邻居,让他收到这个20

现在是指的邻居到达R4(定防表是指的4.4.4.4),是影响的R1,也就是对R1来说的,是Out(是邻居R1到达R4,即R1Out接口。)

R4:#Show ip bgp 还是走的R3 ,没有生效

*>i1.1.1.0/24 3.3.3.3 0 100 0 100 i

* i 2.2.2.2 0 100 0 100 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

Clear ip bgp * 还是没有生效:在R3上:show runn,发现是忘记配置set metric 20。配置完成:

&6R1 :show ip bgp 现在是经过R2到达R4的。

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

*> 4.4.4.0/24 12.1.1.2 0 200 i

* 13.1.1.2 20 0 200 i

R1#traceroute 4.4.4.4 so 1.1.1.1

1 12.1.1.2 60 msec 72 msec 48 msec

2 24.1.1.2 56 msec * 52 msec

R4#traceroute 1.1.1.1 so 4.4.4.4 回到R1怎么走的下面R3呀?

1 34.1.1.1 52 msec 60 msec 20 msec

2 13.1.1.1 16 msec * 76 msec

总结:也就是在本地做了属性,是影响的对端。

R4上查:(为什么还是走的R3?)

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 3.3.3.3 0 100 0 100 i

* i 2.2.2.2 0 100 0 100 i

R4上再启一个loop 5.5.5.5

R4 :int loop 1

Ip addr 5.5.5.5 255.255.255.0

Router bgp 200

Net 5.5.5.0 mask 255.255.255.0

Exit

Show ip bgp 收到一个5.5.5.5 的网络。

R1show ip bgp

Network Next Hop Metric LocPrf Weight Path

* 4.4.4.0/24 13.1.1.2 20 0 200 i

*> 12.1.1.2 0 200 i

*> 5.5.5.0/24 12.1.1.2 0 200 i

R1收到5.5.5.5应该有两条路径才对,现在只有一条,而且是从Rr2收过来的。原因是:在R3上做了一个Route-map,只匹配了一个permit 10 ,后面跟的是一条隐式的拒绝,必须在permit 10 必须加一条空的route-map med permit 20 才正确。

R1#show ip bgp

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

* 4.4.4.0/24 13.1.1.2 20 0 200 i

*> 12.1.1.2 0 200 i

* 5.5.5.0/24 13.1.1.2 0 200 i

*> 12.1.1.2 0 200 i

第五条.Origin属性:

origin属性改路由只能在起源的路由器上改。还是做这个路径,R1R4,走13.1.1.2(现在走的是12.1.1.2.还是用Route-map做。先写一个防表:

R1:Access-list 10 permit 4.4.4.4 0.0.0.255

Route-map ccnp permit 10

Macth ip addr 10

Set origin incomplete(就是?)要想路径走下面,是IGP学来的,那么把上面改成EGP或?就可以了。

Router bgp 100

Nei 12.1.1.2 route-map qiyuan in(是影响的对端,是接收r1 的策略,所以R2上是IN方向)

Clear ip bgp * (清一下才生效)

之后,从路由应该从下面R3上走才对。

&5Show ip bgp (方框内:i>?

*> 4.4.4.0/24 13.1.1.2 20 0 200 i

* 12.1.1.2 0 200 ?

*> 5.5.5.0/24 13.1.1.2 0 200 i

从下面R3走了(5.5.5.5的另一条路由怎么没了呢有?),通过修改起源路径,可以证明i>?.还证明了点是起源大于后面的那条属性。

第四条.AS-path属性;

要想证AS-path属性来决定路径,必须在EBGP之间,如果用在IBGP之间都是一样的(从IGBP之间学来了路由不能修改)。

R1R4,是从as 200 学来的,现在是默认从R3走的,改到从上面走,把下面的路径改长即可,即从下面加上一个AS 300,那么下面的路径就会比上面的路径长了,所以就会从上面R2走了。

R1aaces-list 10 permit 4.4.4.0 0.0.0.255(上一个试验已做)

Route-map ccnp permit 10

Match ip addr 10

Set ccnp prepend 300 (也叫AS-path预附加,即预加一个AS)

Exit

Route-map ccnp permit 20

Exit

Router bgp 100

Nei 13.1.1.2 route-map ccnp in

Exit

Clear ip bgp *in

(&4)Show ip bgp (0 300 200 i>0 200 i,多走了一个AS 300.)

Network Next Hop Metric LocPrf Weight Path

*> 4.4.4.0/24 12.1.1.2 0 200 ?

* 13.1.1.2 20 0 300 200 i

*> 5.5.5.0/24 13.1.1.2 0 200 i

路由是从R2走的,在下面的路径上多了个AS300 ,路径变长了,选择了R2,走的是路径较短的。前面的配置都不生效了,也验证了第四条属性优先于后面的属性。

注意:在前加了一个AS300 ,现实情况有可能AS300 存在网络中,如AS300收到一个包含自己的

路径,是认为有环路了,有要了。一般情况下,定自己或定对方。

第三个,本地始发:

只要IGP可达,NETwork 就能宣告进来。

R2上把2.2.2.0宣进BGp

Router bgp 200

Net 2.2.2.0 mask 255.255.255.0

R2:Show ip bpg

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 3.3.3.3 0 100 0 100 i

*> 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

r>i4.4.4.0/24 4.4.4.4 0 100 0 i

*>i5.5.5.0/24 4.4.4.4 0 100 0 i

4.4.4.4.通过OSPF也可以学到,是一条写入失败的路由(RIB-failure,是不放进路由中了,但是通过show ip bgp 可以看出选哪一个路径。

R4show ip bgp

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 3.3.3.3 0 100 0 100 i

* i 2.2.2.2 0 100 0 100 i

r>i2.2.2.0/24 2.2.2.2 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

*> 5.5.5.0/24 0.0.0.0 0 32768 i

R4学到了一个rr RIB-failure)路径,路径指向:

R4上,把2.2.2.0 宣到BGP中,看一下,学到的是哪个2.2.2.0 的路径?

R4router bgp 200

Net 2.2.2.0 mask 255.255.255.0

&3Shw ip bgp

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 3.3.3.3 0 100 0 100 i

* i 2.2.2.2 0 100 0 100 i

*> 2.2.2.0/24 24.1.1.1 41 32768 I

* i 2.2.2.2 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

*> 5.5.5.0/24 0.0.0.0 0 32768 i

R4 上学到了2.2.2.0的两条路径,*> 2.2.2.0/24 前面的i没有了,一条是通过R2BGp加入进来的,一条是R4上的bgp加入进来的,是本地始发的路径,选择的R4本地的。前面有i的是通过IBGP邻居学来了。下面的空的,没有i,说明是本地始发的(不一定是直连路由)。>在本地始发这条上。

*> 2.2.2.0/24后面还一个奇怪的现象,metric41

在本试验中,最优路径选择是R4通过net宣到BGp中的本地的路由,按惯例,宣告的都是直连的它的metric 应该是0,而现在是4141是通过修改OSPFcost值得来的,也就是IBGP的度量。在R42.2.2.2是本地始发的,所以本地始发的路由的Metric就是IGP 的度量。

第二条,本地优先

是用在IBGP邻居之间,是有本地有多个出口到达外地进,才用。

R4:定一个到达1.1.1.1的防表

Access-list 10 permit 1.1.1.0 0.0.0.255

Route-map bendi permit 10

Match ip addr 10

Set local-priference 120 现在默认R4R1走的R3下面的一条路径,现在通过修改本地优先属性,让R4R2到达R1.本地优先的默认值是100,越大越优先,只要把到达R2的改为120即可。

Exit

Route-map bennndi permit 20

Exit

Router bgp 200

Nei 2.2.2.2 route-map bendi in

End

Clear ip bgp *(必须清才生效)

&2R4show ip bgp

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 2.2.2.2 0 120 0 100 i

* i 3.3.3.3 0 100 0 100 i

*> 2.2.2.0/24 24.1.1.1 41 32768 i

* i 2.2.2.2 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

*> 5.5.5.0/24 0.0.0.0 0 32768 i

R4到达2.2.2.2 locprf120(默认是100),locprf大的优先。实现目的。

第一类,权重属性:

从别的路由器上收到都是0.可以直接修改权重。现在默认走上面R2,把权重改大,就可以走下面了。

R4 :Router bgp 200

Neig 3.3.3.3 weight 10000

end

Clear ip bgp *

&1Show ip bgp

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 2.2.2.2 0 120 0 100 i

*>i 3.3.3.3 0 100 10000 100 i

*> 2.2.2.0/24 24.1.1.1 41 32768 i

* i 2.2.2.2 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

*> 5.5.5.0/24 0.0.0.0 0 32768 i

方框内的weight 变为了10000.路径从3.3.3.3走的。

总结()属性:

看上面的bgp表:

看属性,1.首先看权重(weight&1:权重最大的最优先。

2.(如没有权重或权重相同)看本地优先(Locprf&2):越大越优先。

3.(前两类没有或相同)看本地始发(metric&3):优先IGP度量

4.(……)看AS-path(Path&4):越短越优先。

5. (……)看起源(看最后在的是i不是?):i>e>?

6. (……)MED (metric来表示MED&6):越小越优先。

7.……

思科BGP技术详解八

一、属性试验:

clip_image001clip_image003

BGP的十二种选路规则倒序的方法来验证属性。如图:

R1AS100 R2-R4AS 200,内部启OSPF100,每个路由器启loop

基本配置完成,Ping 直连链路。

R1:# Router bgp 100

Router id 1.1.1.1

Neig 12.1.1.2 remote-as 200

Neig 13.1.1.2 remote-as 200

Network 1.1.1.0 mask 255.255.255.0

Exit

R2:# router bgp 200

bgp router-id 2.2.2.2

neighbor ccnp peer-group

neighbor ccnp remote-as 200

neighbor ccnp update-source Loopback0

neighbor ccnp next-hop-self

neighbor 3.3.3.3 peer-group ccnp

neighbor 4.4.4.4 peer-group ccnp

neighbor 12.1.1.1 remote-as 100

R3:# router bgp 200

bgp router-id 3.3.3.3

neighbor ccnp peer-group

neighbor ccnp remote-as 200

neighbor ccnp update-source Loopback0

neighbor 2.2.2.2 peer-group ccnp

neighbor 4.4.4.4 peer-group ccnp

neighbor 13.1.1.1 remote-as 100

R4router bgp 200

bgp router-id 4.4.4.4

neighbor ccnp peer-group

neighbor ccnp remote-as 200

neighbor ccnp update-source Loopback0

neighbor ccnp next-hop-self

neighbor 2.2.2.2 peer-group ccnp

neighbor 3.3.3.3 peer-group ccnp

network 4.4.4.0 mask 255.255.255.0后来配置上的

R4:Show ip bgp 什么也没有显示:

原因:

R3上也要指邻居要指邻居R113.1.1.1R2上也要指邻居R112.1.1.1,也就是不只是AS内部指邻居,ASAS之间也要指邻居。

配置完成:R4:show ip bgp 显示:

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 2.2.2.2 0 100 0 100 i

R1#show ip bgp 没有4.4.4.4网络,原因时,show runn发现在R4上没把loop口宣到BGP中,配置: R4:Router bgp 200 Net 4.4.4.0 mask 255.255.255.0

R1show ip bgp 有了:

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

* 4.4.4.0/24 13.1.1.2 0 200 i

*> 12.1.1.2 0 0 200 i

4.4.4.4 和其他学到了二条路由,“>”是在下面的一条(有>的是最优路径),是从来12.1.1.2走的。是什么原因从下面选的?

第十二条:对等体的最小IP。不符合。

第十一条:“选router ID 较小的”在这里不符合,因13.1.1.2router-id 3.3.3.3.

第九条:R1上用show ip bpg sum

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

12.1.1.2 4 200 36 41 9 0 0 00:27:28 1

13.1.1.2 4 200 35 37 9 0 0 00:27:25 1

12.1.12建立的时间是:28秒,而13.1.1.2建立的时间是:25秒,是按照第十条()选路规则时行选择路径的。为验证,可以去影响这个路径,可以去修改,可以让他们重新建立连接一下,重新建立邻居,clear一下即可。R1:clear ip bgp 12.1.1.2

R1:#show ip bpg

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

* 4.4.4.0/24 12.1.1.2 0 200 i

*> 13.1.1.2 0 200 i

换过来了。>指向了13.1.1.2成了最优路径。

Show ip bgp sum

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

12.1.1.2 4 200 48 54 10 0 0 00:01:57 1

13.1.1.2 4 200 43 46 10 0 0 00:35:39 1

13.1.1.2建立时间为大于12.1.1.2的建立时间了,所选择了13.1.1.2路径。验证了第十条属性。

第八条:选择IGP最小的路径。

现在默认走的上面有即:show ip bgp

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 13.1.1.1 0 100 0 100 i

*>i 2.2.2.2 0 100 0 100 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

那么现在要示它走下面的路径到R4(默认是走的2.2.2.2,度量是11)。要修改把R2IGP路径改大,则会选择R3来走了。能不能实现试验呢?

R4:#Show ip route

34.0.0.0/24 is subnetted, 1 subnets

C 34.1.1.0 is directly connected, FastEthernet0/1

1.0.0.0/24 is subnetted, 1 subnets

B 1.1.1.0 [200/0] via 2.2.2.2, 00:04:36

2.0.0.0/24 is subnetted, 1 subnets

O 2.2.2.0 [110/11] via 24.1.1.1, 02:05:14, FastEthernet0/0

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/11] via 34.1.1.1, 02:05:14, FastEthernet0/1

4.0.0.0/24 is subnetted, 1 subnets

C 4.4.4.0 is directly connected, Loopback0

24.0.0.0/24 is subnetted, 1 subnets

C 24.1.1.0 is directly connected, FastEthernet0/0

R4:# int f0/0 (指向R2的接口)

Ip ospf cost 40 (修改IGP度量)

cleare ip ospf P (清一下ospf 进程)

R4:show ip route 度量变为41.

34.0.0.0/24 is subnetted, 1 subnets

C 34.1.1.0 is directly connected, FastEthernet0/1

1.0.0.0/24 is subnetted, 1 subnets

B 1.1.1.0 [200/0] via 2.2.2.2, 00:13:04

2.0.0.0/24 is subnetted, 1 subnets

O 2.2.2.0 [110/41] via 24.1.1.1, 00:00:02, FastEthernet0/0 变成40了(还有原先的1

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/11] via 34.1.1.1, 00:00:02, FastEthernet0/1

4.0.0.0/24 is subnetted, 1 subnets

C 4.4.4.0 is directly connected, Loopback0

24.0.0.0/24 is subnetted, 1 subnets

C 24.1.1.0 is directly connected, FastEthernet0/0

R4#show ip bgp

* i1.1.1.0/24 13.1.1.1 0 100 0 100 i

*>i 2.2.2.2 0 100 0 100 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

没有切换过来,1.1.1.1的上面一条的下一跳是13.1.1.1,应该是3.3.3.3 才对。

R3#:SHOW runn

rouer bgp 200内,没有把3.3.3.3宣到BGP 中。

Router bgp 200

Net 3.3.3.0 mask 255.255.255.0

R4 show ip bgp

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 13.1.1.1 0 100 0 100 i

*>i 2.2.2.2 0 100 0 100 i

r>i3.3.3.0/24 3.3.3.3 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

还是不正确,没有切换过来,只是多了一条3.3.3.3的写入路由表失败的路由。1.1.1.1的下一跳还是的3.1.1.1,把刚配置的命令删了。

R3#show runn

发现:在R3上没有指自己为更新源。由此想到了。IBGP内部的水平分割问题“下一跳不变”的事来,肯定是指下一跳出问题了。配置上到R4上:show ip bgp ,有了,终于把2.2.2.2 切换到3.3.3.3了。验证了在IBGP内部的IGP度量小的路径优先了。同时前和第九条的试验内容没有改变,只是做了第八条试验,所以第八条优于第九条。

#show ip bgp

*>i1.1.1.0/24 3.3.3.3 0 100 0 100 i

* i 2.2.2.2 0 100 0 100 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

第七条:EBGP>IBGP: EBGPIBGP优先本试验中没有。

思科BGP技术详解七

五、BGP的属性

属性决定路由的选路。分为四种类别:公认必遵、公认自选、可选可传递 、可选不可传递,路径属性是Update包携带的。

(一)属性分为:

origin 起源属性。

Next-hop:下一跳属性

AS-path属性

本地优先属性

多出口鉴别器属性

1.公认必遵

对于任何一台运行的BGP路由器,都必须支持公认必遵属性,并且半路由信息发给其它BGp邻居时,必须中路由中写入公认必遵属性,这些属性是强制定入路由中的,一条不带公认必遵的路由被BGP路由器视为无效而被丢弃。个不支持公认强制属性的BGP,是不正常的,不合法的BGP

BGp路由必须携带的公认必遵属性有三种:origin\next-hop\as-path.

必用的属性。

2.公认自选(well-known discretionary

公认自选属性并不象强制属性那么严格,任何一台运行BGP的路由器上都必须支持公认自选属性,必须理解认识公认自选属性,但是为路由定入公认自选属性并不是必须的,是否要为路由写入公认自选属性可以自由决定,为路由写上公认自选之后,所有BGP路由都能认识和理解,并且都会自动保留和传递该属性。

3.可选可传递(optional transitive

并不是所有运行BGp的路由器都是能理解和支持可选可传递属性,路由的可选可传递属性是任意写入的,其它BGp路由器并不一定能理解,也并不一定能保留和传递该属性,但是当为路由设置了可选可传递后,可以明确要求BGP路由器保留和传递该属性。

意思是:一但用该属性,必须向下传递。

4.选不可传递属性(optional Nontransitive

只有特定的BGp路由器才理解和支持选不可传递属性,并且选不可传递属性理论上是不能手工设置的,即便手工设置了选不可传递属性,这些属性也不能任意传递,只可以传递到特定的BGP路由器

意思是:只要设置上,不能随便传,只传递特定的路由器。

(二)分别讨论各种分类:

1.origin(公认必遵的属性)

show ip bgp 在每行的最后有一i,标识的都是起源属性是一个代码,在这里起源是i – IGP

Network Next Hop Metric LocPrf Weight Path

*> 1.1.0.0/22 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

定义:

在路由器之间建立BGP邻居之后,邻居之间只能相互传递BGP路由表中的路由,在初始状态下,BGP的路由表为空,没有任何路由,要让BGp传递相应的路由,只能先将该路由导入BGP表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,只能手工导入,对于路由是怎么进入BGp路由表的,这咱方式记录在路由条目中,称为origin属性,origin属性就反映出了路由是如何进入BGp 路由表的。要将路由导入BGP路由表,有三种方式:

(意思是:很明显,要建立TCP连接,无论什么时候看到最后是i,i代表IGP,只有在直连链路在路由表出现了,才能有可能加入到路由表,在BGp中,network命令只是把该是路由放入到BGP表中,只要TCP可达,就可以使用network命令把该路由放入到路由表中。

起源IGP,是IGP加进去的。

E: 代表EBGP

?:代表重分发,同步原则时,没有使用全互连时,要用?了。)

第一条:因为路由器上默认会有IGP路由表,通过命令show ip route可以查看到,这些IGP表中的路由可以被手工导入BGP,通过在BGP进程模式下使用命令network,即可将IGP表中的相应路由导入BGP路由表,并且需要指定掩码,只有network后面的网段和掩码在IGP路由表中能找到时,才会进入BGP路由表,并不能通过这种方式将一条不存在的路由凭空导入BGP,通过命令network被导入BGP的路由的Origin属性为IGP属性。

意思是:只有直连有了才能进去;掩码宣错了也进不去;通过network导入的是IGP

第二:BGP可以从EGP路由协议中获得路由信息,而EGP已经被淘汰,被BGP所取代,所以我们很难遇见EGP路由协议,从EGP路由协议获得的路由的Origin属性为EGP

意思是:很难遇到EGP,现在没有了。

第三:BGP路由表除了从IGPEGP获得路由外,还可以将路由重分布进BGP路由表,而重分布的路由的Origin属性为Incomplete(?)。

BGP路由表中到达同一目的地存在多条路径时,会通过比较路由的Origin属性来选择最优路径,它们的优先级为IGP优于EGPEGP优于Incomplete,即IGP>EGP>Incompletei>e>?)。

第三条:我到达相同的网络,即有bgpIGP ?学的来的,优先的顺序j :IGP>egp>inconplete (i>E>?)

2.AS-path(公认必遵的属性)

意思是:一是防止环路,二是比较到达目的的优劣。分为:AS-sequenceAS-set .

AS-sequence是记录序列号。AS-set记录所经过的AS号,但是无序的,也是为了以上环路的中图:

3.next-hop

AS_Path中包含了BGP路由器到达目的地所经过的所有AS的集合,AS_Path中会包含了多个AS号码,号码的多少,逻辑上反映了到达目的地的远近。

AS_Path还能细分为:

AS_SEQUENCE(有序的AS号码,即AS号码在AS_Path中是按一定顺序排列的)

AS_SET(无序的AS号码,即AS号码在AS_Path中的排列是没有顺序的,通常是将多条拥有不同AS_Path的路由汇总后产生的)

BGP路由表中到达同一目的地存在多条路径时,会优选AS-Path最短的路径

意思是:

宣告路由器(发信息的路由器):是宣告本自治系统的路由器给别的路由器,即从到本身来看其它路由器。

比较到目的地的优劣;

能将多个AS中的地址汇总,要设置一个AS-set,让回来的路径知道去哪里。

3.Next-hop:(网络可达消息通告的网络)(公认必遵的属性)

官方解释:

也就是BGP将数据包发往目的地的下一跳,BGP路由的下一跳,就是BGP建立邻居时的地址,也是BGP之间建立TCP连接所使用的地址。因为这个地址可以是路由器上任意接口的地址,是要能通信即可(其连通性由IGP提供保证),所以BGP在将数据包发往下一跳时,通常需要采用递归查询在IGP路由表中查询该下一跳地址。默认情况下,一台BGP路由器将路由传递给eBGP邻居时,会将Next-hop属性改为自己的地址,也就是和对方建立邻居所使用的地址,而在将路由传递给iBGP邻居时,不会改变Next-hop属性。

对于将路由传递给BGP邻居时,是否改变Next-hop属性的功能,可以自由关闭或启用。

BGP路由表中由本地产生的路由而不是从BGP邻居学习来的,即本地发起路由的Next-hop属性都为0.0.0.0

如果宣告路由器和接收路由器位于不同的自制系统中,那么Next-hop是宣告路由器的接口地址

如果宣告路由器和接收路由器位于同一自治系统中,且Update消息的NLRI指向的是同一AS内的目的地址,那么Next-hop是宣告该路由的邻居的IP地址

如果宣告路由器和接收路由器位于同一自治系统中,且Update消息的NLRI指向的是不同AS内的目的地址,那么Next-hop是外部对等体的IP地址.

意思是:

1)如果宣告路由器和与接受路由器位于不同自治系统,下一跳是宣告路由器的接口地址;

2)如宣告路由器与接受路由器位于同一自治系统,宣告的地址为本自治系统,则下一跳是他的更新源。

3)如宣告路由器是宣告的网络是和本向不是同一自治系统,则下一跳是

4.:多出口鉴别器(MED)属性(属于可选非传递属性)

官方:

MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,因为在多个下一跳都为iBGP时,是建议使用修改Local_Pref属性来影响选路的,而多个下一跳都为eBGP时,则使用MEDMEDBGP路由的metric,所以多条路径中拥有最小MED值的路径会被优先使用。MED默认值为0

Local_Pref属性只在同一个AS内部传递,而MED只能在AS之间传递,只有在将路由发给eBGP邻居时,才会传递MED,在发给iBGP时,是不会传递MED的。当一条路由被设置MED值后传递给eBGP邻居,在eBGP邻居收到后,如果将该路由继续传递给iBGP邻居,那么这个值会被还原为默认值0,也就是说同一个AS内,所有发给iBGP邻居的路由的MED值都为0,这是为了让所有AS内部路由器都能够拥有相同的选路结果。

MED值也是可以随意修改的。

clip_image002

在上图中,当AS 20中的路由器R4要去往目的地为AS 10的网段时,由于下一跳R1R2都为eBGP邻居,所以可以通过修改MED值来影响R4对于下一跳的选择。比如将R2MED改为10,而R1MED保持默认不变,那么最终R4将选择R1去往AS 10中的目的地,因为R1MED0小于R2MED10,所以被优先使用。

默认情况下,只有当去往目的地的多个下一跳eBGP邻居都为相同AS时,才会比较MED值,如果多个eBGP邻居为不同AS时,是不会比较MED的,若是要强制在多个不同的eBGP邻居之间比较MED值,需要在BGP进程下输入命令:bgp always-compare-med

意思是:

默认把MED看作是一度量,可以修改

1)在BGP 中,流量是分方向的,从R1loop R4loop ,去的时候走的下面,回来的时候要上面了,这和IGP不一要,IGp是去走哪,回来也走哪。

2)“当存在到某个网段的多个入口的时候作为度量来指明最佳入口路径”MED影响的入站路由。在本地做配置将影响到外面。在本地影响对方进来的流量。

3)影响邻居;

4)默认值为0.越小越优先。

5)相同的自治系统传给对方的流量不会再回来。

6)只有当外部对等体属于同一个相邻的自治系统的时候才会比较多出口鉴

别器值,这个量度只应用于配置的外部对等体之间的连接。即用于外部对等体之间即EBGP之间。

4Local_Pref本地优先(公认自选属性):(是用在IBGp之间)

Local_Pref称为本地优先级,其中的(Local)本地就是指本AS,或AS内的意思,所以可以想象得出,Local_Pref属性的传递范围,只在同一个AS内有效,一条路由的Local_Pref属性只能在同一AS内部传递,出了AS后就会被还原成默认值。

Local_Pref属性在BGP邻居之间是自动传递的,只有在将路由发给iBGP时才会传递,而在发给eBGP时,是没有Local_Pref值的,一条路由的Local_Pref属性在一个AS内的所有BGP路由器上是完全相同的。Local_Pref的默认值为100,由此可以看出,一条路由在AS内的所有路由器上默认值为100

本地优先级属性是用于区分到同一目的地的各个路由优先程度的。本地优先级越高,路由优先级越高。默认值为100

BGP路由表中到达同一目的地存在多条路径时,会比较Local_Pref值的大小,Local_Pref值大的会被选为最优路径,如110100,那么110会被选为最优路径。

Local_Pref值可以被随意修改,修改后将在整个AS内传递,所以推荐使用Local_Pref属性来控制一个AS的路由器去往目的地在其它AS的路径。如下图:

clip_image004

在上图中,AS 10中的BGP路由器R3可以同时通过R1R2去往目的地在AS 20中的R4上时,可以通过在AS 10内部修改路由的Local_Pref值来影响选路,比如在R1上将路由的Local_Pref值改为110,而路由器R2上不作任何改动,最终R3将选择从R1去往AS 20,因为R1Local_Pref值为110,而R2Local_Pref值为100(默认),所以R3选择R1为最优路径。

因为R1R2在将路由发给iBGP邻居R3时会携带Local_Pref属性,所以R3同时比较iBGP邻居R1iBGP邻居R2时,才合适使用Local_Pref属性,因为下一跳都是iBGP邻居,如果下一跳不都是iBGP邻居,并不建议修改Local_Pref属性来影响选路。

意思:当到一个外部目的网段有多个路径时本地优先属性用来指明对路径的优选程度,和多出口鉴别

器一样,本地优先的配置也是基于邻居的,它的默认值是100,越大越优先,而且不会被传送给EBGP

对等体。

(三)BGP的选路规则:

1.权重:

当到目的地有多路径时,首先看权重。

权重是cisco私有的,只对本地路由器起作用,不会被告转发给其他任何对等体。

Weight属性为Cisco私有属性,只有Cisco的路由器才能认识和理解Weight。路由的Weight属性只在路由器本地起作用,BGP将路由传递给邻居时,并不会保留WeightWeight值的范围为0~65535,默认为0,如果是BGP本地路由,则Weight值为32768。可以手工任意修改路由的Weight值,可以对路由进行修改,也可以对整个邻居进行修改,但也只能对本地起作用,路由的Weight值并不会传递给邻居。

BGP路由表中到达同一目的地存在多条路径时,会优选Weight值最大的路径。在Cisco路由器中,比较最优路径的第一条规则就是比较Weight值,所以只要改动Weight值,就绝能够控制Cisco路由器的BGP选路。

2.本地优先:

如果没有权重,看本地优先,越大越优先。

3.本地始发:

只要TCP可达,就是到达BGP,学到二条路由,先选择本地始发的路由。

4.最短的AS-Path

5.起源属性:i>e>?

6.MED:多出口器,默认值为0,越小越优先。

7.EBGP>IBGP: EBGPIBGP优先,

8.有二条相同路径(无论是EBGP还是IBGP),选择最小的IGP度量的路径

如前面8条都相等,则Maxinum-paths才生效。

9.如果路径都是外部的,建立时间最长的优先。

10.选择最小的router-id

11.选择最小的集群标识符

12.选择最小的对等体的地址。

思科BGP技术详解六

clip_image002

一、过滤:

BGp过滤的工具非常多,以前学得过滤的工具,前缀列表,分发列列,映射,使用distributerrecap 都可以用。

试验:如图:

要求:只收到1.1.1.1 路由。过滤掉1.1.2.1即可。使用resutribute-list 分发列表即可。在入接口或出接口都行,原因是路径失量协议。那就定在出的方向了。

R1:Int loop 0

Ip addr 1.1.1.1 255.255.255.0

Int loop 1

Ip addr 1.1.2.1 255.255.255.0

Int f0/0

Ip addr 12.1.1.1 255.255.255.0

No shut

R2:int loop 0

Ip addr 2.2.2.2 255.255.255.0

Int f0/0

Ip addr 12.1.1.2 255.255.255.0

配通,启BGP 100 200

Router bgp 100

Bgp router-id 1.1.1.1

Nei 12.1.1.2 remote-as 200

Network 1.1.1.0 mask 255.255.255.0

Router bgp 200

Bgp router-id 2.2.2.2

Nei 12.1.1.1 rremote-as 100

Network 2.2.2.2 mask 255.255.255.0

Show ip bgp sum 看邻居起来否?

Show ip bgp 看在R2学到的路由。

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 12.1.1.1 0 0 100 i

*> 1.1.2.0/24 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

收到了三R1上的二条路由。

Access-list 10 permit 1.1.1.0 0.0.0.255

bgp去调用:

Router bgp 100

Nei 12.1.1.2 distribute-list 10 out (必须指定邻居,应用在out 方向)

R2上:show ip route 没有生效,要想看结果,必须clear ip bgp * 才行。原因是:在现实生活中,有可能配置错误,如配置完意即生效的,会有很麻烦,这样有时间检查错误。引出:

二、BGp邻居及BGP表的内容

主路由表就是路由表:

RJB 表示路由信息数据库,也代表路由表。

BGP表,>表示最优路径,

又有三第表,bgp表使用分别使用不同的路由表接收和发送的网络,通告。

分别是:1.ADJ-RIB-IN:存放的BGP发言人

  2.ADJ-RIB-out :

3.loc-RIB:

1.ADJ-RIB-IN (收过来的):存放从其他BGP对等体那里收到得尚未处理的数据处理的BGp信息,BGP路由处理进程根据这些表中存放的BGP属性决定到某个网段的最佳路径。。

如果本地路由器能够验证下一跳是可以通过本地路由表中的某条内部网关协议、静态路由或是直连网段到达的,BGP里进程选择路由并放入主IP路由表。意思是,首先验证我的 下一跳是否可,如可达,则放入路由表。

2 ADJ-RIB-out(发出来的):存放应用完的,发给对方。

 工作过程中 In 形成本表(Loc-RIB) 结束的

只有一个本地表

Loc-RIB表的内容:i:起源。首先验证是否下一跳可达,放入到路由表。

三、清除分为:硬清除和软清除

作用:邻居关系重置,当属性配置完成时,不是生效的,必须重置下邻居才能生效。

硬清:是重置TCP连接,是clear ip bgp *是清空所有邻居,也可指定某个邻居clear ip bgp *12.1.1.1。是从最底层断开重新连接,时间稍长些,现实生活中不用。

软清:现实生活中用的比较多的有新命令和老命令之分:

新命令:清除就是把in表和out表重新应用一下,把原先in\out表应用上策略就是in表,再去给对方要一个IN表。即重新请求一个in表,对方发一个out,我再应用于一下,所以做策略就生效了。

Clear ip bgp *in (给别人要一个)或clear ip bgp *out (给别人发一个) 在做时,要对每个接口都清一下。

show ip bgp nei 显示:下面的包:

Opens: 2 2

Notifications: 0 0

Updates: 2 2

Keepalives: 194 194

Route Refresh: 0 0(路由刷新报文)

路由刷新报文作用:

在路由器上clear ip bgp *in时,会给对方发一个路由刷新报文,当对收到时,把out发出来,我会收到一in了。

老式命令:

1.Clear ip bgp * soft in :直接输入这条命令不会生效,是在BGP进程中,向邻居指定命令:

nei 12.1.1.1 soft-reconfiguration in bound.只有跟进上这条命令才能生效。

2.clear ip bgp * soft out 直接输入就可以了。

四、汇总:

注:如果把前面的access-list 10 删去了,相当于把 neighbor 12.1.1.2 distribute-list 10 out 命令中的 10 删去了,也就是变成0了(0代表所有网络)。在R2上应该都收不到R1上的两个loop 了。

R1 上再启一loop 2 1.1.3.1/24

R2show ip route

1.0.0.0/24 is subnetted, 3 subnets

B 1.1.1.0 [20/0] via 12.1.1.1, 03:14:43

B 1.1.2.0 [20/0] via 12.1.1.1, 00:00:35

B 1.1.3.0 [20/0] via 12.1.1.1, 00:00:35

2.0.0.0/24 is subnetted, 1 subnets

C 2.2.2.0 is directly connected, Loopback0

12.0.0.0/24 is subnetted, 1 subnets

C 12.1.1.0 is directly connected, FastEthernet0/0

Show ip bgp

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 12.1.1.1 0 0 100 i

*> 1.1.2.0/24 12.1.1.1 0 0 100 i

*> 1.1.3.0/24 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

R1上做汇总:

R1:#router bgp 100

Aggregate-address 1.1.0.0 255.255.252.0

Show ip bgp

Network Next Hop Metric LocPrf Weight Path

*> 1.1.0.0/22 12.1.1.1 0 0 100 i

*> 1.1.1.0/24 12.1.1.1 0 0 100 i

*> 1.1.2.0/24 12.1.1.1 0 0 100 i

*> 1.1.3.0/24 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

学到了一条汇总的路由,下面还有三条明细路由,清一下,clear ip bgp * in,还有。原因:是在BGp汇总时,不仅收到一条汇总路由,还收明细路由,怎么办? 在汇总的命令后面加一个参数;summary-only

Router bgp 100

Aggregate-address 1.1.0.0 255.255.252 summary-only

R2:show ip bgp 只剩下一条汇总的和直连的路由了。

*> 1.1.0.0/22 12.1.1.1 0 0 100 i

*> 2.2.2.0/24 0.0.0.0 0 32768 i

思科BGP技术详解五

十四、指定更新源

目的:(做一个路由备份,使在备份链路中更稳定,一般在IGP中做,也可在EBGP中做):

如图:

clip_image002

R0R1有两条线相连,怎样指邻居?nei 指邻居指什么?现实中不会指两个的。

在运行IBGP时,不会指定物理接口为更新源,一般指loopback接口为更新源,loop 口最稳定。

如果更新源改变,那么在上面的试验中的邻居也要改变,互相指的邻居是更新源。如果指更新,那么IBGP内部IGP协议必须可达,所以内部必须跑IGP协议。

如前面的大图:只用R2R3R4

R2Int loop 0

Ip addr 2.2.2.2 255.255.255.0

Ip ospf 100 area 0

Int f0/1

Ospf 100 area 0

Router bgp 200

Bgp router-id 2.2.2.2

Nei 3.3.3.3 remote-as 200 (建立完邻居以后才能定后面的,要不然会提示:

Nei 3.3.3.3 next-hop -self

Nei 3.3.3.3 update-source loop 0 指定更新源为loop 0

R3: int loop 0

Ip addr 3.3.3.3 255.255.255.0

Ip ospf 100 area 0

Router bgp 200

Bgp router-id 3.3.3.3

Nei 2.2.2.2 remote-as 200

Nei 2.2.2.2 updata-source loop 0

Nei 4.4.4.4 remote-as 200

Nei 4.4.4.4 updata-source loop 0

:IBGP 内部r中间的路由器,不指定自己为下一跳

R4int loop 0

Ip addr 4.4.4.4 255.255.255.0

Ip ospf 100 area 0

Router bgp 200

Nei 2.2.2.2 remote-as 200

Nei 2.2..2.2 next-hop-self

Nei 2.2.2.2 updata-source loop 0

Nei 3.3.3.3 remoe-as 200

Nei 3.3.3.3 next-hopp-self

Nei 3.3.3.3 updata-source loop 0

配置的过程中注意这种提示:表示3.3.3.3邻居已经建立了。如果不显示,表明没有建立。

*Mar 1 00:15:37.851: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 Up

R2#show ip bgp sum 学到路由了。

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

3.3.3.3 4 200 11 11 1 0 0 00:07:07 0

4.4.4.4 4 200 5 5 1 0 0 00:01:46 0

R4#ping 2.2.2.2 so 4.4.4.4

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 4.4.4.4

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/39/76 ms

发现一个问题:配置非常麻烦。

有一个解决规模的路由的一个办法:叫对等体组(peer-group,可以减少配置量。R2 上用一个名字代替他们对R3R4的两个配置,把3.3.3.3 4.4.4.4加入这个组内。

R2 上,把router bgp 200 删了。

R2:router bgp 200

Nei ccna peer-group

Nei ccna remote-as 200

Nei ccna next-hop-self

Nei ccna update-source loopback 0

Nei 3.3.3.3 peer-group ccna

Nei 4.4.4.4 peer-group ccna

R3: router bgp 200

Nei ccna peer-group

Nei ccna remote-as 200

Nei ccna update-source loopback 0

Nei 2.2.2.2 peer-group ccna

Nei 4.4.4.4 peer-group ccna

R4: router bgp 200

Nei ccna peer-group

Nei ccna remote-as 200

Nei ccna next-hop-self

Nei ccna update-source loopback 0

Nei 2.2.2.2 peer-group ccna

Nei 3.3.3.3 peer-group ccna

只是配置不同了,结果是和原先的一样。

有一个问题:

R2R4上的loop 0口已经在OSPF中了,如果把它们同时加入到BGP会是什么样子?

R2#router bgp 200

Net 2.2.2.0 mask 255.255.255.0

R3#:router 200

Net 3.3.3.3.0 mask 255.255.255.0

R4# router 200

ospfBGP各学到一条路由,但显示掩码不一样,是因为在接口下,没有配置ip opsf network point-to-point

O 2.2.2.2/32 [110/21] via 34.1.1.1, 00:18:15, FastEthernet0/0

B 2.2.2.0/24 [200/0] via 2.2.2.2, 00:02:25

R4:Show ip bgp 2.2.2.0怎么没有学过来呢?(前面没有r).因为在接口下没定ip ops net p-t-p

Network Next Hop Metric LocPrf Weight Path

*> 2.2.2.0/24 0.0.0.0 0 32768 i

r>i3.3.3.0/24 3.3.3.3 0 100 0 i

*>i4.4.4.0/24 4.4.4.4 0 100 0 i

R4 :Show ip bgp 学到了。

Network Next Hop Metric LocPrf Weight Path

r>i2.2.2.0/24 2.2.2.2 0 100 0 i

r>i3.3.3.0/24 3.3.3.3 0 100 0 i

*> 4.4.4.0/24 0.0.0.0 0 32768 i

前面的r代表:r RIB-failure 放入路由失败

通过BGP学到3.3.3.0.通过OSPF学到一个3.3.3.0 前面的>表示是最优路由,放入路由到时失败了

Show ip route 3.3.3.0的路由是通过OSPF学来的。

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/11] via 34.1.1.1, 00:29:09, FastEthernet0/0

因为opsf 110.BGP 200,用IGP承载BGP,大于任何的IGP的管理距离,所以放不进路由表。

2)试验是EBGP 多跳

———–EBGP中做“指定更新源”指邻居:

R1R2上做,R1R2中间有一个交换机。

指定更新源,必须IGP到达。可以起OSPF,也可用静态路由(如用OSPF,起不到BGP作用了,通了)

配置静态路由吧:

R1ip route 2.2.2..2 255.255.255.255 12.1.1.2

Ip route 1.1.1.1 255.255.255.255.12.1.1.1

检验一能ping 通吗:

Ping 2.2.2.2 so1.1.1.1

R1#ping 2.2.2.2 source 1.1.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/25/60 ms

R1router bgp 100

neig 2.2.2.2 remote-as 200

Neig 2.2.2.2. update-source loop 0

R2 router bgp 200

neig 1.1.1.1 remote-as 100

Neig 1.1.1.1 update-source loop 0

没有建立起邻居关系,原因是:在EBGp之间,TTL的值为1 1.1.1.1 2.2.2.2 2跳,过不去,需要修改TTL。以上试验是EBGP 多跳。

R1:eig 2.2.2.2 ebgp-nultilhop

R1router bgp 100

Nei 2.2.2.2 ebgp-multihot 10(如直接回车,代表默认255跳。也要以后面跟个数字)。

R2 R1R2TTl值不相同也可以。只要能到达对方就行。

另外:

Neigh 12.1.1.1 route-map

Neigh 12.1.1.1 prefix

说明过滤很灵活,可以过滤AS号、AS号中有2的过滤悼等等。

十五、关系建立邻居的条件,如建立不起来,则一直处在active状态

1.版本相同

2. 错误的AS

3. 邻居配置错误。

———————————————————————————————————————————————

思科BGP技术详解四

十二、BGP认证:

R1#router bgp 100

Neighbor 12.1.1.2 password 123

R2#router bgp 200

Neighbor 12.1.1.1 password 123

十三、水平分割:

———–全互联

把上述路由器全部配置完成。R4的邻居关系建立了:R4能正常收到1.1.1.1路由吗?

R4show ip bgp

Network Next Hop Metric LocPrf Weight Path

*>i3.3.3.0/24 34.1.1.1 0 100 0 i

*> 5.5.5.0/24 45.1.1.2 0 0 300 i

因为:在BGP内部有一个IBGP的水平分割原则。

规则是:IBGP邻居学到的路由,不会再学到另一个IBGP。是为了防止IBGP内部之间产生环路。

R3是从R2IBGP学来的路由,不会向R4 发送。所以R4收不到1.1.1.1的路由了。

为什么公产生这个原则?

R3#show ip bgp

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 23.1.1.1 0 100 0 100 i

*> 3.3.3.0/24 0.0.0.0 0 32768 i

* i5.5.5.0/24 45.1.1.2 0 100 0 300 i

收到1.1.1.1这个路由的AS号是100,在一个AS中收到路由都是100EBGP是用记录路径,一但到IBGP中没法防止环路了。原因就是为防止IBGP之间的环路。

解决方法:用逻辑全互连的方法。

只要TCP可达(只要能拼通),就能建立邻居关系。

R4R3学不到,可以直接从R2学习,如何保证R2R4TCP可达,如何可达?写路由。在AS200内运行IGP协议即可实现。只要TCP到达便可。在AS200内运行OSPF100ospfloopback接口要配置:ip osfp network point-t0-point命令,用来访止:

详细配置

R2 R3 R4上启ospf 能互相ping 通即可。

R2:int f0/1 Ip osfp 100 area 0

R3:int f0/1 Ip ospf 100 area 0

Int f0/0 Ip ospf 100 area 0

R4:int f0/0 ip ospf 100 area 0

Ping 34.1.1.2

可以了。

R2R4建立邻居关系:

R2router bgp 200

Nei 34.1.1.2 remote-as 200

R4: router bgp 200

Nei 23.1.1.1 remote-as 200

R4show ip bgp 有了1.1.1.1的路由了。

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 12.1.1.1 0 100 0 100 i

r>i3.3.3.0/24 34.1.1.1 0 100 0 i

*> 5.5.5.0/24 45.1.1.2 0 0 300 i

现在有路由了,R4能拼通1.1.1.1 吗?不行,还有下一跳问题:

Show ip route 没有11.1.1路由。

34.0.0.0/24 is subnetted, 1 subnets

C 34.1.1.0 is directly connected, FastEthernet0/0

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/11] via 34.1.1.1, 00:08:39, FastEthernet0/0

5.0.0.0/24 is subnetted, 1 subnets

B 5.5.5.0 [20/0] via 45.1.1.2, 01:16:18

23.0.0.0/24 is subnetted, 1 subnets

O 23.1.1.0 [110/20] via 34.1.1.1, 00:08:39, FastEthernet0/0

45.0.0.0/24 is subnetted, 1 subnets

C 45.1.1.0 is directly connected, FastEthernet0/1

R2router bgp 200

Nei 34.1.1.12 next-hop-self

注:在AS边界路由器上都是要回next-hop-self 命令,即指下一跳。

R4:Show ip route 有了一条1.1.1.0路由。

34.0.0.0/24 is subnetted, 1 subnets

C 34.1.1.0 is directly connected, FastEthernet0/0

1.0.0.0/24 is subnetted, 1 subnets

B 1.1.1.0 [200/0] via 23.1.1.1, 00:00:14

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/11] via 34.1.1.1, 00:10:20, FastEthernet0/0

5.0.0.0/24 is subnetted, 1 subnets

B 5.5.5.0 [20/0] via 45.1.1.2, 01:17:58

23.0.0.0/24 is subnetted, 1 subnets

O 23.1.1.0 [110/20] via 34.1.1.1, 00:10:20, FastEthernet0/0

45.0.0.0/24 is subnetted, 1 subnets

C 45.1.1.0 is directly connected, FastEthernet0/1

拼一下,因为没有网络加入到IBGP,所不拼不通。在R4上启一个loop 0 4.4.4.4/25 宣到BGP中。

IBGP内部,在AS内部运行IGP时,必须建立一个全互联的IBGP关系(也就是互相指邻居)。保证路由

能正常的学习到。

R4是如何到达R1的?R4的下一跳是R2,是通过OSPF,到R2的,是通过IGP承载过去。

方法二:(老的方法):

—–同步原则(以前有个同步原则:在老的路由器上默认是开启的,但是在新的路由器上默认是关闭的)

IBGP学到的路由,在通告给BGP时对等体时,必须通过IGBP邻居知晓该路由。

也就是:在我的IBGP中有你的一个外部路由才行,从R2学来的路由,我必须通过IGP协议才能给R4,也就是在R2上要做重分布。在老的路由上是默认开启的。现在是默认关闭的 no synchronization。直接通过全互联即可。

新的问题:

R5开起来,配置router bgp 300,邻居关系起来了。启个loop 0 5.5.5.5/24

R1 能学到5.5.5.5吗?

R1show ip bgp 没有。

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

*> 3.3.3.0/24 12.1.1.2 0 200 i

*> 4.4.4.0/24 12.1.1.2 0 200 i

R3上查看:有吗? 有。

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 23.1.1.1 0 100 0 100 i

*> 3.3.3.0/24 0.0.0.0 0 32768 i

*>i4.4.4.0/24 34.1.1.2 0 100 0 i

* i5.5.5.0/24 45.1.1.2 0 100 0 300 i

学不到原还是上面方框中的下一跳的问题,R4R5是通过下一跳45.1.1.2学来的,还保持着原样。在R4修改即可:

R4:router bgp 200

Nei34.1.1.1 next-hop-self (指向R3邻居)

Nei 23.1.1.1 next-hop-self (指向R2邻居,要求全互连)

AS 边界路由器上都要定上这条命令,指向所有的邻居。

R1 :Show ip bgp

新的问题:

R3只跑OSPF有用,BGp没有用,能不能把BGP协议删去呀?

不能:R1发数据包到5.5.5.5 因为R2知道5.5.5.5的下一跳是:34.1.1.2,到达34.1.1.2ospf过去的,是通过23.1.1.2到达,数据包到达R3,目的是5.5.5.5R3不知道哪是5.5.5.5。作用是:R3是通过bgp知道的R3通过R4到达。所以不删。

十六、详细论述1.1.1.15.5.5.5的过程:

1.1.1.1的目的地址是5.5.5.5,从R1路由表中到达5.5.5.5的下一跳是12.1.1.2,将数据包传到12.1.1.2,也就是R2.数据到达R2后查找路由表,看到5.5.5.5是通过34.1.1.2学来的。再把数据包发向34.1.1.2,因不直连的,要用IGP路由来承载,要查找如何到达34.1.1.2,查到OSPF.ospf显示,到达34.1.1.2是通过23.1.1.2下一跳 到达,所以数据包R3.R3看到这个数据包是到达R5的,是通过EBGP学来是通过IGP承载的。数据包到达R4R4查路由表,要到达5.5.5.5,下一跳是45.1.1.2,所以到达5.5.5.5

以上配置是在讨论理论上的东东。在现实中不用这种方法。

思科BGP技术详解三

clip_image002

七、bdp的三张表:

1)邻居表:用show ip bgp nei 或:show ip bgp summary (常用)

2BGP:查看用 show ip bgp 显示有三个条目:哪个条目是学来的?2.03.0是常来的。

Network Next Hop Metric LocPrf Weight Path

*> 1.1.1.0/24 0.0.0.0 0 32768 i

*> 2.2.2.0/24 12.1.1.2 0 0 200 i

*> 3.3.3.0/24 12.1.1.2 0 200 300 i

I:本地的为空,小i移到前面了,代表IGP

*:表示是可用的路由。

>:是取优的路径(始终是会选择一条最优路径)

0.0.0.0:指本地BGP网络

200 300 i:从300200过来的,AS离我最近的放在最左边。

3)路由表: ”>”指向的那一条放进路由表中。

如图:

Best 最优的路径,始终会选一条最优的路径,不会形成负载,但可以用手工形成。

R2上有两个邻居,把BGP的邻居donw,但是直连接电路还是通的。方法:

Router bgp 200

Nei 12.1.1.1 shut

R2#Show ip bgp sum

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

12.1.1.1 4 100 25 33 0 0 0 00:00:43 Idle (Admin)(手动关闭 )

23.1.1.2 4 300 91 100 11 0 0 01:26:33 1

直连的能拼通:R2#ping 12.1.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/40/64 ms

R2#show ip bgp nei显示:两个邻居的状态:一个是:shutdown 一个时:Established状态。

BGP neighbor is 12.1.1.1, remote AS 100, external link

Administratively shut down

BGP neighbor is 23.1.1.2, remote AS 300, external link

BGP version 4, remote router ID 3.3.3.3

BGP state = Established, up for 01:28:33

八、消息类型:

BGP四种消息类型四个包:

Open

Dekpalive

Update

natification

clip_image001clip_image002用试验说明:如图:

clip_image004

计算机要桥接本地。启bgp 100 200 R4 R5先不要配置。R1AS 100 R2R3AS200,在交机上做端口映射。

SW1#monitor session 1 source int f0/1 监听会话1,源接口交换机机f0/1

Monitor session 1 destination int f0/3 监听会话,目的接口是:f0/3.

打开软件,wireshark,点击开始。到R1上打开f0/0接口。过一会后,再no shutdown.wiresshrk软件的过滤栏内输入bgp bgp包过滤出来。 BGp封装于TCP之上,端口号179.

九、包结构:

第一个包:open消息 作用:建立邻居关系。

包含:1.type 1 类型为1

2.版本为4,版本不相等不能建立邻居。

3.本地的ASmy AS

4.holdtime 180s 。可以修改,最小能改成3.keepalivetime60s.是由holdtiom 决定,是3倍的关系)。Holdtiom时间不相等也能建立邻居,建立邻居时则依据较小的时间。

5.BGPID:当OSPFBGp共存时,要保证Router ID一致。

6.用的是TCP协议,要完成三次握手。抓包试验:

试验: (TCP 的三次握手)

Internet protocol ,src12.1.1.1 (12.1.1.2),dst 12.1.1.2(12.1.1.1)

第二个包:keepalive 保活。(是一个空包)

包含:类型为4.

第三个包:updata:更新消息:

包含1.类型:2

2.path attribute:路径属性

3.网络可达性消息(NLRI-network layer reachability information :包含前缀和网络。

第四个包:notificationbgp 发生错误时,会发送natification报文

包含:1.type 类型:notification message 3

2.Error code 错误代码: open message error(open消息错误)

Error subcode错误子代码 : bad peer AS。对端的AS错误(不匹配的AS

十、BGP的邻接状态集:

1.idle:相当于down状态。什么也不干。 idle[ˈaidl].懒散的;空闲的

2.connet建立:建立TCP的连接。

3.active

4.opensent

5.openconfirm

6.eestablished

详细说明:

第一:idle 状态:初始化TCP的连接。

第二:connet状态:等待TCP的连接(是个瞬间),如果TCP连接成功,则发opensent消息,进入opensent状态。如不成功,则进入Active状态。

第三、Active状态:

第四、opensent:等待对方的Opensent 消息。收到消息,如匹配,则向对方发送keepalive消息,进入openconfirm状态。如不匹配,发送notification消息,回到idle状态,进行下一次的重传。

第五、openconfirm:等待对方发送keepalive消息。如收到keepalive消息,则进入下一状态;如收到notification消息,则进入idle状态。

第六、eestablished:说明邻居关系已经建立。可以发送updata消息,路由器可以更新了。

clip_image005clip_image006clip_image007十一、试验:

如上图:配通,

BGP也有router-id 选举规则,和原先一样,也可手动指定:bgp router-id 2.2.2.2

各接口配置地址,每个路由器上都有一个loop 0,将网络加入到BGp 中,

R1#Router bgp 100

Network 1.1.1.0 mask 255.255.255.0

R3#router bgp 200

Network 3.3.3.0 mask 255.255.255.0

R3# R3#show ip bgp nei

R3#show ip bgp nei

BGP neighbor is 23.1.1.1, remote AS 200, internal link 内部bgp即:IBGP

BGP version 4, remote router ID 2.2.2.2

BGP state = Established, up for 00:10:25,

Sent Rcvd

Opens: 1 1 发一个收一个OPENS包。

Notifications: 0 0

Updates: 1 1

Keepalives: 9 9

Route Refresh: 0 0

Total: 11 11

还包含

远端的Router-id

internal link :内部即IBGP

BGP state: 如显示established:代表邻居关系已经建立。

Keepalive :60s

R3#show ip bgp

学到了1.1.1.0/24的路由。是通过IBGP学过来路由。

Network Next Hop Metric LocPrf Weight Path

* i1.1.1.0/24 12.1.1.1 0 100 0 100 i

*> 3.3.3.0/24 0.0.0.0 0 32768 i

* i5.5.5.0/24 45.1.1.2 0 100 0 300 i

0.0.0.0 :是直连的链路,默认下一跳是0.0.0.0

I:表示是通过IGBP常来的路由。

R3#ping 12.1.1.1 不通,直连在任何情况下,路由下一跳应该到达。看一下路由表:

R3#show ip route ,显示没有1.1.1.1B路由。没有的原因是下一跳不可达。

34.0.0.0/24 is subnetted, 1 subnets

C 34.1.1.0 is directly connected, FastEthernet0/0

3.0.0.0/24 is subnetted, 1 subnets

C 3.3.3.0 is directly connected, Loopback0

23.0.0.0/24 is subnetted, 1 subnets

C 23.1.1.0 is directly connected, FastEthernet0/1

发现了一个问题:1.1.1.0R2的下一跳是12.1.1.1。不对了。应是:12.1.1.2

R1:#上用ping 3.3.3.3 source 1.1.1.1 不通。

原因:是的。到过1.1.1.0网络的下一跳是12.1.1.1了,应该是23.1.1.。引出了:

BGP网络中的“下一跳规则”:

EBGP邻居常来的路由,在向IBGP发送时,下一跳地址要改变(默认是不改变的)。

R2EBGpR1上学到1.1.1.1路由,下一跳是12.1.1.1,根据上述规则,R2在发给R3时,下一跳不变也是12.1.1.1,如果R3能正常收到路由,应该改成到R3R1的下一跳:。23.1.1.1

R2 # router bgp 200

R2#nei 23.1.1.2 next-hop-self 23.1.1.1 是指的我的邻居。

意思是:我给我的邻居23.1.1.2发送路由时下一跳变成我自己。

R3#show ip bgp

显示:有了R31.1.1.1的下一跳地址:23.1.1.1

Network Next Hop Metric LocPrf Weight Path

*>i1.1.1.0/24 23.1.1.1 0 100 0 100 i

*> 3.3.3.0/24 0.0.0.0 0 32768 i

* i5.5.5.0/24 45.1.1.2 0 100 0 300 i

水平分割:

没有收到。原因是IBGP有一个水平分割原则:

R3#Ping 1.1.1.1 source 3.3.3.3

思科BGP技术详解二

clip_image002

五、配置:

只要TCP可达,邻居关系就可以建立。BGP是通过TCP建立的。要建立BGP邻居,必须保证TCP可达,必须路由是可达的。

先建立邻居:

R1#router bgp 100 (一个路由器上只能配置一个AS,否则会提示是:BGP is already running AS is 100 )

Neighbor 12.1.1.2 remote-as 200 指定邻居关系,指定远端的AS号(也就是对端的AS号)

注:在bgp路由器上也有router ID ,选举规则是和OSPF一样的,也可以手动指router ID

Router bgp 100

Bgp router-id 1.1.1.1

R2#router bgp 200

Neighbor 12.1.1.1 remote-as 100

Bgp router-id 2.2.2.2.

R1上配置完后提示:neighbor 12.1.1.2 up

R1#show ip bgp neighbors

BGP neighbor is 12.1.1.2, remote AS 200, external link外部链路(即是EBGP

R1的邻居的12.1.1.2,远端的AS200

BGP version 4, remote router ID 2.2.2.2

本是,2000年集本升级。远端的ROUTER ID

BGP state = Established, up for 00:00:17

BGP状态:看到Established时,表示和邻居关系已经建立。

Last read 00:00:17, last write 00:00:17, hold time is 180, keepalive interval is 60 seconds

Keepalive保持TCP的连接,保活消息:时间周期60s

Neighbor capabilities:

Route refresh: advertised and received(old & new)

Address family IPv4 Unicast: advertised and received

Message statistics:

InQ depth is 0

OutQ depth is 0

Sent Rcvd

Opens: 1 1

Notifications: 0 0

Updates: 0 0

Keepalives: 1 1

Route Refresh: 0 0

Total: 2 2

Default minimum time between advertisement runs is 30 seconds

For address family: IPv4 Unicast

BGP table version 1, neighbor version 0/0

BGP table version 1BGp表默认1,每变化一次增加1.如果BGP建立的时间非常短,Version非常高,说明网络变化非常频繁,不稳定。可以进R2router bgp 200下,neighbor 12.1.1.1 shut,然后再打开,这样经过几次来试验,再看此号,变化了。

Output queue size: 0

Index 1, Offset 0, Mask 0x2

1 update-group member

Sent Rcvd

Prefix activity: —- —-

Prefixes Current: 0 0

Prefixes Total: 0 0

Implicit Withdraw: 0 0

Explicit Withdraw: 0 0

Used as bestpath: n/a 0

Used as multipath: n/a 0

Outbound Inbound

Local Policy Denied Prefixes: ——– ——-

Total: 0 0

Number of NLRIs in the update sent: max 0, min 0

Connections established 1; dropped 0

Last reset never

Connection state is ESTAB, I/O status: 1, unread input bytes: 0

Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 1

Local host: 12.1.1.1, Local port: 43320

Foreign host: 12.1.1.2, Foreign port: 179

Connection tableid (VRF): 0

Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x128AAC):

Timer Starts Wakeups Next

Retrans 3 0 0x0

TimeWait 0 0 0x0

AckHold 1 0 0x0

SendWnd 0 0 0x0

KeepAlive 0 0 0x0

GiveUp 0 0 0x0

PmtuAger 0 0 0x0

DeadWait 0 0 0x0

Linger 0 0 0x0

ProcessQ 0 0 0x0

iss: 1734781539 snduna: 1734781604 sndnxt: 1734781604 sndwnd: 16320

irs: 3945826168 rcvnxt: 3945826233 rcvwnd: 16320 delrcvwnd: 64

SRTT: 99 ms, RTTO: 1539 ms, RTV: 1440 ms, KRTT: 0 ms

minRTT: 76 ms, maxRTT: 300 ms, ACK hold: 200 ms

Status Flags: active open

Option Flags: nagle

IP Precedence value : 6

Datagrams (max data segment is 1460 bytes):

Rcvd: 4 (out of order: 0), with data: 2, total data bytes: 64

Sent: 4 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 2, total data bytes: 64

Packets received in fast path: 0, fast processed: 0, slow path: 0

Packets send in fast path: 0

fast lock acquisition failures: 0, slow path: 0

R1#show ip bgp summary 查看邻居的汇总信息

BGP router identifier 1.1.1.1, local AS number 100

本地Router id 1.1.1.1 本地的AS 是 100

BGP table version is 1, main routing table version 1

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

12.1.1.2 4 200 18 18 1 0 0 00:15:59 0 如果是数字,表示邻居已建立

在每台路由器上各启一个loop 0

R1#int loop 0

Ip addr 1.1.1.1 255.255.255.0

Router bgp 100

Network 1.1.1.0 mask 255.255.255.0 仅仅将网络加入到BGP

R2#int loop 0

Ip addr 2.2.2.2 255.255.255.0

Router bgp 200

Network 1.1.1.0 mask 255.255.255.0

R1# show ip router 应该出现:

B 2.2.2.0 [20/0] via 12.1.1.2, 00:00:24

12.0.0.0/24 is subnetted, 1 subnets 收到一条B路由。是通过“ B- BGP”学到的。

R3:启一个loop 0 启AS 300

Int loop 0

Ip address 3.3.3.3. 255.255.255.0

Router bgp 300

Neighbot 23.1.1.1 romote-as 200

Bgp router-id 3.3.3.3

Network 3.3.3.0 mask 255.255.255.0

R3#Show ip bgp nei

只要:State/pfxrcd 是个数字,是邻居建立了。

R1#show ip route

学到了两条B路由:

1.0.0.0/24 is subnetted, 1 subnets

C 1.1.1.0 is directly connected, Loopback0

2.0.0.0/24 is subnetted, 1 subnets

B 2.2.2.0 [20/0] via 12.1.1.2, 00:24:38

是通过EBGP学来的距离是20,IBGP是200.

3.0.0.0/24 is subnetted, 1 subnets

B 3.3.3.0 [20/0] via 12.1.1.2, 00:00:08

12.0.0.0/24 is subnetted, 1 subnets

C 12.1.1.0 is directly connected, FastEthernet0/0

六、此试验全部的配置总结:

R1#int loop 0 Ip addr 1.1.1.1 255.255.255.0

Int f0/0 Ip addr 12.1.1.1 255.255.255.0

No shut

router bgp 100 注:一个路由器上只能配置一个AS号。

Network 1.1.1.0 mask 255.255.255.0

Bgp router-id 1.1.1.1

Nei 12.1.1.1 remote-as 200

R2#int loop 0 Ip addr 2.2.2.2 255.255.255.0

Int f0/0 Ip addr 12.1.1.2 255.255.255.0

Int f0/1 Ip addr 23.1.1.1 255.255.255.0

No shut

Router bgp 200

Neighbor 12.1.1.1 remote-as 100

Neighbor 23.1.1.2 remoe-as 300

Bgp router-id 2.2.2.2.

R3:Int loop 0 Ip address 3.3.3.3. 255.255.255.0

Router bgp 300

Neighbot 23.1.1.1 romote-as 200

Bgp router-id 3.3.3.3

Network 3.3.3.0 mask 255.255.255.0

注:R1R2R3只是用neibghor建立了邻居关系,并没把所连接的端口的地址加入到bgp域中,通过在R1show ip route ,看出R1能学到2.03.0的网络,说明了:1.0到达3.0是通过neighbor建立的邻居关系,再通过bgp的承载到达的。

如果把R2FO/0接口shutdown,R1上查看bgp表:show ip bgp sum显示:状态是Active.

R1#show ip bgp summ

BGP router identifier 1.1.1.1, local AS number 100

BGP table version is 1, main routing table version 1

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd

12.1.1.2 4 200 26 26 0 0 0 00:00:07 Active

思科BGP技术详解一

一、介绍

外部网关EGP分为:EGP是有类,收敛速度慢

BGP无类,一般用在比较大型网络,在运营商内部。

BGP:目的是为做策略,大的网络接入到运营商时用的网络。开始选路,用的BGP

AS:自治系统,大的范围,有多个出口。处在一相同的管理域的集合。(OSPF,eigrp的AS叫进程)如果把AS比喻成一个路由器的话,那么路由器与路由器之间叫:EBGP。AS内的BGP叫IBGP。

宿主:单宿主(也叫单归属),接一个AS,有单根线连接或多根线连接。

双宿主,接二个以上的AS,

关于路由的情况:所有都收一个缺省路由,损耗路由资源最少;

引缺省路由和部分明细的路由(如引两个条默认路由,会出现一条次优路由)

因特网上所有路由表都收到,如果都收的话,会有30万几条路由。那就会BGP,主要

是使用一些策略依据属性。

Peer:对等体。

二、详细说明AS

范围:1-65535 由16Bit 2进制组成。2009年升级到32位。要使用AS需申请。

私有的AS号:64512-65535-1023个。

Loop-free:无环路。

多种路径属性:BGp控制流量时,用多种路径属性。

什么时候用BGP:1.An AS is transit AS (是一个传输AS时。有三个AS,中间的是传输AS)

2.在多宿主的时候;

3.在多个AS之间需要做策略时。

什么时候不有BGP:1.一条链路接运营商时(引一条缺省路由即可);

2.没有足够的内存(用76型);

3.没有技术水平。

三、BGP的功能:

1. 通告的什么:整个路径。(通常称为路径失量路由协议,能记录所经过的AS,记录所达到网络系;

目的:是防止环路产生。如收到一条路由当中包含自己的AS,则说明已经是环路了。

2. 记录正在使用的属性;

3. 可以管理;

4. 路由器支持和策略配置一跳一跳地,也就是AS by AS。

四、BGP的特点:

1.可靠的更新;采用TCP的179端口;(rip 是使用UDP的520端口,eigrp和ospf都封装在IP之上,都是不可靠的传输。因BGP应用在ISP运营商中,要的是稳定、可靠。)

2.增量触发更新;(在变化就更新)查看:router-server.ip.att.net

3.周期性地保活消息,查检TCPr 连接。

4.丰富的属性(RICH metric)

5.为大型的网络而设计

6.增强的距离失量路径失量。