bgp 路由选路练习题
时间: 2025-01-08 17:44:55 浏览: 3
### BGP路由选路练习题
#### 题目一:理解BGP路径属性的影响
给定两个到达同一目的地的BGP路径,其路径属性如下:
| 属性名称 | 路径A | 路径B |
|----------|-------------|--------------|
| 下一跳 | 192.0.2.1 | 198.51.100.1 |
| AS_PATH | 65001 65002 | 65003 65004 |
| ORIGIN | IGP | EGP |
| MED | 100 | 20 |
根据标准的BGP路径选择算法[^1],哪条路径会被优先选择?
```python
def select_bgp_path(path_a, path_b):
# 假设path是一个字典结构存储上述表格中的数据
# 检查下一跳可达性 (假设都可达)
# 比较权重(这里省略因为题目未提供)
# 比较本地优先级(同样省略)
# 如果存在联盟内部AS,则更偏好短AS_PATH长度
as_path_length_a = len(path_a['as_path'].split())
as_path_length_b = len(path_b['as_path'].split())
if as_path_length_a != as_path_length_b:
return "Path A" if as_path_length_a < as_path_length_b else "Path B"
# 当ORIGIN类型不同,IGP优于EGP
origin_preference = {"IGP": 1, "EGP": 2}
if origin_preference[path_a['origin']] != origin_preference[path_b['origin']]:
return "Path A" if origin_preference[path_a['origin']] < origin_preference[path_b['origin']] else "Path B"
# 对于来自相同邻居的不同MED值,较低者胜出
med_value_a = int(path_a.get('med', float('inf')))
med_value_b = int(path_b.get('med', float('inf')))
if med_value_a != med_value_b and path_a['next_hop'] == path_b['next_hop']:
return "Path A" if med_value_a < med_value_b else "Path B"
# 更多规则...
```
在此情况下,由于`AS_PATH`较短以及具有更高的`ORIGIN`优先级,因此会优选路径A。
#### 题目二:配置BGP策略以影响流量工程
为了实现特定业务需求,网络管理员希望调整某些前缀通过指定出口发送出去。为此目的,在路由器上应用了以下命令序列来设置社区列表并关联到相应的路由映射中去:
```shell
ip community-list standard OUTBOUND permit 65001:123
route-map SET_OUTGOING set community no-export
route-map SET_OUTGOING match community OUTBOUND
router bgp 65001
neighbor X.X.X.X route-map SET_OUTGOING out
```
解释这段配置的作用是什么?如何验证这些更改已经生效?
此配置片段定义了一个名为`SET_OUTGOING`的路由映射,它匹配携带自定义团体属性`65001:123`的所有BGP更新消息,并将它们标记为不应被通告给其他自治系统(即设置了no-export标志)[^2]。要确认变更效果可以使用调试工具或查看相邻设备接收到的具体路由信息是否带有预期的团体属性标签。
阅读全文