การทำงานของ CEF บนสวิตช์ L3 กับเราเตอร์


21

ฉันเข้าใจว่าสวิตช์ L3 ใช้ CEF สำหรับการส่งต่อแพ็คเก็ตที่เร็วขึ้น อย่างไรก็ตาม CEF จะไม่ทำงานสำหรับแพ็กเก็ตที่จำเป็นต้องได้รับ NAT นี่หมายความว่า CEF ไม่ได้ใช้โดยเราเตอร์ขอบและสวิตช์ L3 edge ใช่หรือไม่ ประโยชน์ของ CEF ถูก จำกัด อยู่ที่ LAN หรือไม่

คำตอบ:


8

แน่นอน NAT สามารถใช้ CEF นี่คือจากคู่มือของซิสโก้เองที่นี่: http://www.cisco.com/en/US/tech/tk648/tk361/technologies_q_and_a_item09186a00800e523b.shtml

Q. What kind of routing performance can be expected when using Cisco IOS NAT?

    A. Cisco IOS NAT supports Cisco Express Forwarding switching, fast switching, and process switching. For 12.4T release and later, fast-switching path is no longer supported. For Cat6k platform, the switching order is Netflow (HW switching path), CEF, process path.

    Performance depends on several factors:

        The type of application and its type of traffic

        Whether IP addresses are embedded

        Exchange and inspection of multiple messages

        Source port required

        The number of translations

        Other applications running at the time

        The type of hardware and processor

แพลตฟอร์มที่ใหญ่กว่าที่รัน IOS-XR ซึ่ง FIB ได้รับการแจกจ่ายไปยังการ์ดสายยังรองรับ NAT ระดับผู้ให้บริการดังนั้นจึงมีประโยชน์ไม่ จำกัด เฉพาะ LAN เพียงอย่างเดียว

นอกจากนี้สวิตช์ L3 จำนวนมากของ Cisco ก็ไม่ได้ทำ NAT เลย


2
ในทางเทคนิคบนเส้นทาง CEF จากทางเข้าสู่ทางออกคุณมีจุดแทรกสำหรับคุณสมบัติ (เช่น NAT) หากจุดแทรกนี้มีอยู่คุณสมบัติจะทำงานกับ CEF ที่เปิดใช้งาน แต่แตกต่างจากการค้นหา L3 อาจไม่มีประสิทธิภาพที่สังเกตได้สำหรับคุณสมบัตินี้เนื่องจาก CEF เพียงแค่ให้ข้อมูลสำหรับคุณลักษณะไม่ใช่เปลี่ยนคุณสมบัติเอง แต่ส่วนใหญ่นี่คือรายละเอียดที่ไม่สำคัญรายละเอียดที่สำคัญคือเปิดใช้งาน CEF
ytti

18

CEF เป็นคำของซิสโก้สำหรับ FIB ของพวกเขา เมื่ออยู่ในสวิตช์ L3 คุณจะใช้ 'sh ip cef' ไม่มีการใช้ข้อมูลนี้เพื่อผลักแพ็คเก็ตเลยนี่เป็นเพียงซอฟต์แวร์trieซึ่งใช้เพื่อเติมฮาร์ดแวร์ ASIC

CEF เป็นเพียงคำศัพท์ที่ Cisco ใช้เพื่ออธิบายการเพิ่มประสิทธิภาพการจัดเก็บข้อมูล / การเรียกคืนรหัสไม่ใช่เทคโนโลยีเฉพาะที่มีฟังก์ชั่นเฉพาะ

ในแพลตฟอร์ม HW ส่วนใหญ่คุณไม่สามารถเรียกใช้กล่องที่ไม่มี CEF ได้เนื่องจากโครงสร้างข้อมูล CEF นั้นจำเป็นสำหรับการรวบรวมข้อมูลเฉพาะของ HW
คุณลักษณะบางอย่างเช่น MPLS นั้นมีการพึ่งพาโครงสร้างข้อมูล CEF ด้วยดังนั้นจึงไม่สามารถใช้งานได้หากไม่มี

การสลับ LAN (L2) ไม่ได้ถูกแยกออกจาก CEF ดังนั้นจึงไม่ขึ้นอยู่กับ CEF เลย

ฉันแนะนำหนังสือเล่มนี้สำหรับข้อมูลที่ทันสมัยเกี่ยวกับ CEF (เขียนหลังจากที่ CEF สำคัญเขียนใหม่ประมาณ 12.2S)

หากคุณ จำกัด ข้อกำหนด CEF ของ IP Trie FIB แน่นอนว่าไม่สามารถใช้สำหรับ NAPT ได้เนื่องจากคุณไม่สามารถกำหนดสิ่งที่ตั้งชื่อไว้ล่วงหน้าและที่ใด แต่ตามที่อธิบายไว้ CEF ไม่ใช่เทคโนโลยีที่เฉพาะเจาะจงเป็นแนวคิดที่กว้างขึ้นและดังนั้นจึงเป็นที่ถกเถียงกันว่า CEF เป็นคุณสมบัติ NAT หรือไม่ฉันจะทำผิดด้านของคุณสมบัติ CEF:

bu.ip.fi#sh cef features global  | b Local
  Global Local features not attached to a specific interface:
     NAT
bu.ip.fi#

ฉันจะไม่ทำงานอะไรเลยหากไม่มี CEF และอาจเป็นเพราะเหตุผลดั้งเดิมที่เลือกปิดใช้งานมันยังมีอยู่ พิจารณาจูนิเปอร์พวกเขาไม่มีคำที่เฉพาะเจาะจงที่พวกเขาใช้เพื่ออธิบายแนวคิดเดียวกันเนื่องจากพวกเขาไม่จำเป็นต้องแยกความแตกต่างจากวิธีการทางเลือกอื่นเนื่องจากไม่มีตัวเลือกที่ด้อยกว่าเช่นนี้


5
เพียงเพื่อเพิ่มสิ่งนี้ - CEF กำลังเปลี่ยนเส้นทางทรีข้อมูลสำหรับการส่งต่อข้อมูลและอื่น ๆ ดังนั้นชื่อ 'CEF' อาจถูกนำมาใช้ในหลาย ๆ ด้านและเพิ่มความสับสน ที่จริงแล้ว NAT ได้รับการสนับสนุนในเส้นทาง CEF (เช่นเดียวกับฟังก์ชั่นอื่น ๆ อีกนับพัน) แต่ตารางที่สร้างโดย CEF ไม่มีข้อมูลบางอย่างที่จำเป็นในการสลับแพ็กเก็ตอย่างหมดจดโดยใช้พวกเขาตามที่ ytti ชี้ให้เห็น (พวกเขากำลังสร้างและดูแลโดยรหัส NAT) อย่างไรก็ตามถ้าสามารถสลับแพ็คเก็ตในเส้นทาง CEF โดยไม่ต้องย้อนกลับไปสู่การสลับกระบวนการก็ยังคงมีคุณสมบัติที่สนับสนุนโดย CEF
Łukasz Bromirski

9

นี่หมายความว่า CEF ไม่ได้ใช้โดยเราเตอร์ขอบและสวิตช์ L3 edge ใช่หรือไม่ ประโยชน์ของ CEF ถูก จำกัด อยู่ที่ LAN หรือไม่

CEF มีประโยชน์เพราะอนุญาตให้เราเตอร์เขียนข้อมูล Layer2 อย่างรวดเร็วในระหว่างการดำเนินการส่งต่อเลเยอร์ 3 เราเตอร์ WAN ต้องเขียนข้อมูลส่วนหัวของ Layer2 เช่นเดียวกับสวิตช์ LAN ทำ ... CEF มีประโยชน์อย่างยิ่งสำหรับเราเตอร์ทั้งสองประเภท

ที่ CEF ระดับสูงจะทำหน้าที่สองอย่าง:

  • มี shadow-copy ของตารางการเราต์ซึ่งแมปคำนำหน้าเส้นทางที่ส่งไปยัง hop ถัดไป
  • มีการอ้างอิงไปยังตาราง Ad2dge Layer2 ซึ่งให้ข้อมูลแคชเกี่ยวกับส่วนหัวของ Layer2 ที่จำเป็นในการเขียนแพ็กเก็ต IP ผ่านทาง egress next-hop ถัดไปที่กล่าวถึงในกระสุนแรก

ตัวอย่าง:

พิจารณาเราเตอร์ที่มีลิงค์ WAN HDLC บน Serial1 / 0 และการเชื่อมต่อ LAN ผ่าน FastEthernet0 / 0 ...

R1#show adjacency internal
Protocol Interface                 Address
IP       Serial1/0                 point2point(5)
                                   0 packets, 0 bytes
                                   0F000800             <--------- HDLC Header rewrite info
                                   CEF   expires: 00:02:17
                                         refresh: 00:00:17
                                   Epoch: 0
                                   Fast adjacency disabled
                                   IP redirect enabled
                                   IP mtu 1500 (0x0)
                                   Fixup disabled
                                   Adjacency pointer 0x6663D3E0, refCount 5
                                   Connection Id 0x000000
                                   Bucket 6

สมมติว่าแพ็คเก็ต IPv4 ที่ไปที่ 192.0.2.1 เข้าสู่เราเตอร์จาก FastEthernet0 / 0 บน LAN และต้องออกจาก Serial1 / 0 บน WAN (ความจริงที่ว่ามันกำลังออกจาก Serial1 / 0 นั้นพบในตาราง CEF ... และ CEF ตารางอ้างอิงตาราง adjacency)

เมื่อเราเตอร์ได้รับแพ็คเก็ต IPv4 จาก FastEthernet 0/0 เราเตอร์จะต้องตัดส่วนหัวอีเธอร์เน็ตและเพิ่มส่วนหัว HDLCซึ่งเป็น0F000800ปลายทางปลายทาง IPv4 ( 0x0800มีค่าประเภท HDLC ที่จะบอกว่าส่วนหัวต่อไปคือ IPv4)

