BGP原理综述

简介

定义

是一种实现在自治系统之间传输路由,并选择最佳路由选路的一种距离矢量路由协议。

目的

用来在不通自治系统之间传输路由信息。BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。

优势
  • 使用TCP作为传输协议,提高了路由传输的可靠性;
  • 可自定义路由汇总和使用路由惩罚实现路由的稳定性;
  • BGP使用丰富的路径属性来实现灵活的路径选择策略;

基本概念

AS

在一个实体管理下拥有相同路由选择策略的管理实体,每一个AS都必须拥有一个唯一的AS号码,AS号码分为16位和32位,通常只使用16位AS号,范围从1-65535,其中1-64511为公有AS号码,64512-65535为公有AS号码;

BGP邻居分类:
  • IBGP
    1.运行在同一AS内部的设备之间建立起BGP邻居关系为IBGP邻居关系;
    2.设备从IBGP邻居收到的BGP路由不会再传递给它的其它IBGP邻居,此规则叫做IBGP水平分割,用于IBGP路由防环,所以为了使IBGP路由将学习到的路由传递给它的IBGP邻居,使全网都能学习到BGP路由,IBGP邻居必须全互联,为了解决全互联带来的BGP对等体连接过多的问题,可以使用BGP路由反射器BGP联盟解决。
  • EBGP
    1.处于不同AS之间的设备形成的邻居关系为EBGP邻居关系;
    2.设备在将路由发送给它的EBGP邻居时会在AS-PATH属性中携带自身AS号码,收到路由的设备如果发现路由携带的AS号码同自身AS号码相同,则丢弃此路由,此为EBGP防环机制;
    3.IBGP同步机制:BGP在将路由发送给它的EBGP邻居时,首先会检查是否通过IGP学习到了此路由,如果没有就不会将此路由发送给它的EBGP邻居,现在所有厂商基本默认关闭了IBGP同步功能。
BGP router-id
  • BGP router-id是一个32位的标识,一般为ip地址;
  • BGP router-id在BGP建立邻居关系时会在open报文中携带,所以必须唯一;
  • 可以手动配置BGP router-id,如果没有手动配置则优先选择loopback接口的ip地址,如果没有配置loopback接口,则选择物理接口ip地址最大的地址作为router-id;

BGP工作原理

BGP报文
  • open报文
    用来建立BGP对等体连接
  • update 报文
    用来传递BGP路由信息
  • notification 报文
    用来中断BGP连接
  • keepalive报文
    用来保持BGP连接
  • router-refresh 报文
    用来在BGP路由策略改变时请求对等体重新发送update报文更新路由信息。只有支持路由刷新功能的BGP设备才会响应此报文
BGP状态机
  1. idle状态
    路由器默认处于idle状态,当配置一个BGP进程或者手动重置了BGP进程触发一个start事件后,BGP将尝试同其它对等体建立TCP连接,置为connect状态。BGP在任何状态下如果收到了notification报文或者TCP拆连通知后将置为idle状态。
  2. connect 状态,BGP启动连接重传定时器,等待TCP连接完成
  • 如果TCP连接完成,BGP将发送一个open报文,进入opensent状态;
  • 如果TCP连接失败,则BGP转至active状态直至连接重传定时器超时;
  • 如果连接重传计时器超时TCP连接任然未成功,BGP将继续尝试和其它对等体建立连接关系,停留在connect状态;
  1. active 状态,BGP总是在尝试同对等体建立TCP连接
  • 如果TCP连接建立成功,关闭重传定时器并且BGP发送一个open报文,转为opensent状态;
  • 如果TCP连接失败,那么BGP将停留在active状态到连接重传定时器超时;
  • 如果连接重传定时器超时后任未建立连接则转至connect状态;
  1. open-sent 状态,BGP等待对等体的open报文,对收到的open报文验证AS号码、认证、版本等
  • 如果收到对等体正确的open报文,则发送keepalive报文给对等体,转至openconfirm状态;
  • 如果收到了错误的open报文,则发送notification报文给对等体,转至idle状态;
  1. open-confirm状态,BGP等待对等体的keepalive报文或者notification报文
  • 如果收到对等体的keepalive报文,则转至establish状态
  • 如果收到对等体的notification报文,则转至idle状态
  1. establish状态,BGP将可以和对等体交互update报文,keepalive报文、notification报文和router_refresh报文;
  • 如果收到正确的update报文和keepalive报文,BGP将保持establish状态;
  • 如果收到错误的update报文和keepalive报文,BGP将向对等体发送notification报文并转至idle状态;
  • 收到router-refresh报文,如果路由器支持路由刷新功能,则向对等体发送update报文更新路由,如果不支持则忽略此报文;
  • 如果收到TCP拆连通知,这转至idle状态;
BGP路由更新原则:
  • 从IBGP邻居学习到的BGP路由,只会通告给它的EBGP邻居,并在BGP属性值中携带自身AS号码;
  • 从EBGP邻居学习到的BGP路由会通告给它的所有IBGP邻居和EBGP邻居,发送给BGP邻居是路由下一跳属性不会改变,发送给EBGP邻居是路由下一跳属性改变未路由更新源地址;
  • 当到达同一目的地有多个路由时,BGP只会选择一条最优的发送给它的对等体;
  • 所有对等体发送的路由,BGP都会接收;

