【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

实验环境:

操作系统:Windows 10(1607,14393.351,当时最新测试版),模拟器:GNS3 IOU for Windows 1.5.2(当时最新正式版)
注:当然,只要有思科模拟器都可以做这个实验

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

实验需求:

  • IOU2、IOU3 和 IOU4 上运行 IGP(OSPF 234)和 MPLS;
  • 在 IOU2 和 IOU4 上配置 IP / L2TPv3,让 IOU1 和 IOU7 实现 L2VPN 通信;
  • 在 IOU2 和 IOU4 上配置 IP / L2TPv3,让 IOU5 和 IOU6 实现 L2VPN 通信;
  • 在 IOU2 和 IOU4 上配置 IP / L2TPv3,让 IOU8 和 IOU9 实现 L2VPN 通信;
  • 因为是 L2VPN,所以 IOU2 的 s 2/0、e 0/1 和 e 1/0 接口均不需要配置 IP 地址,IOU4 的 s 2/0、s 2/1 和 e 1/0 接口也不需要配置 IP 地址。

其他相关文章:

  • 什么是 IP / L2TPv3?IP / L2TPv3 属于 L2VPN → Point-to-Point → Like-to-Like(Any-to-Any) → IP / L2TPv3 这个分类,详情请看:《L2VPN传统结构
  • 如果您想了解的是 L2TPv3 这个协议本身的内容,请看:《L2TPv3 概述

实验步骤:

1、先配置 IP 地址和 IGP(OSPF 234):

IOU2:

conf t
int l 0
ip add 2.2.2.2 255.255.255.255

int e 0/2
ip add 23.1.1.2 255.255.255.0
no sh

router ospf 234
router-id 2.2.2.2

int r e 0/2 , l 0
ip os 234 a 0

IOU3:

conf t
int l 0
ip add 3.3.3.3 255.255.255.255

int e 0/2
ip add 23.1.1.3 255.255.255.0
no sh

int e 0/3
ip add 34.1.1.3 255.255.255.0
no sh

router ospf 234
router-id 3.3.3.3

int r e 0/2-3 , l 0
ip os 234 a 0

IOU4:

conf t
int l 0
ip add 4.4.4.4 255.255.255.255

int e 0/3
ip add 34.1.1.4 255.255.255.0
no sh

router ospf 234
router-id 4.4.4.4

int r e 0/3 , l 0
ip os 234 a 0

IOU1:

conf t
int s 2/0
ip add 10.1.1.1 255.255.255.0
no sh

IOU7:

conf t
int s 2/0
ip add 10.1.1.7 255.255.255.0
no sh

IOU5:

conf t
int s 2/1
encapsulation ppp
ip add 100.1.1.5 255.255.255.0
no sh

IOU6:

conf t
int e 0/1
ip add 100.1.1.6 255.255.255.0
no sh

IOU8:

conf t
int e 1/0
no sh
int e 1/0.8
en do 8
ip add 200.1.1.8 255.255.255.0

IOU9:

conf t
int e 1/0
no sh
int e 1/0.9
en do 9
ip add 200.1.1.9 255.255.255.0

2、配置 IOU1 和 IOU7 上的 IP / L2TPv3:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
IOU2:

pseudowire-class T17
encapsulation l2tpv3
ip local interface l 0

int s 2/0
xconnect 4.4.4.4 17 pw-class T17
no sh

IOU4:

pseudowire-class T17
encapsulation l2tpv3
ip local interface l 0

int s 2/0
xconnect 2.2.2.2 17 pw-class T17
no sh

