BGP(边界网关协议)是一种路径矢量路由协议,用于传输自治系统间的路由信息,BGP在启动的时候传播整张路由表,以后只传播网络变化的部分触发更新,BGP采用TCP连接传送信息,目的端口号179
①. AS : 公有和私有,(2byte)0-65535,64512以后是私有,公有AS永远不会冲突
②. 浮动路由只能做到主备,BGP可以做到选路负载
③:访问百度http(tcp 443)不需要直连,同理BGP连接
④:show tcp br 谁先发起,连接到对端179,增量触发更新
基本信息
①. 收到路由未必会通
②. metric只是属性,是IGP的metric,不会累加,不产生路由
③. 别人传递local-preference会显示,不显示默认100
④. 公有AS与ISP的AS建立连接,私有AS不会和ISP建立连接
⑤. 默认情况下永远无法负载,规则最后比较ip地址,可以人工开启负载
⑥. AS_PATH : 经过的AS,若带有自己的AS号肯定不收
⑦. 只能控制自己流量怎么选路去其他AS,无法控制其他AS流量
⑧. 3张表:邻居表peer,BGP表(每条路由都带属性),路由表
⑨. network可以宣告路由表里有的,还可以重分布
⑩. 只要TCP建立连接,(即为可达)环回接口只有ios故障才会断,所以更稳定
#注意:两端都要改
• BGP标记128bit(全是1)
• 报文长度:16bit
• 类型:8bit(1:open,2:update,3:notification,4:keepalive,5:route-fresh)
报文
BGP头部+BGP功能
①. open:启动BGP,不会发open报文,等完成TCP连接才发,hold-time和router-id,建立邻居关系,版本4(8bit)as(32bit),保持时间(16bit),路由器router-id(32bit),hold-time180s,可以协商,以小为准
②. Keepalive报文:空包,只有头部,60s发一次,防止邻居断掉,180s收不到认为邻居死了,同意open回复keepalive,hold-time的三分之一,比较keepalive时间取小的
times bgp 0 0 (keepalive,holdtime)
③. update报文撤销和更新[nlri:1.1.1.1/32,路径属性:描述nlri属性,withdraw路由] 二元组(mask长度,前缀1.1.1.1)可一次性通告多个nlri,但必须携带相同属性
④. notification报文,有一点点错,直接回到原始状态
⑤. refresh:请求对等体发送update,经常在软清除in方向
active前建立TCP连接,连接成功后发open报文
idle、
connect
active
open-sent
open-confirm
est(收到邻居的keepalive)
①. 不匹配的route-map直接丢弃,需要permit 20,如果修改rout-map5到10,需要clear ip bgp in
②. AS号写错了,会刷机,两台有一台刷机,将好的一台接口关闭
③. EBGP默认用直连建,因为TTL默认是1
④. 手动将路由宣告到BGP表进去,必须是路由表有的,mask严格匹配,注意环回口32,代表可以传给邻居
⑤. Show ip bgp summary可以看时间记录确认邻居,show ip bgp查看数据库表
⑥. 从EBGP接受的路由需要传给IBGP需要将吓一跳改成自己
⑦. EBGP的AD=20,建立邻居必须直连
⑧. IBGP的AD=200
⑨. 没调优可能是下一跳不可达,路由表里没有
⑩. 更新源默认直连物理接口,建立IBGP邻居,修改更新源为loop0
11. EBGP的TTL=1,想让环回口建邻居方法,修改TTL,和关闭直连检测
12. 通过EBGP学来的路由,通告的所有BGP邻居
13. 从IBGP学来路由,不会通告给IBGP邻居,原因是水平分割,默认会通告给EBGP
14. 刷新路由表:Clear ip bgp * soft in
属性
①. origin(必须有)
②. As-path(必须有)
③. next_hop(必须有)
④. med(可选非传递,metric)
⑤. Local-preference(自决定)
公认必选:(每一个nlri必须携带,不携带直接将nlri扔掉)origin,next-hop,as-path
公认可选:(所有厂商路由器都认识)local-preference
可选传递:(虽然不认识这个参数,但是可以传给邻居)
可选非传递:(不认识,直接扔掉)
选路规则
①. weight(0-65535)高为优,本地路由器有效,永远不会传出去,本地始发路由默认值32768,其他收到默认0,
只能在内存修改weight,只能做在收其他路由的方向,指邻居改,或route-map的set改,调用时in方向,都用route-map生效
②. Local-preference 大为优,在本as有效,默认100,bgp default local-preference 100
同一AS可以传递,同一AS可入可出,不同AS只能入in
③. (下一跳0.0.0.0为优)自己network的比传递过来的优
④. AS-path 穿越的AS少,增加AS号在IBGP之间不好使,同一AS之间可以为空(out方向/in方向)
(重复指定次数避免环路风险)set as-psth prepend last-as 5
(忽略as比较直接比下一个规则)bgp best path as-path ignore
⑤. origin(i(network引进来)>e>?重分布)
⑥. med小为优 默认是0,与local-preference正好相反是out方向bgp bestpath compare-routerid
本地始发可以带med传给任何人,不在一个as不会比较med,(必须比较)bgp always-compare-med
(当没有med属性按最差处理)bgp beatpath missing-as-worst
⑦. 比路由:EBGP > IBGP
如果是IGP,比到达下一跳的metric小为优
如果是EBGP,比谁存在的时间uptime长(bgp bestpath compare-routerid)
⑧. 此时可以手工开启负载,默认关闭,继续向下比较
⑨. router-id小为优。若存在rr,比较originate-id小为优,若相同,比较cluster-list
⑩. ip小为优
命令:
①. neighbor 12.1.1.2 weight 0
#过滤AS,允许网段在16-18的进入,需要做在传递路由器的out方向
ipv6
对等体组:(多用于全互联)
IGP和BGP不能放在一组,复制粘贴到其他组
①. 建立一个组,neighbor 组名peer-group
②. 将组指向一个AS,neighbor 组名 remote AS
③. 把所有组成员放到组内,neighbor 1.1.1.1 peer-group 组名(如果是IBGP建议把自己写进去)
④. Neighbor 组名 next-hop
⑤. show bgp ipv4 unnicast summary(汇总表)
ip as-path acess-list 1 deny ^23
neighbor 33.3.3.3 filter-list 1 in
(凡是300as产生的)^300_
(凡是300结尾的)_300$
No bgp ipv4 unica
在ipv6地址家族加激活ipv4邻居,会得到乱的ipv6地址,需要在地址家族下,route-map修改下一跳,是自己的ipv6地址,注意双向都要做
Show bgp ipv4/ipv6 unicast
Address-family ipv6 unicast
Ipv6只能做out方向,不能做in方向
EBGP之间才会用认证
show ip cef 5.5.5.5
(创建对等体组)neighbor ccie peer-group
(为组设定邻居)neighbor ccie remote-as 300
(为组设立更新)neighbor ccie update-source Loopback0
neighbor 4.4.4.4 peer-group ccie
neighbor 5.5.5.5 peer-group ccie
neighbor 6.6.6.6 peer-group ccie
积累,可以看到自己收到的和没有发出去的信息 :debug ip bgp up
查看收到的bgp路由:show ip bgp neighbor 12.1.1.2 received
查看自己发给邻居的路由:show ip bgp neighbor 13.1.1.1 advertise(需要开启)
修改AD: distance bgp/mbgp EBGP IBGP
关闭邻居关系;nei xxxx shutdown
查看特定邻居的路由:nei xxxx soft-reconfiguration inbound
show nei x’x’xx received-routes
show ip bgp nei xxxx advertised-routes 查看通告给
• BGP聚合会丢失 as
• 不会计算路由
• 运行bgp是179号端口会被打开
报头19字节(16marker标记)
open报文:
①. as:1字节
②. hold-time:2字节
③. router-id:4字节
④. option长度:1字节
keepalive报文
①. 收到keepzlive会重置hold-time
update报文
①. 属性:2字节
refresh报文
①. AFI:家族标识符(2字节),入口策略变化,会向对等体发送更新
两个as之间不能跑igp的原因是整个互联网会有所有的路由
BGP传递协议:ipv4,vpnv4
nlri仅对ipv4单播生效
1台路由器只能有一个进程,但可以有多个地址家族
Eigrp可以router-id一样,但不传路由
ipv6在eigrp不配置router-id邻居起不来
TS::route-map被修改下一跳
BGP默认关闭自动汇总,EIGRP也是,默认关闭
开启同步,关闭同步若果下一跳不可达也不会从i到e
同步:是igp和bgp的同步
no bgp default ipv4-unicast 关闭ipv4单播功能(若在邻居建完之后,敲自动激活,若在邻居建立起来之前敲,需要进入地址家族手动敲)
(进程下)address-family ipv4
前面:i是ibgp学过来,不写是ebgp,或者本地始发
路由带原子属性,是因为有as丢失,聚合的原因,手动加as-set(无序),原子属性消失
bgp重分布到ospf时需要敲一条命令才能让ibgp进去
①. 排序,择优
②. 防环路
③. 聚合
(进程下)bgp redistribute-internal才会让从IGP学到的
BGP汇总
默认给明细全部通告
丢失明细as,多一个原子属性(as-set把所有丢失的as认为是一个),原子属性必须携带
suppress-map:用 acl抓不想给的,route-map调用acl,手工汇总时调用depress-map,depress-map调用route-map
(不想给的抓出来)先用summary-only传递时只显示汇总路由
unsuppress:,用acl把想要的抓出来,route-map,指邻居的时候调用unsuppress-map
(不要所有,在把想要的放过)
aggregate-address + 参数
show ip bgp
汇总
ip route 1.0.0.0 0.0.0.0 null0
redistribute static()
下放默认路由
(进程下)default-information-originate+重分布静态+0.0.0.0 0.0.0.0
(进程下)neighbor address+ default-information
BGP过滤
分发列表:可以在进程或指邻居使用^$值允许自己as过去
_23_分隔符,经过某一as
(在配置neibour之气,要进入地址家族敲active)no bgp default ipv4-unicast
community属性:
(传递community)neibor 2.2.2.2 send-community
共有community
私有community
两种格式:
①. 32bit单独数字
②. 16bit的两个65535:65535(默认不开启)
两种属性
①. 标准community
②. 扩展community
团体列表抓取
ip community-list (标准和扩展)抓取community
ip bgp-community new-format(以:格式显示)
RR
路由反射器知道自己是反射器,client 不知道自己是反射器
反射器传递规则
从EBGP会发给client和非client
从client会发给client和非client
从非client学来发给client
簇:一台路由反射器和自己client组成cluster,里面会有簇id,默认为rr的router-id
起源id在rr条件下生效
rr环境下修改下一跳不生效
联邦ebgp可以携带local-preference
router 联邦AS
bgp confederation identifiter 自己真实as
bgp confederation peers 联邦as
dampening
每当路由不稳定,惩罚值增加,不会发给邻居
只能配置在EBGP传来路由
(查看抑制)show ip bgp dampening parameter
orf
只在地址家族下配置,只支持IP v4和IPv6
下一跳发生改变时,会触发重新选路,默认开启,手动开启bgp nexthop trigger enable
bgp fast-ecternal-fallow 开启快速切换
nei 1.1.1.1 maximum-presfix 5 最大门限值
后门路由
net 33.3.3.0 mask 255.255.255.0 backno(选路不选ebgp)
bgp redistribute-internal(默认ibgp不会重分布进igp)
(进程下)nei 1.2.2.3 advertise-map adv exist-map exi(route-map)不存在不通告(存在通告)
no-exist-map 不存在通告,存在不通告
IGP和IBGP同步,必须满足一条路由igp和ibgp都学到
(进程下)synchronization
对等体模板
templete peer-session NAME
templete peer-policy NAME
继承模板:neighbor xxxx inherit peer-session(进程下)/peer-policy(地址家族下) NAME
本地优先级
default-originate
dafault-information-originate
network
redistribute
aggregate汇总