- 任何一条BGP路由都拥有多个路径属性(Path Attributes),当路由器通告BGP路由给它的对等体时,该路由将会携带多个路径属性,这些属性描述了BGP路由的各项特征,同时在某些场景下也会影响BGP路由优选的决策。
- IBGP水平分割规则用于防止AS内部产生环路,在很大程度上杜绝了IBGP路由产生环路的可能性,但是同时也带来了新的问题:BGP路由在AS内部只能传递一跳,如果建立IBGP对等体全互联模型又会加重设备的负担。 说人话:BGP水平分割带来的问题通过RR反射器来解决
BGP路由的路径属性:
1.每一条BGP路由都会携带路径属性
2.每条BGP路由根据因素的影响会导致路径属性值有所变化 人为,或者传递过程中的属性
- 任何一条BGP路由都拥有多个路径属性。
- 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性。说人话就是BGP路由的属性随着路由的转发而转发 cost 下一跳什么的
- BGP的路径属性将影响路由优选。
路径属性分类
- 公认属性是所有BGP路由器都必须能够识别的属性
- 公认属性可以分为两类:
- 公认必遵(Well-known Mandatory):必须包括在每个Update消息里。
- 公认任意(Well-known Discretionary):可能包括在某些Update消息里。
- 可选属性不需要都被BGP路由器所识别
- 可选属性可以分为两类:
- 可选过渡(Optional Transitive):BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体。
- 可选非过渡(Optional Non-transitive):BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体。
路径属性:
1.公认必遵:不同厂商设备都需要识别并传递的属性
1.as-path:用于记录路由经过AS的路径信息 (具备 选路 和 防环 功能) 就是用来记录是从哪个AS传递过来的是不断叠加的
1.有序AS:依次记录经过的AS路径,可以通过路由策略进行修改
2.无序AS:在手工聚合(路由汇总)时,如果添加AS-set参数,则会将明细的路由的as-path放入到as-set中,使用{ }表示 做了路由汇总后会出现的值
做了汇总的那台设备的AS号不会出现在小括号内
3.联盟内有序AS
4.联盟内无序AS
*选路:优选AS-path路径短的 说人话就是选择经过AS少的
*防环:当从EBGP邻居学习到路由后会检查该路由携带的AS-path值有没有自身所在的AS,如果有则丢弃该路由 只有EBGP会检查检查带有自己的AS就丢弃
当从IBGP邻居学习到路由后不会检查AS-path 说人话就是IBGP的不检查
*每经过一个AS,都会在BGP路由属性AS-path中从左到右依次填写(标注)自身的AS编号
只有发出的会打上AS path
#
route-policy as permit node 10 配置路由策略
apply as-path 10 20 30 additive 给发出到某个方向的BGP路由携带AS 10 20 30 发出时改 一般只会发出时改
接收时改
[AR4-bgp]peer 10.1.45.5 route-policy as export 使能路由策略
[AR4-bgp]peer 10.1.45.5 allow-as-loop 1 可以允许和自身AS相同的路由做接收 就是有和我一样的AS我也接收 可以允许10个
Dis bgp rou
2.origin:用于标记一条路由最初的生成方式 (具备 选路 功能) 起源属性
1. i:IGP,通过network方式通告的路由 不是IGP协议
2. e:EGP,通过EGP协议通告的路由 就是EGP协议 修改方法在起源修改
3. ?:incomplete,通过import方式引入的路由 就是外部路由 OSPF ISIS啊什么的
*选路: i > e > ?
---------------------- *对于起源属性如果没有手工操作,则该属性不会改变-----------------------------------
3.next-hop:表示去往目的网络的出口
1.将自身产生的路由信息传递给邻居时,下一跳携带为更新源地址(自身和邻居建立邻居关系的接口IP地址)
2.从IBGP/EBGP邻居学习的路由,传递给EBGP邻居时,下一跳携带为更新源地址
3.从EBGP邻居学习的路由,传递给IBGP邻居时,下一跳不变(修改next-hop-local 命令修改) [AR3-bgp]peer 1.1.1.1 next-hop-local
4.从IBGP邻居学习的路由,传递给IBGP邻居时(虽然存在水平分割)---------------------------------------
------ ----- 但是如果路由可以在AS内部传递时,默认不修改下一跳属性 从IGP到IBGP-------------
自身产生----------下一跳0.0.0.0的
2.公认任意:不同厂商设备都需要识别但根据需求设置是否传递
1.local-preference:本地优先级 (具备 选路 功能) 只做选路
1.默认值为100,值越大越优先 下图中优先级值(同一个AS内)看不见的,就默认为100
2.只在本AS内生效,传递给EBGP邻居设置为默认值 只在本地生效
*在AS内存在双出口,影响本AS内设备选择出口 说人话:下图中AR1去往AR4有两条路径,AR3 AR6,设置哪个的优先级值大AR1就从(AR3 AR6之间)去往AS200
*EBGP邻居发出时不能修改本地优先级值
*EBGP邻居接收时可以修改本地优先级值
*IBGP邻居发出、接收时都可以修改本地优先级值
EBGP邻居是不传本地优先级属性的,但是能在入方向做路由策略做更改
本地优先级值使用方法
2.Atomic_aggregate:原子聚合 (告警信息) 告警汇总路由的AS和设备
1.当手工聚合路由后,如果抑制了明细路由的转发,就会在聚合路由中携带该属性 ::就是配置了路由汇总,不转发明细路由了就会标明自己是一条汇总的路由高数别人我是汇总后的路由
2.标识了路由是抑制明细路由的,不精确的 说人话就是标识自己是汇总路由 没做路由汇总就不会产生院子聚合字段
先做汇总
AR3上查看汇总路由明细
<AR3>dis bgp routing-table 100.4.4.0 vb
3.可选过渡:不同厂商设备可以选择性识别但要求可以传递属性
1.aggregater:聚合者(告警信息)
1.执行聚合的设备,会将自身的AS号 和 router id 放入该属性中
(告诉其他设备,该聚合路由是哪做的汇总,谁做的汇总)
2.community:团体属性 (标记一条路由信息) 重要 类似于tag BGP里面有专门做路由标记的,叫做团体属性
1.route tag 每条路由只能携带一个
2.团体属性用于标识一类具有相同特征的路由信息 比如奇数路由 偶数路由
3.一般使用AA:NN格式 ,也可以使用数字表示
假设如果现在有ABC 3个部门 A只接受奇数的路由 B只接收偶数的路由 C接收奇偶数的路由 那么给奇数的路由打上tag 100 偶数打上tag 200 C打上tag100 200
但是但TAG难以满足多个标记 ,添加团体属性可以标记多个 例如给奇数路由标记1:2 1:3 1:4可以标记多个标签
假设 C只想要1.1 和1.2 匹配时会匹配tag 100 200 但是又把1,3匹配进去了,团体属性能匹配给 1.1.1.1匹配1:1 1:2 2:2 2:1 1:1 3:1之后就好匹配
说人话:团体属性就是,不同条件(奇偶等等)的路由条目的一个集合标识 1:1什么的,携带很多属性,根据这些属性去找自己想要的路由
男性(A)还是女性(B),成年(C)还是未成年(D),10岁以下(E) 30岁以上(F)还是? 可以打上多个标签然后匹配
男性 成年 30岁以上则匹配 A C F
*作用:
1.使用自定义的配置来实现路由的标记
使用自定义团体属性实现 ,想做路由信息的匹配是根据我自己设定的值来决定哪些接收哪些不接收,想自己来选择
AR4有三条路由,AR3只想接收.5的路由不接收4和6的, 在AR4发送出去的时候,给路由条目携带一定的属性值比如让100.4携带1:1 100.5携带1:2的值 100.6携带1:3的值,AR3再通过这些团体属性值来决定做哪些信息的匹配
通过 路由策略 为不同的路由打上不同的自定义团体属性值
可以匹配多个
在AR4上通告携带这样的团体属性值
Dis rou 100.4.4.4
如果是配置向邻居发布的时候携带团体属性则在向邻居发布的时候使能router-policy
AR4发布环回口100.4.4.5携带团体属性
BGP团体属性过滤
1是名称
#
ip community-filter 1 deny 200:200 写一个团体属性 拒绝200:200团体属性的路由
#
route-policy 123 permit node 10 路由策略
if-match community-filter 1 匹配团体属性
#
bgp 100
peer 3.3.3.3 route-policy 123 import 在BGP使能的时候使用 在AR1向AR3通告是使能
100.4.4.4/32 <0:1234>, <1:1>, <200:200>
100.4.4.5/32 <2:1>, <2:2>, <200:1>, <200:200>
100.4.4.6/32 <1:1>, <2:2>, <200:200>
#
ip community-filter 1 permit 1:1 允许携带有标签1:1的通过
ip community-filter 1 deny 2:2 拒绝标签2:2
#
route-policy 123 permit node 10
if-match community-filter 1
#
bgp 100
peer 3.3.3.3 route-policy 123 import 在AR1向AR3通告是使能
因为router-policy是默认拒绝的所以会拒绝标签2:2的路由允许放行1:1
因为优先匹配所以携带有1:1标签的100.4.4.6也放行了
2.限制路由信息传递的范围:
1.no-export:4294967041,只传递给IBGP邻居
2.no-advertise:4294967042,不传递给任何邻居
3.no-export-sub:4294967043,不向其他AS发送该路由(包含联盟内AS)
4.internet:0,默认的团体属性,传递给任何邻居
BGP公认的团体属性见表1。
团体名称 | 团体标识 | 说明 |
Internet | 0(0x00000000) | 缺省情况下,所有的路由都属于Internet团体。具有此属性的路由可以被通告给所有的BGP对等体。(默认的团体属性,传递给任何邻居 ) |
No_Export | 4294967041(0xFFFFFF01) | 具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。(只传递给IBGP邻居) |
No_Advertise | 4294967042(0xFFFFFF02) | 具有此属性的路由在收到后,不能被通告给任何其他的BGP对等体。(不传递给任何邻居) |
No_Export_Subconfed | 4294967043(0xFFFFFF03) | 具有此属性的路由在收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。(不向其他AS发送该路由(包含联盟内AS) ) |
表1 BGP公认团体属性
使能策略
昨晚策略之后产看AR4的
*团体属性值在传递过程中需要指定转发,即需要发送带有团体属性设备向邻居通告时具备通告的能力 说人话就是发布的时候得向邻居通告团体属性
[AR4-bgp]peer 10.1.34.3 advertise-community :通告团体属性 告诉邻居我这条路由是携带团体属性值的
有相同属性的团体更容易执行策略在全网的发布
4.可选非过渡:不同厂商设备可以选择性识别可以不传递属性
1.med:多出口鉴别器 (具备选路功能)
1.就是BGP路由的开销值 MED值就是BGP路由的开销值
2.network通告的路由开销值为0 ,import引入的路由 MED默认为协议路由的开销 比如OSPF的开销是3那BGP引入的时候开销值就是3
3.MED可以传递两个AS(本AS+对端AS) 说人话就是AS 100的MED可以传到200 但是200不能传给300
4.作用:是影响对端AS选择出口访问的 和本地优先级相反的,是影响对端选路的,给对端选择最好的出口的 就是我给你选择我想让你发出的路,携带的开销小的那条就是我给你选择发给我的路径
*可以在任意邻居任意方向执行MED值的修改
*如果从不同的AS学习路由的MED,是不做比较的
[AR3-bgp]compare-different-as-med 设置可以允许不同AS的MED值作比较
2.originator-id
3.Cluster-List