ถ้า CEF ไม่ได้แคชข้อมูลส่วนหัว (เล็กน้อย) เขียนใหม่สำหรับ Serial1 / 0 นั้นจะต้องค้นหาข้อมูลด้วยตนเองที่ระดับสวิตช์กระบวนการ (ซึ่งช้ามาก) ค่าตาราง adjacency เหล่านี้จะไม่เปลี่ยนแปลงตราบใดที่ encapsulation บน Serial1 / 0 ไม่เปลี่ยน ดังนั้น Cisco IOS จึงเก็บข้อมูลการเขียนคำคุณศัพท์ซ้ำลงในตาราง adjacency

ข้อมูลการเขียนซ้ำมีส่วนร่วมมากขึ้นเมื่อคุณดูที่ frame-relay หรือ ATM PVC

เอกสารเกี่ยวกับ CCO นี้ (รหัสเอกสาร: 17812)อาจอธิบายสิ่งต่าง ๆ ได้ดีกว่าที่ฉันสามารถทำได้โดยการบดบังเนื้อหา CCO จำนวนมาก


การทำงานของชั้น 2 จะไม่ได้รับการพิจารณาจาก CAM เท่านั้น? การดำเนินการของเลเยอร์ 3 จะปรึกษา FIB ซึ่งเป็นที่ที่ CEF ดำเนินการและหากจำเป็นต้องมีการตรวจสอบแพ็กเก็ตที่ลึกกว่าที่เลเยอร์ 3 (ในกรณีของแพ็กเก็ตที่ต้องผ่าน NAT) จะไม่ทำให้ CEF ไร้ประโยชน์สำหรับเราเตอร์ WAN
Michael พฤษภาคม

1
CEF ไม่ได้ใช้เพื่อ / แคช / adjacency หรือการค้นหา l3 นี่คือ 'การสลับอย่างรวดเร็ว' (ซึ่งไม่ได้รับการสนับสนุนอีกต่อไป) CEF เป็นแบบสร้างล่วงหน้าดังนั้นข้อมูลทั้งหมดที่คุณอาจต้องการ adjacency หรือการค้นหา l3 นั้นอยู่ในโครงสร้างที่เหมาะสมที่สุดในการค้นหาด้วยข้อ จำกัด ที่กำหนดโดยแพลตฟอร์มที่กำหนด
ytti

@ytti ฉันขอโทษ แต่ CEF ทำข้อมูล adjacency แคชฉันคิดว่าคุณสับสนว่าแคชนั้นบรรจุอย่างไร (IMHO ที่คุณคิดว่าแพ็กเก็ตจะต้องถูกจัดเก็บในแคช แต่นี่ไม่เป็นความจริง) ... ของความแตกต่างที่สำคัญระหว่าง CEF และวิธีการสลับอื่น ๆ (เช่นfast-switching) คือ CEF นั้นถูกคำนวณล่วงหน้า อย่างไรก็ตาม CEF ยังคงต้องแคชข้อมูลไม่เช่นนั้นจะต้องค้นหาระดับสวิตช์กระบวนการ ... ช้ามากและเหตุผลที่เราต้องการ CEF สำหรับทั้ง LAN และ WAN อินเตอร์เฟส
Mike Pennington

ผมคิดว่าเราก็ไม่เห็นด้วยกับสิ่งที่ 'แคช' หมายถึง แต่ใช่ประเด็นคือมันเป็นก่อนสร้างและคุณสมบัติหลายอย่าง (เช่น MPLS) มันเป็นเพียงโครงสร้างข้อมูลไม่มี 'เปลี่ยนกระบวนการ' จัดเก็บข้อมูลที่จะถอยกลับ ไปยัง
ytti

@ChristianDelapena คุณกำลังสับสนกับการใช้งานฮาร์ดแวร์ของตารางค้นหาฮาร์ดแวร์ (หน่วยความจำ CAM) ด้วยกระบวนการซอฟต์แวร์ IOS ที่เติมตารางการค้นหาฮาร์ดแวร์ (เช่น CEF) CEF มีอยู่แล้วดังนั้นคุณสามารถแมปรายการคำนำหน้าที่เลเยอร์ 3 กับข้อมูลที่จำเป็นต้องเขียนโปรโตคอลที่ layer2 ... อย่างไรก็ตามเลเยอร์ 2 อาจเป็นโปรโตคอลที่แตกต่างกันมากมายเช่นเฟรมรีเลย์, ATM, แพ็คเก็ตโอเวอร์ Sonet, hdlc, ppp หรืออีเธอร์เน็ต .. โปรโตคอลเหล่านี้ทั้งหมดสามารถพกพา IPv4 ได้ แต่พวกเขาต้องการฟิลด์เฉพาะที่กรอกไว้ในส่วนหัวของพวกเขาก่อนที่คุณจะสามารถใช้แพ็กเก็ต IP นั้นและใส่ในแคปเพื่อให้เร้าเตอร์ WAN ถัดไปประมวลผล
Mike Pennington
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.