Làm thế nào là chuẩn IEEE 802.1ad (còn gọi là gắn thẻ Vlan, QinQ), khi các gói quá lớn?


8

Gần đây tôi đã xử lý các vấn đề MTU . Và tất cả dường như xuất phát từ thực tế là bộ điều hợp ethernet trên các máy tính mới hơn mặc định có kích thước khung là 1504 byte:

>netsh interface ipv4 show subinterfaces

   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
  1504                1  3954161316  804790885  Local Area Connection

Bây giờ, theo một người ngẫu nhiên trên NetworkEngineering.stackexchange.com , bất kỳ gói nào quá lớn sẽ bị loại bỏ bởi bất kỳ Thẻ giao diện mạng (NIC) nào, vì gói ethernet quá lớn:

... Bất kỳ khung hình nào có MTU lớn hơn thông số kỹ thuật 802.3 là 1500

Một khung hình lớn hơn mức tối đa đã đặt sẽ bị loại bỏ bởi NIC - đó là một lỗi và HĐH sẽ không bao giờ biết về nó. (bộ đếm khung quá khổ sẽ nhấp lên, nhưng đó là tất cả.)

Điều này gây ra vấn đề khi máy tính cố gắng gửi các gói đến máy gateway. Lý tưởng nhất là tôi sẽ dựa vào khám phá Path MTU . Nhưng vì các gói ethernet được tạo ra quá lớn so với bất kỳ máy nào khác nhận được, nên không có cơ hội nào cho các gói tin phân mảnh quá lớn của IP Packet :

Sẽ không có sự "phân mảnh" nào cả. Lớp 2 (ethernet) không có nghĩa là nếu chỉ ra "sự phân mảnh cần thiết". Điều này được tìm ra ở Lớp 3 (IP) bởi các bộ định tuyến gửi tin nhắn ICMP khi nó phải bỏ gói vì nó không phù hợp với giao diện hop tiếp theo.

Điều này đưa tôi đến câu hỏi thứ hai của tôi đầu tiên:

  • Tại sao có một thông số cố ý tạo các khung ethernet không hợp lệ? Hành vi dự định ở đây là gì? Cho rằng các thẻ giao diện mạng khác không thể nhận được các gói có kích thước mặc định mới này, điều họ mong đợi sẽ xảy ra.

Điều này sau đó đưa tôi đến câu hỏi đầu tiên của tôi thứ hai. Và đây là điều đã được hỏi trước đây - rất nhiều.

  • Là thẻ QinQ 4 byte là một phần của tiêu đề khung ethernet, hay một phần của tải trọng ethernet? Nếu đó là một phần của tiêu đề, tại sao phần thân tải trọng tăng thêm 4 byte? Nếu đó là một phần của tải trọng ethernet, tại sao MTU tải trọng tăng thêm 4 byte (khi chúng ta biết rằng việc tăng thêm 4 byte khiến nó trở thành một gói không hợp lệ)?

Câu hỏi lớn hơn là ...

Nếu chúng ta lùi lại một lúc, chúng ta có câu hỏi lớn hơn:

chúng ta phải làm gì?

Phải có những người thiết kế tiêu chuẩn này. Họ mong đợi mọi người sẽ làm gì với các thiết bị tạo ra các gói quá lớn này ?

Tôi thực sự đang hỏi. Tôi cho rằng chúng tôi không có ý định đi đến mọi thiết bị phần cứng và hoàn tác việc tăng MTU 1504 và hoàn nguyên thành 1500:

netsh interface ipv4>set subinterface "Local Area Connection" mtu=1500 store=persistent
Ok.

đó sẽ là (và đang) một cơn ác mộng cấu hình.

Có phải ý tưởng có thể tắt tính năng gắn thẻ Vlan? Ngoài cơn ác mộng cấu hình, đơn giản là nó không hoạt động:

  • Bước 1: vô hiệu hóa gắn thẻ Vlan

    nhập mô tả hình ảnh ở đây

  • Bước 2: quan sát rằng nó không hoạt động:

    giao diện Netsh ipv4 hiển thị giao diện con

     MTU  MediaSenseState   Bytes In  Bytes Out  Interface
    

    1504                1     238125     245855  Local Area Connection
    

Nếu giải pháp cho vấn đề này là buộc thủ công tất cả các card mạng trở lại MTU 1500, thì tại sao họ lại nâng nó lên tới 1504 byte và tạo các gói không hợp lệ, ngay từ đầu?

Có một mảnh của câu đố tôi đang thiếu.

Thưởng trò chuyện

 Without 802.1Q tagging        Without 802.1Q tagging   
+------------------------+    +------------------------+
|Destination MAC: 6 bytes|    |Destination MAC: 6 bytes|
|Source MAC: 6 bytes     |    |Source MAC: 6 bytes     |
|Ethertype: 2 bytes      |    |802.1Q tag: 4 bytes     |
+------------------------+    |Ethertype: 2 bytes      |
|                        |    +------------------------+
|                        |    |                        |
/ Payload: 1500 bytes    /    / Payload: 1500 bytes    /
|                        |    |                        |
|                        |    |                        |
+------------------------+    |                        |
| Frame Check Sequence:  |    +------------------------+
|                 4 bytes|    | Frame Check Sequence:  |
+------------------------+    |                 4 bytes|
                              +------------------------+

Giản đồ hệ thống

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            |                  |
|                  |           |    |            |                  |
| 192.168.1.98/24  |-----------+    +------------| 192.168.1.10/24  |
| MTU = 1504 bytes |                             | MTU = 1500 bytes |
+------------------+                             +------------------+

Bạn cũng có thể thay thế bất kỳ cấu hình nào bạn muốn, tạo các gói lớn hơn 1500byte tối đa được phép :

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            | MTU = 1500 bytes |
| MTU = 16384bytes |           |    |            |                  |
|                  |-----------+    +------------|                  |
+------------------+                             +------------------+

Tôi đang cố gắng tìm một trang web có thể giải quyết vấn đề kỹ thuật, khái niệm, logic, cơ bản, lý thuyết về cách Ethernet có thể hoạt động khi một số thiết bị cố tình tạo ra các gói không hợp lệ.

Mối lo ngại xuất hiện khi tôi cố gửi một gói Ethernet không hợp lệ đến một thiết bị Ethernet khác:

  • máy tính tạo gói Ethernet

    Source MAC:      xx-xx-xx-xx-xx-xx
    Destination MAC: yy-yy-yy-yy-yy-yy
    Ethertype:       0x0800
    Payload:         ...1504 bytes...  (or could be ...16384 bytes, anything larger than 1500...)
    CRC:             4 bytes                
    

Gói này không hợp lệ vì quá lớn để thiết bị đích 802.3u nhận được. Vì hệ điều hành máy chủ của mục tiêu không bao giờ nhìn thấy gói và vì Ethernet không có chức năng báo cáo các gói không hợp lệ trở lại cho người gửi, nên gói "lớn" bị mất.

Thưởng trò chuyện

Từ Liên kết chuyển mạch liên kết của Cisco và Định dạng khung của IEEE 802.1Q :

Kích thước khung

Đơn vị truyền tối đa mặc định (MTU) của giao diện là 1500 byte. Với thẻ Vlan bên ngoài được gắn vào khung Ethernet, kích thước gói tăng thêm 4 byte. Do đó, bạn nên tăng MTU của từng giao diện trên mạng của nhà cung cấp một cách thích hợp. MTU tối thiểu được đề xuất là 1504 byte.

Trong khi đó:

Chuẩn Ethernet Ethernet 802.11 chỉ bắt buộc hỗ trợ cho các khung MTU 1500 byte.


3
Đây là một vấn đề đối với các NIC (có phần sụn) không hỗ trợ dot1q (ethertype == 0x8100) Tôi nghĩ rằng bạn đang gặp lỗi Windows / artifact / bất cứ điều gì cần thiết để xử lý các byte bổ sung trong khung - thông thường, MTU tải trọng IP không thay đổi, nhưng trình điều khiển nói với phần cứng chấp nhận nhiều dữ liệu hơn.
Ricky Beam

Ian, trong khi có vẻ như bạn đang gặp vấn đề ở đây, bạn đã có một số giả định mô tả đáng nghi ngờ trong bài đăng ... Nhận xét SE là hạn chế, nhưng tôi sẽ bắt đầu từ đầu: RE: "không có cơ hội đối với gói IP quá nhiều thông điệp phân mảnh quá lớn sẽ bị trả về " <- có vẻ sai, trừ khi bạn đang chạy hoàn toàn các dịch vụ không phải IP (như FCoE). Vì câu lệnh đầu tiên này thúc đẩy câu hỏi đầu tiên của bạn ( Tại sao có một thông số cố ý tạo các khung ethernet không hợp lệ? ), Tôi có xu hướng hỏi thêm chi tiết . Chúng tôi cần cấu trúc liên kết / sơ đồ, vv
Mike Pennington

