AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1714590
Accepted
tryingToLearn
tryingToLearn
Asked: 2022-04-05 23:22:21 +0800 CST2022-04-05 23:22:21 +0800 CST 2022-04-05 23:22:21 +0800 CST

Traceroute 输出:正确的路径是什么?

  • 772

我正在尝试从 traceroute 输出中了解和绘制网络路径。示例输出如下所示:

假设我想绘制第三跳和第四跳之间的路径。假设不同级别的ip之间会有有序的映射是否正确?

这意味着数据包将从第 3 跳的第一个 ip (et-0-0-2.mpr01.mtlcx03.fibernoire.ca) 到第 4 跳的第一个 ip(et-0-0-4.cre01.mtl1981.fibernoire.ca) ) 并且第二个数据包将从 hop3 的第二个 ip (et-0-0-3.mpr01.mtlcx03.fibernoire.ca) 到第二个 ip (et-0-0-4.cre01.mtlsunl.fibernoire.ca)跳4?这将持续到下一跳?

或者在级别 7 和级别 8 之间的第二个示例,是否保证数据包仅从52.94.82.32到52.94.81.193并且另一个数据包从52.94.81.134到52.94.81.191?

| #  | Hostname                              | Loss% |  Snt | Last |  Avg | Best |  Wrst |
+----+---------------------------------------+-------+------+------+------+------+-------+
| 1  | 192.168.1.1                           |  72.8 | 2220 |  3.2 |  2.0 |  0.6 |  34.4 |
| 2  | CUST01-C1.asr02.mtl1080.fibrenoire.ca |   0.0 | 2220 |  2.0 |  3.6 |  1.6 |  51.0 |
| 3  | et-0-0-2.mpr01.mtlcx03.fibrenoire.ca  |   0.0 | 2220 |  1.4 |  4.5 |  1.0 |  66.7 |
|    | et-0-0-3.mpr01.mtlcx03.fibrenoire.ca  |       |      |      |      |      |       |
| 4  | et-0-0-4.cre01.mtl1981.fibrenoire.ca  |   0.0 | 2220 |  1.2 |  5.6 |  1.1 |  84.9 |
|    | et-0-0-4.cre01.mtlsunl.fibrenoire.ca  |       |      |      |      |      |       |
| 5  | et-0-0-2.mpr02.mtlcx03.fibrenoire.ca  |   0.0 | 2220 |  1.4 |  5.6 |  1.2 | 135.0 |
|    | et-0-0-3.mpr02.mtlcx03.fibrenoire.ca  |       |      |      |      |      |       |
| 6  | 52.95.219.62                          |   0.0 | 2220 |  3.3 |  4.3 |  1.1 |  78.2 |
| 7  | 52.94.82.32                           |   0.0 | 2220 |  2.7 |  4.4 |  1.8 |  67.4 |
|    | 52.94.81.134                          |       |      |      |      |      |       |
| 8  | 52.94.81.193                          |   0.0 | 2220 |  7.8 |  3.3 |  1.4 |  56.3 |
|    | 52.94.81.191                          |       |      |      |      |      |       |
| 9  | 52.94.82.69                           |   0.0 | 2220 | 28.2 | 26.4 | 22.4 |  60.5 |
|    | 54.239.44.18                          |       |      |      |      |      |       |
| 10 | 150.222.242.150                       |  48.6 | 2220 | 28.9 | 26.4 | 22.3 |  50.5 |
|    | 150.222.242.118                       |       |      |      |      |      |       |
| 11 | 150.222.242.150                       |  89.1 | 2220 | 28.9 | 26.1 | 22.4 |  37.7 |
|    | 150.222.242.152                       |       |      |      |      |      |       |
networking traceroute
  • 1 1 个回答
  • 55 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2022-04-05T23:47:30+08:002022-04-05T23:47:30+08:00

    是保证只从 52.94.82.32 到 52.94.81.193 的数据包和从 52.94.81.134 到 52.94.81.191 的另一个数据包

    tl;博士:不,不能保证。

    这些地址是否以任何特定顺序显示实际上取决于您使用的跟踪路由程序。每个人都做自己的事情。(他们甚至可能使用不同类型的探针进行跟踪——例如,Windows tracert 仅使用 ICMP 探针,Linux traceroute 更喜欢 UDP,除非另有说明,在您的情况下,它们将显示略有不同的路径。)

    但总的来说,您正在查看的是 ECMP(等价多路径)路由的结果,例如,跃点 2 的路由器在跃点 3 的两个网关之间有 50%:50% 的选择。(然后跃点 3 可能还使用 ECMP 并在两个网关之间为跃点 4 做出另一个独立的选择......所以它可能不仅仅是 2 条路径,而是许多可能的组合。)

    这种选择是基于数据包头做出的,试图确保属于同一“连接”的所有数据包都将通过相同的路径——这通常意味着硬币翻转是基于源/目标 IP 地址和 TCP/UDP 端口。(例如,在其他一切都相同的情况下,发送到奇数端口的数据包可能走路径 A,而偶数端口走路径 B。)

    (请注意,每一跳都做出完全独立的路由决策——网关 A 可能有一个基于 IP+端口的 2 路 ECMP 路由,但同时网关 C 可能有一个仅基于 IP 的 4 路路由,等等)

    如果您的 traceroute 程序使用 UDP 探测并将每个探测发送到不同的 UDP 目标端口,那么结果可能无用 - 有时您可能会看到两条路径混合在一起(如您的示例中),有时您可能不会注意到例如 hop 3 来自路径 A,跳 4 来自路径 B,跳 5 又来自路径 A。

    因此,在像您这样的输出中,我不会假设跃点 4 的地址顺序与跃点 5 的顺序有任何关系。

    您应该做的是告诉您的 traceroute 工具使用固定的 UDP 源/目标端口,并在每次跟踪之间手动更改端口的同时多次运行跟踪。这样,单个跟踪的所有探测都将采用单个路径。例如,如果您正在使用mtr(其默认值实际上是 ICMP),请尝试:

    • mtr <host>– 这使用 ICMP 并且应始终显示一条路径;
    • mtr --udp <host>– 这使用具有不同端口的 UDP,将同时显示许多路径,无法区分它们;
    • mtr --udp -L 33000 -P 33001 <host>– 这使用带有本地端口 33000、远程端口 33001 的 UDP,并且只会显示一个路径(我们称之为路径 A);
    • mtr --udp -L 33000 -P 33002 <host>– 与上述相同,但调整任一端口号可能会显示不同的路径(路径 B)。

    这是单个跟踪中两个独立 ECMP 实例的示例——首先,您在不同国家/地区的网关之间选择 4 跳(它们汇聚在uk-hex;第 6 跳的两个地址很可能只是同一路由器的不同接口),然后你有 7 跳最后在八个不同的路由器之间进行选择。

    $ mtr --udp -c 100 --report-wide 212.71.255.###
                                                           Loss%   Snt   Last   Avg  Best  Wrst StDev
      1.|-- _gateway (10.128.0.1)                           0.0%   100    0.5   0.4   0.2   0.7   0.1
      2.|-- uxxx.lxxxxx.lx (193.219.###.###)                0.0%   100    0.8   0.7   0.4   1.1   0.1
      3.|-- ktu-itd-gw (193.219.153.182)                    0.0%   100    6.0   6.1   5.4  22.2   1.9
      4.|-- de-hmb.nordu.net (109.105.98.126)               0.0%   100   31.8  31.2  30.5  34.6   0.7
      5.|-- de-ffm.nordu.net (109.105.97.105)               0.0%   100   40.3  39.0  37.0  63.8   2.8
            nl-ams.nordu.net (109.105.97.80)              
      6.|-- uk-hex.nordu.net (109.105.97.125)               0.0%   100   45.9  46.4  45.4  54.5   1.6
            uk-hex.nordu.net (109.105.97.78)              
      7.|-- 5.57.81.142                                     0.0%   100   47.2  49.0  46.1  78.5   4.0
      8.|-- if-3-3.router1-lon1.linode.com (109.74.207.19)  0.0%   100   50.5  48.8  46.3  51.6   1.9
            if-3-23.router1-lon1.linode.com (109.74.207.23)
            if-3-19.router2-lon1.linode.com (109.74.207.3)
            if-3-23.router2-lon1.linode.com (109.74.207.25)
            if-3-3.router2-lon1.linode.com (109.74.207.21)
            if-3-22.router2-lon1.linode.com (109.74.207.15)
            if-3-19.router1-lon1.linode.com (109.74.207.1)
            if-3-17.router1-lon1.linode.com (109.74.207.11)
      9.|-- wxxxx.nxxxxxxxx.xx (212.71.255.###)             0.0%   100   46.2  48.3  46.0  51.3   1.9
    

    如果您使用 Wireshark/tcpdump 查看此内容,您会看到 mtr 将每个探测发送到不同的 UDP 端口——33000、33001、33002 等等——这就是它最终收集所有可能组合的方式。

    但是,如果我为 UDP 探测指定了固定的源/目标端口(或者如果我一开始不使用--udp,则从等式中删除端口),那么我可以隔离一个路径:

    $ mtr --udp -L 33000 -P 33000 -c 10 --report-wide 212.71.255.###
                                                            Loss%   Snt   Last   Avg  Best  Wrst StDev
      1.|-- _gateway (10.128.0.1)                            0.0%    10    0.4   0.4   0.4   0.6   0.1
      2.|-- uxxx.lxxxxx.lt (193.219.###.###)                 0.0%    10    0.7   0.7   0.6   0.8   0.1
      3.|-- ktu-itd-gw (193.219.153.182)                     0.0%    10    6.4   5.9   5.7   6.5   0.3
      4.|-- de-hmb.nordu.net (109.105.98.126)                0.0%    10   30.8  30.9  30.8  31.4   0.2
      5.|-- de-ffm.nordu.net (109.105.97.105)                0.0%    10   39.3  40.4  39.3  49.3   3.1
      6.|-- uk-hex.nordu.net (109.105.97.78)                 0.0%    10   46.0  47.4  45.8  51.4   1.9
      7.|-- 5.57.81.142                                      0.0%    10   51.7  50.5  50.1  51.7   0.4
      8.|-- if-3-17.router1-lon1.linode.com (109.74.207.11)  0.0%    10   50.4  50.6  50.3  51.6   0.4
      9.|-- wxxxx.nxxxxxxxx.xx (212.71.255.###)              0.0%    10   50.3  50.3  50.2  50.5   0.1
    

    更改其中一个端口号给了我一条不同的路径:

    $ mtr --udp -L 33000 -P 33002 -c 10 --report-wide 212.71.255.###
                                                           Loss%   Snt   Last   Avg  Best  Wrst StDev
      1.|-- _gateway (10.128.0.1)                           0.0%    10    0.6   0.4   0.4   0.6   0.1
      2.|-- uxxx.lxxxxx.lx (193.219.181.254)                0.0%    10    0.7   0.6   0.5   0.8   0.1
      3.|-- ktu-itd-gw (193.219.153.182)                    0.0%    10    5.8   6.0   5.8   6.7   0.4
      4.|-- de-hmb.nordu.net (109.105.98.126)               0.0%    10   30.8  30.8  30.7  31.0   0.1
      5.|-- nl-ams.nordu.net (109.105.97.80)                0.0%    10   37.4  39.5  37.2  56.1   5.9
      6.|-- uk-hex.nordu.net (109.105.97.125)               0.0%    10   45.9  46.0  45.7  47.4   0.5
      7.|-- 5.57.81.142                                     0.0%    10   46.6  48.1  46.5  57.5   3.6
      8.|-- if-3-3.router1-lon1.linode.com (109.74.207.19)  0.0%    10   47.1  46.9  46.4  48.2   0.5
      9.|-- wxxxx.nxxxxxxxx.xx (212.71.255.###)             0.0%    10   46.6  46.5  46.3  46.6   0.1
    

    现在回到你原来的问题,注意路径 A 是如何通过 gateways→ 97.105 → 97.78 →的,而路径 B 是如何通过的→ 97.80 → 97.125 →,这显然不对应于初始多路径跟踪中的跃点顺序(在位置 5 中显示 A 然后 B,但是位置 6 则相反)。

    由于 97.78 和 97.125 实际上是同一个网关(镜子证实了这一点),因此数据包不太可能从 97.105 传输到 97.125,因为该接口仅连接到 97.80。由此我们可以得出结论,mtr 输出中单个“跳”内的地址顺序是完全没有意义的。

    • 1

相关问题

  • 三台电脑,没有路由器/交换机怎么组网?

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve