BGP

BGP:EGP协议,as之间的路由传递动态路由的问题

BGP是距离矢量型分布式计算
直接用TCP传递路由信息(端口179),保证了可靠性,丧失邻居的自动发现
bgp设计用来处理as之间的路由所以该协议重点是处理as之内的路由不作为重点
as号作为识别不同as路由的标识,该as号具有唯一型(1-65535)可以使用扩展32 解决as不够用的情况。
bgp最小的使用单位是路由器,所以每个路由器只能使用一个bgp进程
由于bgp管理的路由信息非常庞大,就不能使用周期更新,只能触发更新
并且bgp 会认为时间越久越稳定,在 这种情况下bgp 必然不会使用复杂的算法来处理bgp收到的路由信息,由由于
每个as情况不一致,管理范围也有限,它必然需要丰富的管理参数(不能只依赖metric去判断)综上所述,bgp必然需要多种参数共同决定路由的 选择,并且不能依赖某种特定的全局算法
只能单独去计算某一条路由不能全盘考虑并且需要依赖所属as管理员手动设置
bgp路径优先协议,通过给每一个路由设置大量的属性参数来灵活的管理或者选路,并且这些属性参数大量的需要人为来操控

邻 居建邻:
状态机:
1、down没有发包情况
2、idel
配置了neighbor或重置了邻居,BGP初始化所有资源打开了Connectretry计时器,初始化消息将他转化到connect状态
3、connect
如果connectretry时间超时,计时器重新开始,在试图与邻居建立TCP连接,bgp保持connect状态,出现其他事件转入idel状态
4、active
BGP试图与邻居建立一个TCP连接
5、open send
在此状态下已经发送了open消息,BGP等待邻居发送的open消息
6、openconfirm
在此状态下BGP会等待一个keep live消息或notification消息
7、establish state
此状态bgp对等体间的连接已经完全建立,可以交换updata,keeplive和notification消息,收到notification状态设置为idle中断连接

bgp建邻失败的场景:
参数和配置
1、neighbor10.1.1.1//代表向该地址发送tcp端口为179的数据
并且自己也需要在发出地址上打开tcp
179的监听。该配置可以指定源地址也可以不指定源地址,不指定就是出接口
本端指的地址需要是对方的源地址,对方指的地址需要是 本端的源地址
2、neighbor 10.1.1.1 remote-as xx
对端建邻的as号必须和本端remote -as xx号一致
3、建邻双方保证tcp179能够发送不丢失,不被拦截

邻居之间路由传递的规则
bgp两种邻居关系
IBGP邻居关系//相同as路由器建立邻居关系
EBGP邻居关系//不同as路由器建立邻居关系
1、不管是什么邻居关系只传递最优路由(不优不传,优的标志是>,也就是不带>的路由不会被bgp传递)
2、EBGP 邻居关系路由传递:只要不违背环路原则EBGP或者人工策略EBGP 邻居关系传递无限制(前提是必须优)EBGP 之间
3、IBGP 邻居关系路由传递:IBGP 邻居之间不会中转路由(自己宣告的,自己重发布进来的)和EBGP 邻居传递 的都可以传递给其他的IBGP邻居,但不可以在IBGP之间中转(也就是不能传递给邻居的邻居)
IBGP之间传递路由不会更新next-hop(只有next-hop 为0 的情况才会更新,或者建立邻居的时候输入neighbor x…x.xxnext-hop -self更新为自己的)

这个设定的好处:IBGP之间拥有了水平分割从而避免了IBGP环路的产生,IBGP也不必设置防环算法
这个设定的坏处:IBGP之间的路由传递必须直接建立邻居,导致IBGP邻居关系是一种全互联状态
bgp属性的类型;
1、公认必尊
所有bgp路由器必须识别遵守 的原则由有:origin、as_path、next_hop
2、公认可尊
所有路由器都能识别但不一定要遵守,local_pref atomic_aggregate
3、可选传递
不是所有的路由器都能识别,但是所有的路由器都能传递,aggregator和community
4、可选非传递
不是所哟的路由器都识别,不能识别的路由器丢他,MED,originator_id和cluster_,weight

你可能感兴趣的:(网络)