Vui lòng thêm chi tiết về các thiết bị trong đường dẫn, tóm tắt chi tiết cấu hình Vlan / IP và bao gồm thông tin MTU cụ thể cho tất cả các liên kết ethernet. Chúng ta cũng cần biết số nhà sản xuất / kiểu máy của thiết bị mạng có liên quan (để bao gồm các NIC). Cũng bao gồm các bước khắc phục sự cố của bạn được thực hiện cho đến nay, cũng như đầu ra từ bất kỳ ảnh chụp sniffer nào bạn đã thực hiện. Nếu bạn cần làm rõ, vui lòng hỏi trong Network Engineering Meta hoặc trong trò chuyện NE
Mike Pennington

@MikePennington Ngoài ra, "không có cơ hội cho các gói tin phân mảnh quá lớn được trả lại" xuất phát từ vấn đề gói ethernet không đúng định dạng sẽ không bao giờ đến ngăn xếp TCP / IP của hệ điều hành. Nếu IP không bao giờ nhận được gói, nó không có cơ hội trả lời với bất kỳ dạng gói 3 loại ICMP nào.
Ian Boyd

Cho đến khi tôi nhìn thấy bản đồ, tôi không có cách nào để xác nhận điều đó; xin vui lòng hiểu rằng nhiều người đến đây với sự hiểu lầm về các mạng và chúng tôi phải giải mã những gì họ thực sự đang cố gắng nói với thực tế. Tôi có đầu vào có thể giúp đỡ; tuy nhiên tôi có những vấn đề thực tế khác trong cuộc sống trước khi tôi có thể trả lời
Mike Pennington

Câu trả lời:


6

Trả lời các mối quan tâm cá nhân trong bài ...

Về Đường dẫn MTU Discovery

Lý tưởng nhất là tôi sẽ dựa vào khám phá Path MTU. Nhưng vì các gói ethernet được tạo ra quá lớn so với bất kỳ máy nào khác nhận được, nên không có cơ hội nào cho các gói tin phân mảnh quá lớn của IP Packet

Dựa trên sơ đồ của bạn, tôi đồng ý rằng PMTUD không thể hoạt động giữa hai PC khác nhau trong cùng phân khúc LAN; PC không tạo thông báo Lỗi ICMP theo yêu cầu của PMTUD .

Khung Jumbo

Một số nhà cung cấp (như Cisco) có các mô hình chuyển đổi hỗ trợ tải trọng ethernet lớn hơn 1500 byte. Chính thức IEEE không xác nhận cấu hình này , nhưng ngành công nghiệp có nhu cầu hợp lệ để đi chệch khỏi MTU 1500 byte ban đầu. Tôi có mạng LAN lưu trữ / mạng dự phòng tận dụng khung jumbo vì lý do chính đáng; tuy nhiên, tôi đã đảm bảo rằng tất cả các MTU khớp với cùng một vlan khi tôi triển khai các khung lớn.

MTU không khớp trong miền quảng bá

Điểm mấu chốt là bạn không bao giờ nên có các MTU ethernet không khớp trong cùng một miền phát ethernet; nếu bạn làm thế, đó là lỗi hoặc lỗi cấu hình. Bất kể lỗi hay lỗi, bạn phải giải quyết những vấn đề này, đôi khi là thủ công.

Tất cả các cuộc thảo luận đó dẫn đến câu hỏi tiếp theo ...

Tại sao có một thông số cố ý tạo các khung ethernet không hợp lệ?

Tôi không chắc chắn rằng mình đồng ý ... Tôi không thấy loạt IEEE 802.3 hoặc RFC 894 tạo các khung không hợp lệ. Máy chủ triển khai hoặc cấu hình sai máy chủ tạo khung không hợp lệ. Để hiểu liệu việc triển khai của bạn có tuân theo thông số kỹ thuật hay không, chúng tôi cần nhiều bằng chứng hơn ...