BGP与IGP路由交互

BGP路由

BGP协议本身不自己发现路由,因此需要将其它路由协议发现的路由导入BGP,为了将一个AS的路由传递给另外一个AS需要在AS边缘路由器将路由导入BGP,导入方式有两种:

  • 重分发
    通过重分发的方式将其它路由协议注入到BGP路由表,BGP起源属性为imcomplete
  • network
    通过network命令逐条将已经在路由表中存在的路由引入到BGP,BGP起源属性位IGP
  • 在BGP路径选择过程中,如果前面的属性都没有选择出最优路由的话,起源属性IGP优先于重分发的imcomplete
BGP引入IGP

如果需要在AS边缘路由器将一个AS学习来的BGP路由引入IGP,请最好配置路由策略对需要引入的路由进行过滤,以免因为大量的BGP路由引入对设备性能和网络造成影响

BGP安全性

  • BGP认证
    • MD5认证:
    • keychain认证:
  • 设置TTL

BGP路由属性和路径选择

BGP只会将BGP路由表中最优的一条路由发送给其对等体。

BGP属性
  • 公认必选属性
    所有BGP设备必须能识别此类属性,并且在BGP update报文中必须包含此类属性
    • as-path属性
      当BGP给对等体发送从自身引入的路由时:
      • 当发送给它的EBGP对等体时,BGP将自身AS号添加到AP-PATH属性中发送给它的对等体;
      • 当发送给它的IBGP对等体时,BGP会在update报文中创建一个空的AS-PATH列表发送给对等体;
        当对等体传播从其它对等体的update报文中学习到的路由时
      • 当发送给它的EBGP对等体时,BGP会将自身的AS号码添加到update报文的as-path列表的前面发送给它的对等体;
      • 当发送给它的IBGP对等体时,BGP不会对update报文中的as-path属性做修改;
    • origin 属性
      此属性记录了路由是怎么进入BGP路由表的。
      使用network命令通告的路由,此属性位IGP;
      使用重分发的方式将其它路由协议重分发进BGP时,此属性位imcomplete;
      IGP属性优先于imcomplete;
    • next-hop 属性
      BGP在给它的EBGP邻居使用update报文通告路由时,下一跳属性填写为建立邻居关系时的路由更新源地址;
      BGP在将产生于自身的路由使用update报文通告给它的IBGP邻居时,下一跳属性填写为建立邻居关系时的路由更新源地址;
      BGP在将从EBGP邻居学习到的路由使用update报文通告给它的IBGP邻居时,下一跳属性不做修改;
  • 公认可选属性
    所有BGP设备必须能识别此类属性,但是BGP在update报文中不一定要包含此属性
    • local-pre 属性
      只在本AS内部传播,用来标识流量离开本AS的最佳路径;
  • 可选可传递属性
    BGP设备可能不能识别此属性,如果没有识别,任然可用接受并通告给它的对等体
    • commuity 属性
      可以使用community属性来标识相同路由策略的一组路由,便于路由策略的灵活运用;
  • 可选不可传递属性
    BGP设备可能不能识别此属性,如果没有识别,则忽略此属性并且不向它的对等体通告;
    • MED属性
      MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。
      MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理
    • originator_id 属性
      用于在路由反射器场景下标识路由的起源,当路由第一次被路由反射器反射时,添加此属性为路由的router-id,如果已经有此属性则不在做变更;当一个路由器收到的路由如果 originator_id同自身router-id相同,则丢弃此路由。
    • cluster_list 属性
      用于在多路由反射器场景下标识一个路由反射器集群,防止路由环路;一个集群中的多台路由反射器必须设置相同的cluter_list;
BGP路由选择规则:
  1. 路由优先级属性,一般为厂家自定义,本地有效;
  2. local_preference 优先选择本地优先级属性小的为最优路由;
  3. 优先选择本地产生的路由、手动聚合的路由、network进入的路由、重分发的路由;
  4. 优先选择AS-PATH最短的路由
  5. 优先选择origin属性为IGP>imcomplete
  6. 优先选择MED值小的路由;
  7. 优先选择从EBGP邻居学习到的路由;
  8. 优先选择BGP路由下一跳IGP度量值最小的路由;
  9. 如果都是从EBGP收到的路由,优先选择最早收到的路由;
  10. 优先选择cluster_list最短的路由;
  11. 优先选择router-id最小的路由;
  12. 优先选择具有最小ip address的对等体的路由;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • 外部网关协议,使用TCP作为传输层协议,支持CIDR,增量更新,距离矢量路由协议,无环路,路由策略丰富,可防止路由...
    老率的IT私房菜阅读 818评论 0 1
  • Calico 为大规模集群以及云环境的节点提供了 end-to-end 的网络互联。为此,calico 需要一个物...
    IT农民阅读 2,580评论 0 2
  • 术语含义IGP: Interior Gateway Protocol 内部网关协议,主要作用是发现和计算自治域内的...
    狗达Da阅读 821评论 0 1
  • 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,...
    srtianxia阅读 3,958评论 0 12
  • BGP BGP建立邻居采用有限状态机,有6种状态(基于TCP协议) 1. IDLE状态:BGP协议初始时的状态,在...
    superliang阅读 445评论 0 1