BGP协议
简介:
BGP中文名字:边界网关协议
英文名字: border gateway protocol
BGP协议是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。 BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。
功能:
BGP 系统的主要功能是和其他的BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS 互联的拓朴图并由此清除了路由环路,同时在AS 级别上可实施策略决策。
BGP的强大过滤功能:
解决大规模网络应用中遇到的问题:
优缺点:
优点:
应用特定的属性避免环路的发生
路由信息携带丰富的属性
丰富的属性值
可以组建可扩展的巨大的网络
丰富的路由过滤和路由策略
缺点:
传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv4 组播,IPv6单播、组播)的应用,在跨自治系统传播时就受到一定限制。为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP。
所有的用户私有网络在被BGP 传递时,都加入了RD(路由区分符),BGP 要支持这些RD 的传递,也需要多协议的BGP(MP-BGP)
MP-BGP采用地址族(Address Family)来区分不同的网络层协议。目前,系统实现了多种MP-BGP扩展应用,包括对VPN的扩展、对IPv6的扩展等。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
解决上述问题的方法很多,但是在解决上述主要问题的同时还必须满足如下几个标准:
简单:必须易于配置同时也易于理解
容易转变:在不改变拓扑和自治系统的前提下,能够将全连接的拓扑转变。“联盟”技术在这点上就做得不够好,对管理者来说是不幸的。
兼容性:必须保证在IBGP发言者之间的连接只有原自治系统或者域全连接的一部分的情况下,不丢失任何的路由信息。
实现技术就是——1,BGP Route Reflector
RR 从clients 和nonclients 收路由更新后路由反射的规则 按照BGP 的基本选路原则,选出最佳路由,只通告最佳路由 从 client 收到的更新,反射到 nonclients 和 clients 从 nonclient 收到的更新,反射到 clients
从 EBGP 邻居收到的更新,反射到 所有nonclients 和 clients
数据包结构:
BGP 有四种报文:
所有的BGP 分组共享同样的公有首部:
Marker : (16字节) 鉴权信息,标记字段标记报文的边界 Length : (2字节) 包括首部在内的报文总长度
Type : (1字节) 定义分组的类型,用数值1至4定义BGP 消息类型
作用
什么时候发包
Open 报文 协商BGP 邻居的各项参数,建立邻居关系
通过TCP 建立BGP 连接,发送open 报文
Keeplive 报文
用来确认Open 报文,和周期性地证实邻站关系
定时发送KEEPALIVE 报文以保持BGP 邻居关系的有效性 Update 报文
发送某一路由的信息,以及列出要撤消的多条路由,进行路由信息的交换 连接建立后,有路由需要发送或路由变化时,发送UPDATE 通告对端路由信息
Notification 报文
报告错误,中止邻居关系
当BGP 在运行中发现错误时,要发送NOTIFICATION 报文通告BGP 对端
Open报文:
Version :BGP的版本号。对于BGP-4来说,其值为4。
My autonomous system:本地AS号。AS号可以确定是EBGP连接还是IBGP 连接。
Hold time:保持时间。在建立对等体关系时两端要协商Hold time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。RFC规定两种实现,一种采用本地配置和收到的OPEN较小值进行协商,不过这个值为3。另一种是如果hold time不一致则断开连接。BGP identifier:BGP标必须为0或者最小识符。以IP地址的形式表示,用来识别BGP路由器。
Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
Optional parameters:可选参数。用于多协议扩展(Multiprotocol Extensions)等功能。
Keepalive报文:
BGP使用keepalive消息来维护邻居关系。消息格式中只包含报文头,没有任何其他字段。
Update报文:
更新报文是BGP协议的核心,路由器使用它来撤销以前已通知的终点和宣布到一个新终点的路由,或两者都有。
Unfeasible Routes Len不可行路由长度:这个2字节字段定义下一字段的长度。Withdrawn Routes撤销路由:这个字段列出必须从以前通知的清单中删除的所有路由。
Path Attribute Len路径属性长度:这个2字节字段定义下一个字段的长度Path Attributes 路径属性:这个字段定义到这个报文宣布可达性的网络路径属性。
Network Layer Reachability Information网络层可达性信息:这个字段定义这个报文真正通知的网络。它有一个长度字段和一个IP地址前缀,长度定义前缀中的位数。前缀定义这个网络地址的共同部分。例如,若这个网络是123.1.10.0/24,则网络前缀是24而前缀是123.1.10。
Notification报文:
当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP 连接会立即中断。
Error Code:差错码,指定错误类型,1bytes。
Error Subcode:差错子码,错误类型的详细信息,1bytes
Data差错数据,用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。