关于配置命令:

  • pseudowire-class T17:首先要配置一个 pseudowire-class(伪线类),类名为 T17;
  • encapsulation l2tpv3:然后将封装格式设置成 L2TPv3,与之对应的还有一个 MPLS 封装;
  • ip local interface l 0:再设置一个 loopback 口,这样路由器就会使用这个 loopback 口作为源 IP 地址,跟其他路由器建立伪线(类似于 BGP 中的 update-source);
  • xconnect 4.4.4.4 17 pw-class T17 中的 “4.4.4.4” 指的是伪线对端路由器的 IP 地址,伪线会在 2.2.2.2 和 4.4.4.4 之间建立;
  • xconnect 4.4.4.4 17 pw-class T17 中的 “17” 指的是 VC ID value(如下图所示),路由器通过 VC ID 来区分每条虚拟线路(如果是同一条虚拟线路,那么两台路由器上配置的 VC ID 必须一致)。
    IOU2(config)#int s 2/0
    IOU2(config-if)#xconnect 4.4.4.4 ?
      <1-4294967295>  Enter VC ID value

其他相关文章:

此时,你会看到在 IOU2 和 IOU4 上弹出了一条 log 日志,pseudowire0 接口起来了:

IOU4(config-if)#
*Nov 22 04:51:55.714: %LINEPROTO-5-UPDOWN: Line protocol on Interface pseudowire0,
 changed state to up

现在 IOU1 就可以 ping 通 IOU7 了:

IOU1#p 10.1.1.7
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.7, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 17/19/20 ms

traceroute 一下你会发现看不到 IOU2、IOU3 和 IOU4,相当于 IOU1 和 IOU7 是 “直连” 的:

IOU1#tra 10.1.1.7
Type escape sequence to abort.
Tracing the route to 10.1.1.7
VRF info: (vrf in name/id, vrf out name/id)
  1 10.1.1.7 21 msec 19 msec 19 msec
IOU1#

在 IOU4 上 sh l2tp tunnel summary 就会看到现在建立了一条 tunnel(控制会话)和一条 session(数据会话):

IOU4#sh l2tp tunnel summary

L2TP Tunnel Information Total tunnels 1 sessions 1

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
1538966429 2131524028 IOU2          est    2.2.2.2         1     l2tp_default_cl
IOU4#

在 IOU4 上 sh l2tp tunnel all 可以看到思科路由器是采用 IP 协议号为 115 的形式进行封装的:

IOU4#sh l2tp tunnel all

L2TP Tunnel Information Total tunnels 1 sessions 1

Tunnel id 1538966429 is up, remote id is 2131524028, 1 active sessions
  Locally initiated tunnel
  Tunnel state is established, time since change 00:06:22
  Tunnel transport is IP  (115)
  Remote tunnel name is IOU2
    Internet Address 2.2.2.2, port 0
  Local tunnel name is IOU4
    Internet Address 4.4.4.4, port 0
  L2TP class for tunnel is l2tp_default_class
  Counters, taking last clear into account:
    52 packets sent, 52 received
    4537 bytes sent, 4537 received
    Last clearing of counters never
  Counters, ignoring last clear:
    52 packets sent, 52 received
    4537 bytes sent, 4537 received
  Control Ns 11, Nr 9
  Local RWS 1024 (default), Remote RWS 1024
  Control channel Congestion Control is disabled
  Tunnel PMTU checking disabled
  Retransmission time 1, max 1 seconds
  Unsent queuesize 0, max 0
  Resend queuesize 0, max 2
  Total resends 0, ZLB ACKs sent 7
  Total out-of-order dropped pkts 0 
  Total out-of-order reorder pkts 0 
  Total peer authentication failures 0
  Current no session pak queue check 0 of 5
  Retransmit time distribution: 0 0 0 0 0 0 0 0 0 
  Control message authentication is disabled
IOU4#

其他相关文章:

  • 除了采用 IP 协议号为 115 的形式封装 L2TPv3 报头以外,还有一种是使用 UDP 端口号 1701,详情请看:《L2TPv3 概述》。

在 IOU4 上 sh l2tun session all 可以看到 L2VPN 数据会话的封装格式和 L2VPN 所在的接口,以及其他一些详细的信息:

IOU4#sh l2tun session all

