BGP基础:1. 使用TCP179号端口作为底层传送机制。
由于将分段、重传、确认、排序等工作交给TCP处理,使得BGP的更新机制得到简化。
也由于BGP建立在TCP之上,因此需要为每个对等体建立一个独立的点到点连接。
2.利用AS_path 可以防环。
路由器在收到路由更新后,如果发现在AS_path中包含了自己的本地AS号,那么就说明出现了环路。
进而拒绝接收该更新。
从而避免环路。
3.命令show ip bgp 可以看到BGP 路由表。
BGP 路由表中西那是了目的网络、下一跳、以及用于最短路径的度量值,weight、localpre、path等。
BGP 路由表列出所有已知路径。
*表示有效路由。
*>则表示当前使用的路由,该最佳路由是拥有最短AS_PATH的路径。
如果去往目的地是存在多条并行等价路径,默认下EBGP仅选择一条路径。
命令maximum_path拥有更改并行路径的默认最大值。
而对于IBGP而言,只能使用一条链路。
4.两个邻居在首次建立BGP对等连接时,会交换各自的全部BGP 路由表,之后则交换增量的部分更新。
由于BGP 不使用周期性的路由更新机制,因而对等体之间必须交换保持激活消息(keepalive)消息,以维护该对等体连接。
BGP消息类型在建立bgp对等连接之前,两个邻居必须执行标准TCP三次握手进程,并在端口179打开TCP连接。
所有BGP消息采用单播方式经TCP连接传递给邻居。
4种消息类型:-Open 消息-keepalive (保持激活)消息-Update 消息-Notification (通告)消息1.open 消息:TCP建立后,两端发送Open消息指定BGP参数包括:- BGP版本号:如果两端版本不一致,则协商至相同为止,版本号高的服从版本号低的。
假设一端是BGP-3,另一端是BGP-4,则最后协商的结果为BGP-3.-自治系统号:表示会话发起端路由器的AS号,用以确定该BGP会话是EBGP会话,还是IBGP会话-保持时间:表示路由器在收到keepalive消息或者Update消息前可以等待的最长时间。
cisco默认保持时间为180秒-BGP标识符:用来标识邻居的IP地址.Cisco IOS 确定BGP标识符的过程与确定OSPF 路由器ID的过程完全一致。
即:手工指定>looback口最大IP地址>up的物理接口上最大的IP地址-可选参数:用来宣告支持验证、多协议支持和路由刷新等可选功能。
:Marker用于BGP验证的计算,不使用验证的时候所有bit的值均为12.keepalive消息如果路由器接受邻居发送来的OPEN消息中指定的参数,则响应一条Keepalive消息。
此后,默认每60秒发送一次keepalive消息。
180秒收不到则邻居关系down。
3.Update消息用于宣告可行路、以撤销路由或者两者。
Update消息包括以下信息:-NLRI 网络层可达信息。
是一个或多个宣告IP地址前缀及长度的二元组。
-路径属性-已撤销路由:描述那些已变为不可达且退出服务的目的地址(长度、前缀)二元组4.Notification 消息路由器只要检测到差错,就会发送Notification消息并关闭BGP连接。
BGP路径属性分为4类1.周知强制属性2.周知自选属性3.可选传递属性4.可选非传递属性周知属性:所有BGP实现都必须能识别这些属性。
而可选属性并不要求BGP实现支持这些属性周知属性包括了:1.强制属性---即必须包含在BGP update消息中2.自选属性---即可以包含在特定的BGP update消息中,也可以不包含在特定的Upadate消息中。
如果可选属性是传递的,那么BGP进程应该接受该属性中包含的路径,即使不支持该属性,并将该路径传递给对等体。
如果可选属性是非传递的,那么无法识别该属性的BGP进程可以忽略Update消息中包括的该属性,并且不将该属性传递给对等体。
路径属性表:ORIGIN --周知强制属性AS_path 周知强制属性NEXT_HOP 周知强制属性LOCAL_PREF 周知自选属性ATOMIC_AGGREGATE 周知自选属性AGGREGATOR 可选传递属性 COMMUNITY 可选传递属性MED(MULTI_EXIT_DISC 多出口分区) 可选非传递属性ORIGINATOR_ID 可选非传递属性CLUSTER_LIST 可选非传递属性。
--ORIGIN 起源属性指定了路由更新的来源。
是用来确定优选路由的因素之一。
ORIGIN 属性指定的路由来源有以下3中:1.IGP:IGP源拥有ORIGIN值的最高优先级。
如果路由是通过NETWORK语句从IGP路由表中学到的,那么其BGP路由的源就是IGP2.EGP:优先级次优3.不完全的:BGP通过重分发学习到的路由将携带不完全路由来源属性。
该携带该属性的路由优先级最低。
--AS_PATH 属性该属性利用一串AS号描述去往特定目的地的路由。
由BGP发言者发起一条路由,并在AS_paht加上自己的AS号,而后,后续的BGP发言者在将路由宣告给外部对等体时,都会在AS_Paht中加上自身的AS号(加在最前面)。
这样,AS_PATH就描述了该路由经过的全部自治系统。
从最近到达的AS开始,到发起该路由的源AS结束。
注意:仅当Update消息被发送到其他AS时,才会在AS PATH中加上自身的AS号。
即只在EBGP对等体中宣告路由条目时才追加AS号。
但有一种情况例外。
例如当有一个AS去往目的地有两条线路,一条带宽为1G,但经过3个AS,而另一条带宽为100M,但经过两个AS。
这样在最优路径选择时,往往会优先考虑进过AS较少的路径。
所以,此时可以在次优路径的AS_PATH中增加AS号用以确保最优路径进入路由表。
该技术被称为AS路径预附加(path prepending)利用AS_path 可以防环.路由器在收到路由更新后,如果发现在AS_path中包含了自己的本地AS号,那么就说明出现了环路。
进而拒绝接收该更新。
从而避免环路。
--NEXT_HOP属性该属性描述了下一跳路由器的IP地址。
对于BGP 而言,BGP NEXT_HOP地址不总是邻居的IP地址。
其规则如下:1.如果过宣告路由器与接收路由器位于不同的AS中,那么NEXT_hop 是宣告路由器的接口IP地址2.如果宣告路由器与接收路由器位于同一AS内,并且update中的NLRI 指向的是同一AS内的目的地,那么NEXT_HOP是宣告该路由的接口IP 地址。
即使宣告路由器和接收路由器并不共享同一链路,其下一跳地址也能够通过递归查询找到去往该地址的路由--因为BGP是建立在IGP之上的。
3.如果宣告路由器和接收路由器是内部对等体,且NLRI指向的是不同AS内的目的地,那么NEXT_HOP是外部对等体的接口IP地址。
注意:该接口IP只有AS边界路由器能够到达,除非AS边界路由器将该网络宣告到IGP的AS内,否则IGP将无法知道该网络。
即使去往该网络的路由已经在bgp路由表中,但却没有安装到IGP路由表中,那么对接收路由器来说,下一跳仍是不可达。
解决方案:---1.指定静态路由。
---2.使用命令:next-hop-self使AS边界路由器将NEXT_HOP属性设置为自己的IP地址,然后宣告给IBGP内的路由器。
--LOCAL_PREF 本地优先级属性用于内部对等体之间的Update消息,不会传递给其他AS。
用以通告被宣告的路由的优先级,优先级越大该路由越优。
例如:如果内部BGP 发言者收到多条去往相同目的地的路由,那么比较这些的LOCAL_PREF 属性,优先级最高的路由被选中。
在多宿主AS中的路由器有可能学到去往同一个目的网络而接口属于不同AS的邻居的多条路径。
事实上,从本地AS到达任何目的地网络都可能存在多个出口。
这是可以用本地优先级强制BGP路由器在路由分组到某个目的地的时候优选某个出口点。
因为该属性在AS内的所有BGP路由器之间交换,所以所有BGP路由器对如何走出本AS具有一致性。
(PS:对于某个给定目的地,尽管路由器总是优先选用具有较低度量值和管理距离的路由,但在相同情况下,BGP路由器却优先选用具有较高本地优先级属性值的路由。
)--MULTI_EXIT_DISC 属性该属性只影响入站的流量,与Loca_pref相反。
该属性承载于EBGP的Update消息中。
可以让某AS向其他AS说明其优选的入口点。
在其他条件相同的情况下,若收到多条去往相同目的地的路由,则优选MED 值最小的路由。
注意:1、MED仅用于影响两个直连的自治系统间的流量,如果要影响邻居AS 之外的路由,就要用到AS_PATH属性。
2、如果去往同一目的地的两条路由接收自两个不同的资质系统,那么将不会这两条路由的MED值。
MED仅仅用于单个AS,它在某AS存在多个入口点时用于说明不同入口点的优先等级。
--ATOMIC_AGGREGATE和AGGREGATOR属性汇总时,会丢失某些路由信息,而且路由选择也变得不够精确。
同样,BGP发言者上执行路由聚合后也会丢失路径的细节信息。
而ATOMIC_AGGREGATE用于向下游路由器告知已经出现了路径丢失情况。
任何收到带有ATOMIC_AGGREGATE属性的路由的下游BGP发言者都无法获得该路由更精确的NLRI信息,而且在将该路由宣告给其他对等体时,必须将附加上ATOMIC_AGGREGATE属性。
当设置ATOMIC_AGGREGATE属性时,BGP发言者还可以附加AGGREGATOR属性,由于该可选传递性属性包含了AS号及发起路聚合的路由器的IP地址,因而提供了路由聚合的相关信息。
即:ATOMIC_AGGREGATE属性表示已经丢失了路径,而AGGREGATOR属性指示了何处出现路由聚合。
--COMMUNITY属性用于简化路由策略的执行。
COMMUNITY属性将目的地视为某些共享一个或多个公共特性的目的地的一个成员。
例如,ISP可能会为其所有客户的路由都分配一个特定的COMMUNITY属性,之后,该ISP就可以基于COMMUNITY值(而不是每条路由)来设置其LOCAL_PREF和MED属性了。
管理性权值(Administrative Weight)是cisco私有的BGP参数,仅用于单个路由器内的路由,不与其他路由器进行交换。
因而权值信息不会包含在BGP update消息中,也不回以任何方式告诉BGP发言者的对等体。
范围0~65535 权值越大,路由越优在默认情况下,所有从对等体学到的路由的权值都为0,而所有本地路由器生成的路由的权值为32768.AS_SET有两种类型的AS_PATH:1.AS_SEQUENCE:一个有序的AS序号2.AS_SET:一个去往特定目的地所经路径上的无序的AS序号。