CE1 -- PE1 -- ASBR1 -- ASBR2 -- PE2 -- CE2这样的跨域场景, CE1上Loopback1地址模拟某个私网业务, CE2上Loopback1地址同样模拟私网业务, CE和PE之间通过OSPF完成三层互通, 采用Option C方式跨域处理.
我的理解如下:
1. PE1和PE2之间建立多跳跨域MP-BGP邻居, 它们建立邻居的前提是TCP可达
2. 这个TCP可达由PE1, ASBR1, ASBR2, PE2之间的IPv4的BGP来保证(宣告各PE的L0地址)
3. 关于路由传递过程: 只要PE1和PE2之间的L0能够TCP可达, MP-eBGP邻居能建立起来, 在各个PE上宣告或引入的路由就能到达对端PE, 路由传递没有什么特殊性和要注意的地方
4. 关于数据传递过程: CE2Loopback1地址 ping CE1Loopback1地址, CE2查表找到下一跳PE2, PE2查表下一跳CE1, 递归查表下一跳ASBR2, 域内LDP标签交换转发至ASBR2, ASBR2剥掉外层标签知道该LDP标签的目的地是PE1(不是看数据包的目的IP,即CE1的Loopback1地址), 查表下一跳ASBR1, 同时需要压入新的外层BGP标签, ASBR1收到数据包后, 查看外层BGP标签, 是找自己的, 撕掉, 接着查表去往PE1的路由,对应到LSP路径, 于是接着通过域内LDP标签交换发送至PE1, PE1剥掉两层标签, 转发至对应VRF, 数据包的目的IP也暴露出来了, 转发给CE1, 最后给Loopback 1
我的核心疑问是:
各AS域内的数据包转发是通过LDP标签完成的, BGP标签的作用在于两个ASBR之间的数据包转发, 为什么在华三的HCL模拟器实践中,
1. 所有的IPv4 BGP都要对他的邻居开启标签通告能力?
2. 为什么ASBR对内和对外都要执行apply mpls策略?(我的理解是只需要对外执行应该就足够了?对内根本用不到BGP的标签?)
3. 进而引申出来的问题是, BGP标签对两个PE来说,到底是不是透明的?
4. 最后再强调一下核心疑问, 为什么都要开启标签通告, 以及对内和对外的apply mpls-label到底产生了什么影响?
(0)
域内(如 PE1→ASBR1、ASBR2→PE2)的转发,实际也依赖 BGP Label(而非仅 LDP),ASBR 间的转发是 BGP Label 的接续。
1.华三设备中,IPv4 BGP 的 “标签通告能力”本质是让 BGP 支持传递带标签的 IPv4 路由(BGP Labeled Route) ,而非仅传递普通 IPv4 路由。这一配置的必要性源于 Option C 的 “跨域 LSP 拼接” 需求。
2.华三的 “apply mpls-label” 策略本质是为 BGP 宣告的路由强制分配一个 BGP 标签,确保路由以 “BGP Labeled Route” 形式发送给邻居。ASBR 对内、对外都需配置的原因,是 “内” 和 “外” 都需要接收带标签的路由来拼接 LSP。
你的理解 “仅对外执行足够” 是错误的,因为ASBR 对内也需要向本域 PE 传递 “跨域 PE 的带标签路由” :例如 PE1 要转发去往 CE2 的私网数据,需先递归到 PE2-Loop0,而 PE2-Loop0 的路由是 ASBR1 通过 BGP 传递给 PE1 的 —— 若 ASBR1 不对内执行 “apply mpls-label”,传递的是普通 IP 路由,PE1 无法将其与标签关联,无法通过 MPLS 转发到 ASBR1。
3.不是透明的。PE 必须知道 BGP 标签才能确定外层标签的值,否则无法完成标签封装。BGP 标签仅对 “数据转发路径中的中间节点(如 ASBR1、ASBR2)” 部分透明(中间节点只需根据外层标签转发,无需关心内层私网标签),但对 PE 不透明。
4.结合前面的分析, 若仅对外 apply、不对内 apply:本域 PE(如 PE1)无法获取跨域 PE(如 PE2-Loop0)的带标签路由,转发去往 CE2 的流量时,会因 “找不到标签” 而无法封装,流量中断。
(0)
1. “标签通告能力的本质是让BGP支持传递带标签的IPv4路由”,这个标签通告只是一个能力的声明,它不执行任何动作。 2. “华三的apply mpls-label本质是为 BGP 宣告的路由强制分配一个 BGP 标签”,所以这个命令的作用发生在路由传递过程,并且它是执行生成标签动作的关键,举个例子,比如PE1将CE1的Loop1地址通告给PE2,这个路由更新消息的目的地址是PE2的L0地址, 这条路由更新消息传递的是VPNv4路由,路由更新消息本身算数据主体,所以这条路由更新消息可以通过iGP传递给ASBR1,当ASBR1将路由更新消息传递给ASBR2时,会不会激活apply mpls-label动作,产生一个BGP标签?(按照前面说标签通告能力的定义, 我的答案是不会,因为传递的不是) 3. 路由更新消息传递给了ASBR2,ASBR2也是搬运工,直接给了PE2,PE2学到了CE1的VPNv4路由 4. BGP的标签通告和BGP标签在哪个过程产生? 在这个例子中,以ASBR1为例,当它宣告PE1的L0地址后,将该IPv4路由传递给ASBR2时,ASBR1为这条路由产生了一个标签(比如3001),ASBR2收到这条路由后学习,在自己BGP路由表中记下:去往PE1,下一跳ASBR1,记得打标签3001. 然后ASBR2再将这条路由传给PE2,PE2也要在自己的BGP路由表中记下:去往PE1,下一跳ASBR2,记得打标签3001吗?如果是,那过程到这里我就有两个问题了:第一个问题 -- ASBR2和PE2常常不是直连的,它们之间的沟通还想需要AS域内的iGP协议,运行了BGP的路由器能传递带标签的IPv4路由,其它传递这条消息的普通路由器怎么处理的呢?第二问题 -- PE2也在自己的BGP路由表下记录3001标签这个行为完全是多余的,因为PE2去ASBR2,LDP已经足够应付了,并且LDP标签也与目的地址PE1存在映射关系,当数据包从PE2走LDP发往ASBR2,ASBR2完全会知道隧道终点是PE1,然后就可以打上自己的BGP标签,这也是我为什么会认为BGP标签可以对PE透明,ASBR只需要对外打BGP标签的原因,疑惑还在,前面的思考哪里有错吗?
我已经想清楚了,上面的想法的错误点在于LDP生成了以对端PE为目的网段的LSP路径,即便是在LDP标签在本端ASBR就剥离的情况下;这样ASBR才能知道隧道终点还没到达,需要继续查表。而至少华三的实践中不是这样,在路由器里执行dis mpls lsp命令得到的协议为LDP的LSP根本就没有对端PE的L0,跨域LSP的构建还是依靠BGP。这倒也符合LDP管域内,BGP管域间的思路。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
我已经想清楚了,上面的想法的错误点在于LDP生成了以对端PE为目的网段的LSP路径,即便是在LDP标签在本端ASBR就剥离的情况下;这样ASBR才能知道隧道终点还没到达,需要继续查表。而至少华三的实践中不是这样,在路由器里执行dis mpls lsp命令得到的协议为LDP的LSP根本就没有对端PE的L0,跨域LSP的构建还是依靠BGP。这倒也符合LDP管域内,BGP管域间的思路。