L2TP Session Information Total tunnels 1 sessions 1

Session id 1797294749 is up, logical session id 32775, tunnel id 1538966429
  Remote session id is 1171276197, remote tunnel id 2131524028
  Locally initiated session
  Unique ID is 0
Session Layer 2 circuit, type is HDLC, name is Serial2/0
  Session vcid is 17
  Circuit state is UP
    Local circuit state is UP
    Remote circuit state is UP
Call serial number is 3416000001
Remote tunnel name is IOU2
  Internet address is 2.2.2.2
Local tunnel name is IOU4
  Internet address is 4.4.4.4
IP protocol 115
  Session is L2TP signaled
  Session state is established, time since change 00:12:00
    93 Packets sent, 92 received
    7768 Bytes sent, 7423 received
  Last clearing of counters never
  Counters, ignoring last clear:
    93 Packets sent, 92 received
    7768 Bytes sent, 7423 received
    Receive packets dropped:
      out-of-order:             0
      other:                    0
      total:                    0
    Send packets dropped:
      exceeded session MTU:     0
      other:                    0
      total:                    0
  DF bit off, ToS reflect disabled, ToS value 0, TTL value 255
  Sending UDP checksums are disabled
  Received UDP checksums are verified
  No session cookie information available
  FS cached header information:
    encap size = 24 bytes
    45000014 00000000 ff73af6b 04040404
    02020202 45d041a5 
  Sequencing is off
  Conditional debugging is disabled
  SSM switch id is 4096, SSM segment id is 8202
IOU4#

3、配置 IOU5 和 IOU6 上的 IP / L2TPv3:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

IOU1 上是通过 serial 口(HDLC 封装)连接的 IOU2,IOU7 也是通过 serial 口(HDLC 封装)连接的 IOU4,那如果(两个客户路由器上)连接服务提供商的接口不同(或者二层封装格式不同)可不可以互通呢?答案是:可以的。

现在 IOU6 是通过 e 0/1 口(Ethernet 封装)连接的 IOU2,而 IOU5 是通过 s 2/1 口(PPP 封装)连接的 IOU4。

IOU2:

pseudowire-class T56
encapsulation l2tpv3
ip local interface l 0
interworking ip

int e 0/1
xconnect 4.4.4.4 56 pw-class T56
no sh

IOU4:

pseudowire-class T56
encapsulation l2tpv3
ip local interface l 0
interworking ip

int s 2/1
encapsulation ppp
xconnect 2.2.2.2 56 pw-class T56
no sh

IOU5 和 IOU6 之间的伪线配置相对于 IOU1 和 IOU7 之间的伪线配置,多了一个 interworking ip。interworking ip 的含义是在伪线里只允许传递 IP 三层头部,也就是说二层头部将会被全部擦除(文章下方对这部分会有详细的讲解)。

注意:IOU4 和 IOU5 的链路上是要配置 PPP 封装的。如果不配置 PPP 封装,在配置 xconnect 时,就会报下面的错误:

IOU4(config-if)#int s 2/1 
IOU4(config-if)#xconnect 2.2.2.2 56 pw-class T56
Interworking specified in pw-class is not supported on this interface

现在 IOU6 就可以 ping 通 IOU5 了,traceroute 也会发现 IOU5 和 IOU6 之间显示是直连的:

IOU6#p 100.1.1.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.1.5, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 10/11/13 ms

IOU6#traceroute 100.1.1.5
Type escape sequence to abort.
Tracing the route to 100.1.1.5
VRF info: (vrf in name/id, vrf out name/id)
  1 100.1.1.5 10 msec 9 msec 9 msec
IOU6#

在 IOU4 上 sh l2tun tunnel summary 可以看到现在 session(数据会话)变成了两条,而 tunnel(控制会话)还是一条:

IOU4#sh l2tun tunnel summary 

