【网络工程师路由篇】BGP 入门实验

基础配置

修改下一跳为自身

指定更新源IP地址

完成这个实验

EBGP多跳

学会看三张表

BGP邻居表

BGP表

路由表,display ip routing-table

基础配置

加入交流群696283186获取更多实验详细配置

R1、R2、R3属于AS 123;R4属于AS 400;

R1、R2、R3运行OSPF,运行OSPF的目的是为了打通AS 123内的路由;

R3-R4之间建立EBGP邻居关系,R2不运行BGP;

R1-R3之间建立IBGP邻居关系;

在R4上,将路由4.4.4.0/24发布到BGP。

R1的配置如下(省略接口IP地址的配置):

[R1] ospf 1 router-id 1.1.1.1

[R1-ospf-1] area 0

[R1-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.255

[R1] bgp 123#创建BGP进程,AS号为123

[R1-bgp] router-id 1.1.1.1#配置BGP Router-ID

[R1-bgp] peer 10.1.23.3 as-number 123#配置BGP邻居(指定邻居的地址及AS号),由于该邻居的AS号与本地AS号一致,因此两者之间为IBGP邻居关系。

R2的配置比较简单,就是运行OSPF而已,这部分配置不再赘述。

R3的配置如下:

[R3] ospf 1 router-id 3.3.3.3

[R3-ospf-1] area 0

[R3-ospf-1-area-0.0.0.0] network 10.1.23.0 0.0.0.255

[R3] bgp 123

[R3-bgp] router-id 3.3.3.3

[R3-bgp] peer 10.1.34.4 as-number 400#配置EBGP邻居R4

[R3-bgp] peer 10.1.12.1 as-number 123#配置IBGP邻居R1

R4的配置如下:

[R4] interface loopback 0

[R4-loopback0] ip address 4.4.4.4 24

[R4] bgp 400

[R4-bgp] router-id 4.4.4.4

[R4-bgp] peer 10.1.34.3 as-number 123

[R4-bgp] network 4.4.4.0 24#把本地直连路由network进BGP

完成上述配置后,在R3上查看BGP路由表:

[R3] display bgp routing-table

BGP Local router ID is 10.1.23.3

Status codes: * - valid, > - best, d - damped,

h -history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Total Number of Routes: 1

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 4.4.4.0/24 10.1.34.4 0 0 400 i

我们看到R3已经学习到了R4通告过来的BGP路由4.4.4.0/24。并且该条BGP路由的NextHop属性值为10.1.34.4,这个下一跳地址是路由可达的。该条路由在R3的BGP路由表里有“* >” 标记,其中“*”表示这条路由是可用的(valid),只有当BGP路由的NextHop为路由可达时,该BGP路由才会被视为可用;而“>”则表示这条路由是被优选的路由,或者说是到达该目的网络的最优路由。

BGP路由的NextHop属性是一个非常重要的属性,它是所有BGP路由都会携带的路径属性,它指示了到达目的网络的下一跳地址。

在R3上查看路由表:

[R3] display ip routing-table protocol bgp

Destination/Mask Proto Pre Cost Flags NextHop Interface

4.4.4.0/24 EBGP 255 0 D 10.1.34.4 GigabitEthernet0/0/1

R3已经将到达4.4.4.0/24的BGP路由加载到了全局路由表中。

对于R3而言,到达4.4.4.0/24的路由已经被优选,接下来,它会将该路由通告给IBGP邻居R1。

在R1上查看BGP路由表:

[R1]display bgp routing-table

Network NextHop MED LocPrf PrefVal Path/Ogn

i 4.4.4.0/24 10.1.34.4 0 100 0 400i

我们看到,R1的BGP路由表中已经出现了4.4.4.0/24路由,而这条路由的NextHop属性值是10.1.34.4,但是R1在本地路由表中没有到达10.1.34.4的路由,因此10.1.34.4不可达,如此一来,该BGP路由也就不可用了(在BGP路由表中没有*号标记),既然不可用,自然就不能装载进路由表中使用。

那么怎么解决这个问题呢?一个最简单的方法是,为R1配置一条静态路由:ip route-static 10.1.34.0 24 10.1.23.3,这样一来R1的路由表里就有了到达10.1.34.4的路由,那么BGP路由4.4.4.0/24的下一跳地址就可达了,对应的BGP路由自然也就可用了。但是这种方法太“笨拙”。另一种方法是,在R3的OSPF进程中将10.1.34.0/24网段也注入进去,使得R1能够通过OSPF学习到10.1.34.0/24路由,这种方法也是可行的。但是由于R3-R4之间的互联链路被视为AS外部链路,因此10.1.34.0/24作为外部网段往往不会被宣告进AS内的IGP。那么还有什么其他办法能解决这个问题么?

修改下一跳为自身

BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。如下图所示,R4将4.4.4.0/24通告给R3时,下一跳为10.1.34.4,也就是R4的GE0/0/0接口地址。

BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。

BGP路由器在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

例如下图所示,R3收到R4通告的EBGP路由,该路由的下一跳属性值为10.1.34.4,它将该条路由通告给IBGP对等体R1的时候,路由的下一跳属性值不会发生改变,仍然为10.1.34.4。

加入交流群696283186获取更多实验详细配置

这就造成了我们上面所述的问题,由于R1没有到达10.1.34.0/24的路由,因此下一跳地址10.1.34.4不可达,从而导致BGP路由4.4.4.0/24不可用。

还有一个方法可以解决这个问题:在R3上使用next-hop-local命令,可修改BGP路由的下一跳属性值为自身。在下图中,我们在R3上增加了peer 10.1.12.1 next-hop-local命令,那么这样一来,当R3再将EBGP路由通告给R1的时候,会将这些路由的下一跳属性值修改为自己的更新源地址(10.1.23.3),而R1已经通过OSPF获知到达10.1.23.0/24的路由,因此10.1.23.3是可达的。

完成配置后,我们在R1上查看BGP路由表:

加入交流群696283186获取更多实验详细配置

指定更新源IP地址

可以手工指定用于建立BGP连接的源接口及源IP地址。命令如下:[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ]缺省情况下,BGP使用报文的出接口作为BGP报文的源接口。当用户完成peer命令的配置后,设备会在自己的路由表中查询到达该对等体地址的路由,并从该路由得到出接口信息。如果peer命令中没有指定接口(connect-interface)和IP地址(ipv4-src-address),那么设备将会使用前述出接口和该接口的IP地址作为BGP报文的源接口和源地址。

为了使物理接口在出现问题时,设备仍能发送BGP报文,可将发送BGP报文的源接口配置成Loopback接口。在使用Loopback接口作为BGP报文的源接口时,必须确认BGP对等体的Loopback接口的地址是可达的。由于一个AS内往往会运行IGP协议,因此AS内的设备能够通过该IGP协议获知到达其他设备的Loopback接口的路由。在AS内部,IBGP邻居关系通常基于Loopback接口建立。

EBGP邻居之间通常使用直连接口的IP地址作为BGP报文源地址,如若使用环回接口建立EBGP邻居关系,要配置peer ebgp-max-hop命令,允许EBGP通过非直连方式建立邻居关系。

加入交流群696283186获取更多实验详细配置

同样是上面的环境,我们稍作变更,在R1及R3上创建loopback0,地址分别为1.1.1.1/32及3.3.3.3/32,然后设备各自将loopback0宣告进OSPF,使得彼此都能通过OSPF学习到对方的Loopback0路由。

我们修改BGP的配置,使得R1-R3之间的IBGP邻居关系基于Loopback0来建立。

R1的关键配置如下:

[R1] Interface loopback0

[R1-Loopback0] ip address 1.1.1.1 32

[R1] bgp 123

[R1-bgp] peer 3.3.3.3 as-number 123

[R1-bgp] peer 3.3.3.3 connect-interface LoopBack 0

R3的关键性配置如下:

[R1] Interface loopback0

[R1-Loopback0] ip address 3.3.3.3 32

[R1] bgp 123

[R1-bgp] peer 1.1.1.1 as-number 123

[R1-bgp] peer 1.1.1.1 connect-interface LoopBack 0

[R1-bgp] peer 1.1.1.1 next-hop-local

注意,务必要将R1及R3的Loopback0接口激活OSPF。

完成这个实验

经过前面的讲解,我们的环境现在是这样的:R1-R3之间建立了基于Loopback接口的IBGP邻居关系;R3对R1配置了next-hop-local;R3与R4之间仍然维持基于直连接口的EBGP邻居关系;R4在BGP中发布路由4.4.4.0/24。

现在R1是能够学习到BGP路由4.4.4.0/24的,并且该路由也是被优选的,此时这条路由会被R1装载进全局路由表使用,但是,这是不是意味着R1就能够ping通4.4.4.4了呢?经过测试你可能会发现:无法ping通?因为数据包在R2这里就被丢弃了,R2并没有运行BGP,因此它无法学习到BGP路由4.4.4.0/24。

怎么才能让R1 ping通4.4.4.4呢?方法之一是在R3上将BGP路由重发布进OSPF,使得R2能够通过OSPF学习到BGP路由4.4.4.0/24,但是这种方法存在一定的风险,因为我们知道BGP承载的前缀数量往往是非常庞大的;另一种方法是,让R2也运行BGP,并与R1、R3建立IBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了如下图所示。具体配置此处不再赘述。

EBGP多跳

通常情况下,EBGP邻居之间必须具有直连的物理链路,EBGP邻居关系也将基于直连接口来建立,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。

peer ebgp-max-hop命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。命令格式如下:[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]

加入交流群696283186获取更多实验详细配置

如上图所示,R1及R2要基于Loopback口建立EBGP邻居关系。这种情况也属于EBGP邻居之间不基于直连接口建立邻居关系的场景,必须配置peer ebgp-max-hop命令。图中R1与R2之间的两条物理链路是为了冗余性考虑。R1的关键配置如下:

[R1] bgp 64512

[R1-bgp] peer 2.2.2.2 as-number 64513

[R1-bgp] peer 2.2.2.2 ebgp-max-hop 2

[R1-bgp] peer 2.2.2.2 connect-interface loopback0

[R1] ip route-static 2.2.2.2 32 10.1.10.2

[R1] ip route-static 2.2.2.2 32 10.1.20.2 80

R2的关键配置如下:

[R2] bgp 64513

[R2-bgp] peer 1.1.1.1 as-number 64512

[R2-bgp] peer 1.1.1.1 ebgp-max-hop 2

[R2-bgp] peer 1.1.1.1 connect-interface loopback0

[R2] ip route-static 1.1.1.1 32 10.1.10.1

[R2] ip route-static 1.1.1.1 32 10.1.20.1 80

学会看三张表

BGP邻居表

BGP表

查看BGP条目的详细信息:

路由表,display ip routing-table

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容