[CEF] Cisco Express Forwarding


Đối với chế độ Standard IP Switching, router sử dụng route-cache để tăng tốc độ chuyển mạch. Tuy nhiên, xử lý chuyển mạch vẫn bị chậm do router cần thời gian để xử lý packet thứ nhất khi gửi đến một đích xác định. Sau đó, Layer 2 header mới được lưu lại (route-cache) để sử dụng cho packet kế tiếp. Các bạn xem hình dưới:
Với CEF, hoặc Topology-driven Switching, sau khi có Routing Table, FIB (Forwarding Information Base) được xây dựng ngay lập tức cùng với Adjacency Table (chứa Layer 2 header ứng với các mạng đích). Do đó, khi nhận packet, router đã có sẵn Layer 2 header và thực hiện chuyển mạch ngay. Các bạn xem hình dưới:

FIB chứa cùng thông tin như Routing Table (RT) và được cập nhật theo RT. Theo hình trên, nếu sử dụng RT, router cần thực hiện tìm kiếm đệ qui (Recusive Lookup) đối với packet thứ  nhất gửi đến đích 10.0.0.0/8, còn nếu dùng FIB, router sẽ sử dụng ngay Layer 2 header trong Adjacency Table ứng với Adjacency Pointer để thực hiện chuyển packet.

CEF hỗ trợ cả Per-Packet Load BalancingPer-Destination Load Balancing (chế độ mặc định).

Các bạn xem topo ở dưới:

Xem Adjacency Table:

R1#show adjacency detail
Protocol Interface                 Address
IP       FastEthernet0/1           2.2.2.3(16)
0 packets, 0 bytes
C00205040001C000050400010800 // C00205040001=MAC (R3-F0/1), C00005040001=MAC (R1-F0/1)

IP       FastEthernet0/0           1.1.1.2(16)
0 packets, 0 bytes
C00105040000C000050400000800 // C00105040000=MAC (R2-F0/0, C00005040000=MAC (R1-F0/0)

R1#show interfaces f0/0 | include bia
Hardware is Gt96k FE, address is c000.0504.0000 (bia c000.0504.0000)

R1#show interfaces f0/1 | include bia
Hardware is Gt96k FE, address is c000.0504.0001 (bia c000.0504.0001)

R2#show interface f0/0 | include bia
Hardware is Gt96k FE, address is c001.0504.0000 (bia c001.0504.0000)

R3#show interfaces f0/1 | include bia
Hardware is Gt96k FE, address is c002.0504.0001 (bia c002.0504.0001)

Trong RT của R1có 2 route đến mạng 5.5.5.0/24, như sau:

R1#show ip route 5.5.5.0 255.255.255.0

  Routing Descriptor Blocks:
  * 2.2.2.3, from 2.2.2.3, 04:36:20 ago, via FastEthernet0/1
      Route metric is 435200, traffic share count is 1
      …
    1.1.1.2, from 1.1.1.2, 04:36:20 ago, via FastEthernet0/0
      Route metric is 435200, traffic share count is 1
      …

R1#show ip cef 5.5.5.0
5.5.5.0/24, version 17, epoch 0, per-destination sharing
0 packets, 0 bytes
  via 2.2.2.3, FastEthernet0/1, 0 dependencies
    traffic share 1
    next hop 2.2.2.3, FastEthernet0/1
    valid adjacency
  via 1.1.1.2, FastEthernet0/0, 0 dependencies
    traffic share 1
    next hop 1.1.1.2, FastEthernet0/0
    valid adjacency

Thực hiện lệnh ping như sau trên R1:

R1#ping 5.5.5.4 source 6.6.6.1 repeat 4

Type escape sequence to abort.
Sending 4, 100-byte ICMP Echos to 5.5.5.4, timeout is 2 seconds:
Packet sent with a source address of 6.6.6.1
!!!!
Success rate is 100 percent (4/4), round-trip min/avg/max = 44/49/60 ms

Trên R4 thực hiện lệnh debug như sau:

R4#show access-lists
Standard IP access list 1
    10 permit 6.6.6.1 (50 matches)
R4#debug ip packet ?
  <1-199>      Access list
  <1300-2699>  Access list (expanded range)
  detail       Print more debugging detail
  <cr>

R4#debug ip packet 1
IP packet debugging is on for access list 1

Và nhận được thông báo sau:

R4#
*Mar  1 04:50:27.510: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 04:50:27.510: IP: s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4, len 100, rcvd 4
*Mar  1 04:50:27.602: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 04:50:27.602: IP: s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4, len 100, rcvd 4
*Mar  1 04:50:27.650: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 04:50:27.650: IP: s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4, len 100, rcvd 4
*Mar  1 04:50:27.670: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB

R1 gửi cả 4 packet ICMP-Echo ra Fa0/0 và R4 nhận vào Fa0/1.

Thử thay đổi chế độ chuyển mạch trên R1, như sau:

R1(config)#interface f0/0
R1(config-if)#ip load-sharing per-packet

R1(config)#interface f0/1
R1(config-if)#ip load-sharing per-packet

R1#show ip cef 5.5.5.0     
5.5.5.0/24, version 17, epoch 0, per-packet sharing
0 packets, 0 bytes
via 2.2.2.3, FastEthernet0/1, 0 dependencies
traffic share 1, current path
next hop 2.2.2.3, FastEthernet0/1
valid adjacency
via 1.1.1.2, FastEthernet0/0, 0 dependencies
traffic share 1
next hop 1.1.1.2, FastEthernet0/0
valid adjacency

Và thực hiện lại lệnh ping từ R1

R1#ping 5.5.5.4 source 6.6.6.1 repeat 4

Trên R4, chúng ta thấy ICMP-Echo nhận được lần lượt trên F0/0 và F0/1, như sau:

R4#
*Mar  1 05:09:28.642: IP: tableid=0, s=6.6.6.1 (FastEthernet0/0), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 05:09:28.642: IP: s=6.6.6.1 (FastEthernet0/0), d=5.5.5.4, len 100, rcvd 4
*Mar  1 05:09:28.742: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 05:09:28.742: IP: s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4, len 100, rcvd 4
*Mar  1 05:09:28.790: IP: tableid=0, s=6.6.6.1 (FastEthernet0/0), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 05:09:28.790: IP: s=6.6.6.1 (FastEthernet0/0), d=5.5.5.4, len 100, rcvd 4
*Mar  1 05:09:28.830: IP: tableid=0, s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4 (Loopback5), routed via RIB
*Mar  1 05:09:28.830: IP: s=6.6.6.1 (FastEthernet0/1), d=5.5.5.4, len 100, rcvd 4

6 Tháng sáu, 2018

Chưa có bình luận, hãy trở thành người đầu tiên!

Để lại một bình luận

2020 © Learns.vn.

Login

  • Họ tên (bắt buộc)

    Họ tên

  • Địa chỉ

    Địa chỉ

  • Tóm tắt thông tin

    Tóm tắt thông tin

  • Facebook

    Facebook profile link

  • Twitter

    Twitter profile link

  • Chuyên môn

    Kỹ năng chuyên môn

  • Register
Create an Account Back to login/register