L2TP Tunnel Information Total tunnels 1 sessions 2

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
1538966429 2131524028 IOU2          est    2.2.2.2         2     l2tp_default_cl

其他相关文章:

4、配置 IOU8 和 IOU9 上的 IP / L2TPv3:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

IOU8 和 IOU9 上连接服务提供商的接口采用的都是 802.1Q 子接口:

IOU2:

pseudowire-class T89
encapsulation l2tpv3
ip local interface l 0
interworking ethernet

int e 1/0
no sh
int e 1/0.8
en do 8
xconnect 4.4.4.4 89 pw-class T89

IOU4:

pseudowire-class T89
encapsulation l2tpv3
ip local interface l 0
interworking ethernet

int e 1/0
no sh
int e 1/0.9
en do 9
xconnect 2.2.2.2 89 pw-class T89

interworking ethernet 的含义是在伪线里只允许传递 Ethernet 二层头部,也就是说其他二层头部将会被全部擦除(文章下方对这部分会有详细的讲解)。

这个时候发现 IOU8 ping 不通 IOU9:

IOU8#p 200.1.1.9
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.9, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

IOU8#p 200.1.1.9
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.9, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

在 IOU2 上 sh l2tun tunnel summary 会发现 session (数据会话)还是两条:

IOU2#sh l2tun tunnel summary

L2TP Tunnel Information Total tunnels 1 sessions 2

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
2131524028 1538966429 IOU4          est    4.4.4.4         2     l2tp_default_cl

这很奇怪,估计是 IOU 的 bug 。现在我们在 IOU4 上 sh l2tun tunnel summary,发现这边的 session (数据会话)就是三条的:

IOU4#sh l2tun tunnel summary

L2TP Tunnel Information Total tunnels 1 sessions 3

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
1916316032 2814769188 IOU2          est    2.2.2.2         3     l2tp_default_cl

再回到 IOU2 上 sh l2tun tunnel summary 会发现 session (数据会话)也变成三条了:

IOU2#sh l2tun tunnel summary

L2TP Tunnel Information Total tunnels 1 sessions 3

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
2814769188 1916316032 IOU4          est    4.4.4.4         3     l2tp_default_cl

所以,如果你发现 IOU8 和 IOU9 之间 ping 不通,那你就在 IOU2 和 IOU4 上各 sh l2tun tunnel summary 一次,就可以了。

现在 IOU8 就可以 ping 通 IOU9 了,traceroute 也会发现 IOU8 和 IOU9 之间显示是直连的:

IOU8#p 200.1.1.9
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.9, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
     
IOU8#traceroute 200.1.1.9
Type escape sequence to abort.
Tracing the route to 200.1.1.9
VRF info: (vrf in name/id, vrf out name/id)
  1 200.1.1.9 2 msec 1 msec 2 msec
IOU8#

实验完成。

5、如果要在 IOU2 和 IOU4 之间做 L2TPv3 的认证,应该要这么配置:

IOU2:

conf t
int l 0
ip add 2.2.2.2 255.255.255.255

int e 0/2
ip add 23.1.1.2 255.255.255.0
no sh

router ospf 234
router-id 2.2.2.2

int r e 0/2 , l 0
ip os 234 a 0

l2tp-class IOU2IOU4
authentication
password ccie.lol

pseudowire-class T17
encapsulation l2tpv3
ip local interface l 0
protocol l2tpv3 IOU2IOU4

int s 2/0
xconnect 4.4.4.4 17 pw-class T17
no sh

pseudowire-class T56
encapsulation l2tpv3
ip local interface l 0
interworking ip
protocol l2tpv3 IOU2IOU4

int e 0/1
xconnect 4.4.4.4 56 pw-class T56
no sh

pseudowire-class T89
encapsulation l2tpv3
ip local interface l 0
interworking ethernet
protocol l2tpv3 IOU2IOU4

int e 1/0
no sh
int e 1/0.8
en do 8
xconnect 4.4.4.4 89 pw-class T89

