BGP(规则)
1.BGP基本的工作机制
dis bgp routing //验证BGP路由的手段
<R1>dis ip routing-table protocol bgp //目的是通过BGP更新路由
已经在AS内部存在了IGP,为什么还要使用iBGP呢? 逐跳转发、BGP黑洞、路由操控
构建环回接口来建立iBGP邻居的前提条件:源目IP可达
[R1-bgp]ping -a 11.1.1.1 15.15.15.15
PING 15.15.15.15: 56 data bytes, press CTRL_C to break
Reply from 15.15.15.15: bytes=56 Sequence=1 ttl=254 time=30 ms
Reply from 15.15.15.15: bytes=56 Sequence=2 ttl=254 time=50 ms
R1:
bgp 10
peer 10.1.12.2 as-number 20
peer 15.15.15.15 as-number 10
peer 15.15.15.15 connect-interface LoopBack0
SW3:
[SW3-bgp]dis th
#
bgp 10
peer 11.1.1.1 as-number 10
peer 11.1.1.1 connect-interface LoopBack0 //指定本端的去建立TCP连接的源IP地址
验证邻居关系:
[SW3-bgp]display bgp peer
BGP local router ID : 10.1.15.3
Local AS number : 10
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
11.1.1.1 4 10 3 3 0 00:00:33 Established 1
采用非直连的方式构建eBGP邻居关系
备份
eBGP报文中的TTL=1,所以需要修改TTL
bgp 60
peer 55.1.1.1 as-number 345
peer 55.1.1.1 ebgp-max-hop 255 //修改ebgp报文的TTL为255,
peer 55.1.1.1 connect-interface LoopBack0 //使用环回接口0作为建立TCP会话的源地址
2.BGP的报文类型
先建立TCP链接,之后再发送BGP的报文
OPEN(扩展能力:多协议BGP的能力、路由刷新能力、4字节AS号码的能力)
Keepalive ([R6-bgp]timer keepalive 50 hold 150 //针对所有邻居 ;[R6-bgp]peer 55.1.1.1 timer keepalive 40 hold 120 //针对某个邻居做出参数修改 )
UPdate,承载NLRI(网络层可达信息,即路由条目属性,公认必遵属性:1.起源(出身i,e和?);2.as-path;3.下一跳)
Notification
Route-refresh,(<R6>refresh bgp all import //发出去该种报文,请求对端发送更新-update报文给本端,import才会触发route-refresh报文)
3.BGP的邻居状态机
6种状态
IDLE
connect
active
opensent
openconfirm
est
常见的问题:指定的错误的邻居AS;指定了错误的邻居的地址;没有到达对端源地址的路由;本设备指定了错误的源地址;认证错误
为什么R1和R2之间没有指定“连接接口呢”
从邻居处得到bgp表(dis bgp routing)--过滤、策略,选出最优的路由--全局路由表(dis ip rou)
4.BGP路由的更新(通告)原则
4.1
BGP仅仅向邻居通告最优的路由;如果存在多路径(没有开启负载均衡的情况下),BGP选取最优的放入路由表
[R5]dis bgp routing-table peer 44.1.1.1 advertised-routes
BGP Local router ID is 10.1.35.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
> 5.5.5.5/32 55.1.1.1 0 100 0 i
> 6.6.6.6/32 66.1.1.1 0 100 0 60i
*> 55.1.1.1/32 55.1.1.1 0 100 0 i
[R5]
4.2
从ebgp邻居得到的路由会向所有的BGP邻居通告(ibgp和ebgp),除了得到该路由的eBGP邻居(水平分割)
下一跳的议题,下一跳在bgp中指到达其他AS的一个转发地址
1)iBGP环境下的下一跳
BGP路由最优的2个基本条件:A 下一跳可达性 B 同步关闭
[R1-bgp]peer 15.15.15.15 next-hop-local //从ebgp邻居处得到的路由,更新给ibgp邻居,会保持原来的下一跳(会导致下一跳不可达),ASBR针对ibgp邻居修改下一跳为本设备
[SW3]dis bgp routing-table
BGP Local router ID is 10.1.15.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
>i 5.5.5.5/32 11.1.1.1 100 0 20 345i
>i 6.6.6.6/32 11.1.1.1 100 0 20 345 60i
*>i 22.1.1.1/32 11.1.1.1 0 100 0 20i
2)eBGP多跳环境下的下一跳
3)多点接入网络环境的下一跳
BGP自动优化多点接入网络的下一跳(类似OSPF的转发地址技术)
在SW3和R5之间新建一个ebgp邻居
<R2>tracert 5.5.5.5
traceroute to 5.5.5.5(5.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.12.1 40 ms 10 ms 20 ms
2 10.1.15.5 60 ms 40 ms 30 ms
和重定向没有关系(ICMP重定向要经过报文触发)
4)RR(路由反射器)情况下的下一跳
敬请期待
4.3 iBGP的防环机制
从ibgp邻居处得到的iBGP路由不会再更新给iBGP邻居(铁公鸡,ibgp路由更新一跳-指一个ibgp邻居)
造成路由黑洞(由于某些设备没有运行bgp,而导致该设备缺少路由,而IP转发是逐跳转发)
解决方案:设备之间两两互联(所有设备都存在邻居关系)
作业:
1.在R1、R5和SW3之间观察MA网络的bgp下一跳自动优化,主要看R1到R5的路由
之后拿掉SW3和R5的邻居
2)构建ebgp邻居以及配置下一跳本地:
eBGP:2+4;1+2;5+6
iBGP:4+5;1+SW3
下一跳本地:R1\R5\R4
本文转自EnderJoe 51CTO博客,原文链接:http://blog.51cto.com/enderjoe/2058348