Sơ đồ này ít nhất là bằng chứng prima facie rằng MTU của bạn không khớp trong miền phát sóng ...

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            |                  |
|                  |           |    |            |                  |
| 192.168.1.98/24  |-----------+    +------------| 192.168.1.10/24  |
| MTU = 1504 bytes |                             | MTU = 1500 bytes |
+------------------+                             +------------------+

Việc triển khai tuân thủ theo chuẩn 802.3 nên đáp ứng với sự không phù hợp của MTU như thế nào?

Họ [những người viết 'thông số kỹ thuật'] mong đợi mọi người sẽ làm gì với các thiết bị tạo ra các gói quá lớn này?

MTU 1504 và MTU 1500 trong cùng một miền quảng bá chỉ đơn giản là cấu hình sai; nó sẽ không bao giờ được mong đợi hoạt động nhiều hơn các mạng IP không khớp, hoặc các mạng con IP không khớp có thể được dự kiến ​​sẽ hoạt động. Công ty của bạn sẽ phải khắc phục sự cố và khắc phục nguyên nhân gốc rễ của sự không phù hợp MTU ... tại thời điểm này, thật khó để nói liệu nguyên nhân gốc là lỗi người dùng, lỗi thực hiện hay một số kết hợp ở trên.

Nếu các máy Windows bị ảnh hưởng đang đăng nhập thành công vào Miền Active Directory, người ta có thể viết các tập lệnh đăng nhập Windows để tự động khắc phục các sự cố MTU dựa trên một số thử nghiệm được xây dựng tốt bên trong các tập lệnh đăng nhập tên miền (giả sử Bộ điều khiển miền không phải là một phần của MTU các vấn đề).

Nếu các máy không đăng nhập vào một miền, lao động thủ công là một lựa chọn khác.

Các khả năng khác để ngăn chặn thiệt hại

Sử dụng công tắc layer3 Note 1 để xây dựng một vlan tùy chỉnh cho bất kỳ thứ gì đã phá vỡ MTU và đặt MTU ethernet của layer3 để khớp với các máy bị hỏng; điều này phụ thuộc vào PMTUD để giải quyết các vấn đề MTU ở lớp IP. Các lớp chuyển đổi lớp 3 tạo ra các lỗi ICMP theo yêu cầu của PMTUD .

Tùy chọn này hoạt động tốt nhất nếu bạn có thể giải quyết lại các máy bị hỏng bằng DHCP; và bạn có thể xác định các máy bị hỏng theo địa chỉ mac.

... tại sao họ lại tăng nó lên tới 1504 byte và tạo các gói không hợp lệ ngay từ đầu?

Khó nói ở điểm này

802.1ad so với 802.1q

Làm thế nào là chuẩn IEEE 802.1ad (còn gọi là gắn thẻ Vlan, QinQ), khi các gói quá lớn?

Tôi chưa thấy bằng chứng cho đến nay bạn đang sử dụng QinQ ; từ những bằng chứng hạn chế tôi đã thấy cho đến nay, bạn đang sử dụng đơn giản 802.1q đóng gói, mà nên làm việc một cách chính xác trong Windows, giả sử người lái xe hỗ trợ NIC 802.1q encap.


Ghi chú cuối :

Lưu ý 1 Bất kỳ công tắc lớp 3 nào cũng nên làm ... Cisco, Juniper và Brocades đều có thể thực hiện loại chức năng này.


2

Tôi có thể cố gắng trả lời câu hỏi khái niệm của bạn.

Tôi không thể tìm thấy một trích dẫn thực tế, nhưng có vẻ như khá rõ ràng rằng .1ad và .1q không bao giờ có ý định được xử lý bởi PC hoặc các máy chủ cuối khác. Chúng (thường) chỉ được xử lý bằng thiết bị cơ sở hạ tầng. Tôi không biết những gì trong tâm trí của các nhà thiết kế, nhưng thật khó để tưởng tượng các gói QinQ sẽ chuyển đến PC trong một kịch bản thực tế. Giao diện Ethernet trên thiết bị cơ sở hạ tầng (tuyến đường, thiết bị chuyển mạch, v.v.), có thể xử lý các gói lớn hơn.

Vì vậy, các gói chỉ không hợp lệ cho PC, theo lý thuyết không bao giờ nên nhìn thấy chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.