IOU4:

conf t
int l 0
ip add 4.4.4.4 255.255.255.255

int e 0/3
ip add 34.1.1.4 255.255.255.0
no sh

router ospf 234
router-id 4.4.4.4

int r e 0/3 , l 0
ip os 234 a 0

l2tp-class IOU2IOU4
authentication
password ccie.lol

pseudowire-class T17
encapsulation l2tpv3
ip local interface l 0
protocol l2tpv3 IOU2IOU4

int s 2/0
xconnect 2.2.2.2 17 pw-class T17
no sh

pseudowire-class T56
encapsulation l2tpv3
ip local interface l 0
interworking ip
protocol l2tpv3 IOU2IOU4

int s 2/1
encapsulation ppp
xconnect 2.2.2.2 56 pw-class T56
no sh

pseudowire-class T89
encapsulation l2tpv3
ip local interface l 0
interworking ethernet
protocol l2tpv3 IOU2IOU4

int e 1/0
no sh
int e 1/0.9
en do 9
xconnect 2.2.2.2 89 pw-class T89

先写一个 L2TP 类(l2tp-class IOU2IOU4),然后在这个类中配置开启认证的命令(authentication)和认证所需要的密码(password ccie.lol),最后在伪线类中调用一下即可(protocol l2tpv3 IOU2IOU4)。

值得注意的是,因为是在 IOU2 和 IOU4 这两台路由器上做认证,所以这两台路由器之间的那三条伪线(或者说那三条数据会话)需要设置的密码必须是一致的。不能一条伪线用 ccie.lol 这个密码,而另一条伪线用 ccies.hk 这个密码。

详细地跟踪一下数据包:

现在我们以 IOU1 和 IOU7 为例,来分析一下数据包在各个链路上的报头格式:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

我们先追踪 IOU1 和 IOU7 之间的数据包,Ricky会在 IOU2 的 s 2/0 口IOU3 的 e 0/2 口IOU4 的 e 0/3 口和 IOU4 的 s 2/0 口用 Wireshark 抓取数据包,然后在 IOU1 上 ping 10.1.1.7。

1、在 IOU1 上 ping 10.1.1.7 时,IOU2 的 s 2/0 口上的抓包:

在 IOU1 上 ping 10.1.1.7 时,IOU2 的 s 2/0 口上的抓包
在 IOU1 上 ping 10.1.1.7 时,IOU2 的 s 2/0 口上的抓包

如上图所示,这是 IOU1 给 IOU2 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Cisco HDLC |

2、在 IOU1 上 ping 10.1.1.7 时,IOU3 的 e 0/2 口上的抓包:

在 IOU1 上 ping 10.1.1.7 时,IOU3 的 e 0/2 口上的抓包
在 IOU1 上 ping 10.1.1.7 时,IOU3 的 e 0/2 口上的抓包

如上图所示,这是 IOU2 给 IOU3 发送的数据包的报头结构。IOU2 在原数据包的基础上打上了一个 L2TPv3 的报头,然后打上了一个去往 4.4.4.4 的 IP 三层头部,再打上一个 Ethernet 二层头部,最后将数据包转发给 IOU3。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Cisco HDLC | L2TPv3 | IP | Ethernet |

3、在 IOU1 上 ping 10.1.1.7 时,IOU4 的 e 0/3 口上的抓包:

在 IOU1 上 ping 10.1.1.7 时,IOU4 的 e 0/3 口上的抓包
在 IOU1 上 ping 10.1.1.7 时,IOU4 的 e 0/3 口上的抓包

如上图所示,这是 IOU3 给 IOU4 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Cisco HDLC | L2TPv3 | IP | Ethernet |

4、在 IOU1 上 ping 10.1.1.7 时,IOU4 的 s 2/0 口上的抓包:

在 IOU1 上 ping 10.1.1.7 时,IOU4 的 s 2/0 口上的抓包
在 IOU1 上 ping 10.1.1.7 时,IOU4 的 s 2/0 口上的抓包

