BGP动态路由协议
BGP是一种路径矢量路由协议,用于AS间路由信息的交换;不同与OSPF、RIP、IS-IS协议等IGP协议,BGP是EGP协议。BGP提供了在不同自治系统之间无环路的路由信息交换。BGP基于策略的路由协议,通过丰富的路径属性进行控制,有着丰富的路由过滤和路由策略;
- IGP协议:用在AS内部的路由协议,实现AS内部路由器之间的路由信息的交换。
- EGP协议:用在AS之间的路由协议,实现AS与AS之间的路由信息的交换。
BGP的工作过程
BGP使用可靠的TCP传输进行路由信息的交换。BGP工作在应用层,其端口号为179。BGP的邻居关系必须建立在可靠的TCP之上,所以在建立TCP连接之前,需要知道邻居的IP地址,一般会使用IGP路由协议或者静态路由与直连端口获得邻居的IP地址;若TCP建立连接失败,则会持续尝试建立连接,直到连接成功;建立TCP连接后,需要进行能力交互,因为任何支持IP协议栈的设备都能够支持TCP连接,但并不是任何设备都支持BGP,所以需要进行能力的确认;确认完成后,会进行路由信息的交换;BGP采用持久的TCP连接方式,所以当路由信息发送改变的时候,BGP也能够迅速的改变路由信息,快速收敛。
????
建立连接的两台设备互为对等体;BGP为确保两端设备都存活,要求运行BGP的设备周期性发送keepalive报文;若一端设备在超过存活时间未发布keepalive消息,就会认为对方已经停止BGP运行,于是会拆除TCP连接,并会将从对端学到的路由全部删除。
BGP报文类型
BGP通过定义四种类型的报文进行路由信息的交互,共有四种报文,分别是OPEN报文、KEEPALIVE报文、UPDATE报文、NOTIFICATION报文。
- OPEN报文:主要包括BGP版本、AS号等信息;在建立TCP连接后,两端就会发送OPEN报文,交换各自的信息,以确认是否能够建立BGO邻居关系。
- KEEPALIVE报文:用于BGP邻居的维护,周期性发送KEEPALIVE报文,能够检测BGP邻居的状态,判断邻居可达性。
- UPDATE报文:邻居间使用UPDATE报文进行路由信息的交换,是BGO四种报文最重要的报文,包括撤销路由和可达路由信息与路由属性。
- NOTIFICATION报文:BGP的差错检测机制,用来检测差错,一旦发送错误,BGP Speaker就会发送该报文进行关闭邻居关系。
BGP工作原理
- IBGP邻居:在同一个AS内,建立邻居的两个BGP路由器
- EBGP邻居:在不同AS之间,建立邻居的两个BGP路由器
BGP路由宣告原则
BGP Speaker提供的最优路由不一定被路由所使用,因为静态路由的优先级比BGP路由优先级高。
因为IBGP路由器是同一AS,若相互宣告网络会引起路由环路,则BGP规定IBGP只会向EBGP宣告路由信息。
- 路由宣告原则五:BGP Speaker从IBGP学到的路由是否宣告到EBGP,要依据IGP和BGP同步情况决定。
BGP协议的主要功能是路由信息交换,而不是发现和计算路由。若IBGP建立邻居交换路由信息后,但AS内部没有去往IBGP的路由,则路由信息被丢弃,所以需要进行IGP与BGP的路由同步。
BGP路由的注入
BGP路由协议的主要目的是在自治系统之间传递路由信息,而不是发现和计算路由信息,所以路由信息需要通过配置指令的方式注入到奥BGP中,则BGP注入路由有两种方式:Network和import。
- Network:路由器将路由表中的路由信息通过Network注入到BGP路由表中,并通过BGP转递到其他对等体。
- import:使用import将其他的路由协议的路由信息注入到BGP路由表中,import一般配合组合策略共同使用。
BGP的属性
BGP是有着丰富的路径属性,主要分为四大类,公认必遵、公认任意、可选过渡、可选非过渡。
- 公认必遵:BGP必须识别所有公认属性,强制携带的属性必须包含在每一个UPDATE消息中。
- 公认任意:其他任意属性可能会被包含在UPDATE消息中。
- 可选过渡:可选属性并不是所有的BGP路由器都会识别,可选过渡就是可以跨越AS域。
- 可选非过渡:可选非过渡就是不可以跨越AS域。
BGP常见属性
- Origin:起源属性,表示路由信息的来源,IGP是“i”、EGP是“e”、未知路由是“?”。
- AS_PATH:AS路径属性,是路由经过的AS序列,BGP不会学习所在AS的路由,则可以形成防止路由环路。
- Netx Hop:下一跳属性,包含到达下一跳边界路由器的IP地址。
- MED:当AS有多个入口时,MED表示各个入口的开销,MED值越小越优先。
- Local-Preference:用于AS内挑选去往同一目的地的一条路由,属性值越大越优。
- Community:团体属性,标识了一组有着相同特征的路由信息。
BGP的选路原则
- 当路由的下一跳不可达时,会忽略该路由。
- Local-preference值最高的路由优先。
- 聚合路由优先于非聚合路由。
- 通过AS_PATH评估AS路径的长度,最短的路径优先。
- 比较Origin属性,优先级:IGP>EGP>Incomplete。
- 选择EMD值较小的入口。
- EBGP路由优于IBGP路由。
- BGP优先选择到BGP下一跳的IGP度量最低的路由。
- 比较对等体的IP地址,选择IP地址数值最小的路径。
|