LDP 用到哪些端口
LDP 使用两个通道:UDP 646 负责发现,链路 hello 发往组播 224.0.0.2(点到点链路上也可单播),另有单播的目标 hello 用于定向发现;TCP 646 负责建立会话并交换标签映射。中间的防火墙或 ACL 必须放行这两条通道,只开其中一个会出现「hello 正常、会话永远建不起」或反过来的现象。
基本信息
| UDP 646 | 链路 hello,目的 224.0.0.2,点到点链路可单播 |
|---|---|
| UDP 646 | 目标 hello,单播定向发现,跨多跳或非广播网段 |
| TCP 646 | 会话通道,交换标签映射,主动方发起连接 |
| 源地址 | 通常为本机传输地址(多为 loopback),不是接口地址 |
| 确认命令 | show mpls ldp discovery / show mpls ldp neighbor |
典型使用场景
- 跨防火墙或安全域部署 MPLS 时,需要放行 LDP 的两个通道
- 会话不 Up 时,区分发现没通还是会话被拦
- 抓包定位单向阻断:一端持续发 hello 而收不到响应
- ACL 审计:确认放行范围覆盖两端传输地址,而非仅接口地址
- 变更前评估:修改 loopback 或传输地址会改变套接字源地址
抓包与状态确认
抓包与状态确认
tcpdump -ni any port 646 -vv # 同时观察 UDP hello 与 TCP 会话
# 关注三点:
# 1) 两端是否都在发 hello(组播或定向单播)
# 2) TCP SYN 方向,以及是否收到 SYN-ACK
# 3) 只有单向可见时,多为中间设备只放行了一个方向
!
show mpls ldp discovery # 本机发现到的对端与传输地址
show mpls ldp neighbor # 会话状态与建立时间通道与用途
| 协议/端口 | 用途 | 说明 |
|---|---|---|
| UDP 646 | 链路 hello | 目的 224.0.0.2,点到点链路也可单播 |
| UDP 646 | 目标 hello | 单播定向发现,跨多跳或非广播网段 |
| TCP 646 | 会话通道 | 标签映射交换,源通常为传输地址 |
| 核对工具 | 抓包与状态命令配合 | 两端同时取证,避免单向视角 |
会话源地址通常是 loopback 传输地址:ACL 只放行接口地址时,hello 能通而 TCP 连接被中间设备丢弃,现象就是发现正常、会话不建立。
使用目标 hello 做跨多跳发现时,放行范围要同时覆盖两端传输地址与 646 端口,漏掉任何一项都会表现为单向可见。
抓包位置决定结论:在设备本机抓到的报文未必真的穿过了中间安全设备,跨网段问题要选在链路中间或两端同时取证。