如上图所示,这是 IOU4 给 IOU7 发送的数据包的报头结构。IOU4 会剥离掉最外层的 Ethernet 二层头部和 IP 三层头部,再剥离掉 L2TPv3 报头,然后将数据包转发给 IOU7。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Cisco HDLC |

这样,数据包就转发到目的地了。

我们再以 IOU5 和 IOU6 为例,来分析一下数据包在各个链路上的报头格式:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

接下来,我们追踪 IOU5 和 IOU6 之间的数据包,Ricky会在 IOU2 的 e 0/1 口IOU3 的 e 0/2 口IOU4 的 e 0/3 口和 IOU4 的 s 2/1 口用 Wireshark 抓取数据包,然后在 IOU6 上 ping 100.1.1.5。

1、在 IOU6 上 ping 100.1.1.5 时,IOU2 的 e 0/1 口上的抓包:

在 IOU6 上 ping 100.1.1.5 时,IOU2 的 e 0/1 口上的抓包
在 IOU6 上 ping 100.1.1.5 时,IOU2 的 e 0/1 口上的抓包

如上图所示,这是 IOU6 给 IOU2 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Ethernet |

2、在 IOU6 上 ping 100.1.1.5 时,IOU3 的 e 0/2 口上的抓包:

在 IOU6 上 ping 100.1.1.5 时,IOU3 的 e 0/2 口上的抓包
在 IOU6 上 ping 100.1.1.5 时,IOU3 的 e 0/2 口上的抓包

如上图所示,这是 IOU2 给 IOU3 发送的数据包的报头结构。IOU2 收到这个数据包后会先抹去 Ethernet 二层头部(因为在 IOU2 上,这条伪线配置了参数:interworking ip,interworking ip 的意思是除了 IP 三层头部以外,其他二层头部都要被抹去),接着 IOU2 在原数据包的基础上打上了一个 L2TPv3 的报头,然后打上了一个去往 4.4.4.4 的 IP 三层头部,再打上一个 Ethernet 二层头部,最后将数据包转发给 IOU3。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | L2TPv3 | IP | Ethernet |

这里需要注意的是,Wireshark 把这个数据包识别错了,最内层不是 Ethernet 和 Data,而是 IP 和 ICMP。

如何判断 Wireshark 是否把数据包识别错了?

首先,如上图所示,你会发现 Cisco HDLC 数据帧里的 IP 地址字段和协议字段都显示为 Unknown,这就很不正常了。

其次,通过上面的截图我们可以知道,“Cisco HDLC 二层头部”(其实是 IP 头部)是以 45 00 00 64 00 0a 开始的。如下图所示,这是这个 ping 包刚从 IOU6 发给 IOU2 时的样子(就是上上一个截图)。你会发现,下面这个数据包的 IP 头部也是以 45 00 00 64 00 0a 开始的,而且后面的字节也都一样。所以这里可以判断,上面那个截图中,Wireshark 错把最内层的 IP 和 ICMP 识别成了 Cisco HDLC 和 Data。

在 IOU6 上 ping 100.1.1.5 时,IOU2 的 e 0/1 口上的抓包
在 IOU6 上 ping 100.1.1.5 时,IOU2 的 e 0/1 口上的抓包

3、在 IOU6 上 ping 100.1.1.5 时,IOU4 的 e 0/3 口上的抓包:

在 IOU6 上 ping 100.1.1.5 时,IOU4 的 e 0/3 口上的抓包
在 IOU6 上 ping 100.1.1.5 时,IOU4 的 e 0/3 口上的抓包

如上图所示,这是 IOU3 给 IOU4 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | L2TPv3 | IP | Ethernet |

4、在 IOU6 上 ping 100.1.1.5 时,IOU4 的 s 2/1 口上的抓包:

在 IOU6 上 ping 100.1.1.5 时,IOU4 的 s 2/1 口上的抓包
在 IOU6 上 ping 100.1.1.5 时,IOU4 的 s 2/1 口上的抓包

如上图所示,这是 IOU4 给 IOU5 发送的数据包的报头结构。IOU4 会剥离掉最外层的 Ethernet 二层头部和 IP 三层头部,再剥离掉 L2TPv3 报头,接着打上 PPP 二层头部(这里之所以打上了 PPP 二层头部,是因为在 IOU4 和 IOU5 之间的网络类型就是 PPP),然后将数据包转发给 IOU5。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | PPP |

这样,数据包就转发到目的地了。

我们再以 IOU8 和 IOU9 为例,来分析一下数据包在各个链路上的报头格式:

【实验】IP L2VPN下,Point-to-Point的L2TPv3实验
【实验】IP L2VPN下,Point-to-Point的L2TPv3实验

接下来,我们追踪 IOU8 和 IOU9 之间的数据包,Ricky会在 IOU2 的 e 1/0 口IOU3 的 e 0/2 口IOU4 的 e 0/3 口和 IOU4 的 e 1/0 口用 Wireshark 抓取数据包,然后在 IOU8 上 ping 200.1.1.9。

1、在 IOU8 上 ping 200.1.1.9 时,IOU2 的 e 1/0 口上的抓包:

在 IOU8 上 ping 200.1.1.9 时,IOU2 的 e 1/0 口上的抓包
在 IOU8 上 ping 200.1.1.9 时,IOU2 的 e 1/0 口上的抓包

如上图所示,这是 IOU8 给 IOU2 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | 802.1Q | Ethernet |

2、在 IOU8 上 ping 200.1.1.9 时,IOU3 的 e 0/2 口上的抓包:

在 IOU8 上 ping 200.1.1.9 时,IOU3 的 e 0/2 口上的抓包
在 IOU8 上 ping 200.1.1.9 时,IOU3 的 e 0/2 口上的抓包

如上图所示,这是 IOU2 给 IOU3 发送的数据包的报头结构。IOU2 收到这个数据包后会先抹去 802.1Q 数据帧(因为在 IOU2 上,这条伪线配置了参数:interworking ethernet,interworking ethernet 的意思是除了 Ethernet 二层头部以外,其他二层头部都要被抹去),接着 IOU2 在原数据包的基础上打上了一个 L2TPv3 的报头,然后打上了一个去往 4.4.4.4 的 IP 三层头部,再打上一个 Ethernet 二层头部,最后将数据包转发给 IOU3。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Ethernet | L2TPv3 | IP | Ethernet |

3、在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 0/3 口上的抓包:

在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 0/3 口上的抓包
在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 0/3 口上的抓包

如上图所示,这是 IOU3 给 IOU4 发送的数据包的报头结构。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | Ethernet | L2TPv3 | IP | Ethernet |

4、在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 1/0 口上的抓包:

在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 1/0 口上的抓包
在 IOU8 上 ping 200.1.1.9 时,IOU4 的 e 1/0 口上的抓包

如上图所示,这是 IOU4 给 IOU9 发送的数据包的报头结构。IOU4 会剥离掉最外层的 Ethernet 二层头部和 IP 三层头部,再剥离掉 L2TPv3 报头,接着打上 802.1Q 数据帧(这里之所以打上了 802.1Q 数据帧,是因为在 IOU4 和 IOU9 之间的网络类型就是 802.1Q 子接口),然后将数据包转发给 IOU9。如果要画个简图的话,是如下这个样子的:

| FCS | ICMP | IP | 802.1Q | Ethernet |

这样,数据包就转发到目的地了。

 

本文完。如有疑问,欢迎在下方留言;如本文有什么错误,欢迎在下方留言指正,谢谢。

打赏作者
这里是 “ CCIE 工程师社区 ” 官方的捐款通道,您是否可以考虑请我们喝杯咖啡呢?

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据