Một khung gồm có sáu phần cơ bản sau:
- Thứ nhất là đầu khung (SOF). SOF chiếm 4 byte, dấu phẩy và 3 byte chỉ ra loại dịch vụ kết nối.
- Thứ hai là Frame Header (FH). Chứa thông tin điều khiển hoạt động kết nối, thực hiện định tuyến, xử lý giao thức và phát hiện lỗi hoặc sai thứ tự của khung. Một trong những chức năng chính của FH là xác định duy nhất các
khung đang hoạt động. Một frame được xác định duy nhất bởi các trường sau: S_ID, D_ID, OX_ID, RX_ID, SEQ_ID và SEQ_CNT. Sequence Qualifier sẽ xác định các chuỗi đang hoạt động và đang mở. Sequence Qualifier bao gồm tất cả các trường trên trừ trường SEQ_CNT. SEQ_CNT được sử dụng để xác định vị trí của khung trong chuỗi. Phần Option Header có thể chứa tới 4 loại header, đó là: Expiration Security Header (bao lâu thì Frame sẽ bị loại bỏ), Network Header (chứa thông tin liên quan tới các giao thức mức cao liên quan tới mạng, như IP), Association Header (gắn Frame với các định danh trao đổi khác) và Device Header (chứa các thông tin mức cao khác, như SCSI).
Các trường con trong Frame Header:
o R_CTL: Điều khiển định tuyến - phân loại chức năng của khung. o D_ID: Định danh đích - địa chỉ định danh cổng đích của khung. o S_ID: Định danh nguồn - địa chỉ định danh cổng nguồn của khung. o TYPE: Loại cấu trúc dữ liệu - phân loại dữ liệu của khung.
o F_CTL: Điều khiển khung - điều khiển thông tin xử lý khung. o SEQ_ID: Định danh chuỗi - định danh duy nhất chuỗi khung. o DF_CTL: Các header tùy chọn trong trường dữ liệu .
o SEQ_CNT: Biến đếm của chuỗi - Số khung nằm trong Sequence hoặc Exchange.
o OX_ID: Định danh Exchange nguồn . o RX_ID: Định danh Exchange bên trả lời. o Parameter: thông tin về khung.
- Tiếp theo là trường Payload. Đối với các khung dữ liệu, trường này sẽ chứa dữ liệu của người sử dụng. Đối với các khung điều khiển liên kết, payload không được sử dụng.
- Trường CRC được sử dụng để kiểm tra tính toàn vẹn dữ liệu của trường FH và trường Payload.
- Cuối cùng là phân cách kết thúc khung (EOF): là một tập có thứ tự báo hiệu kết thúc nội dung của khung. Ngoài ra, EOF còn chứa các thông tin về tính hợp lệ của nội dung khung, mở hoặc đóng kết nối hoặc ngắt kết nối nếu cần.
2.3.1.3.3. Sequence
Mức logic trên frame đó là Sequence. Các Sequence cung cấp phương tiện để đảm bảo tính toàn vẹn của các khối dữ liệu được truyền hoặc nhận. Một Sequence được tạo
bởi một nhóm các khung có quan hệ được truyền theo một hướng. Có một vài chức năng được thực hiện bởi các tập có thứ tự (Odered Set) SOF hoặc EOF, đó là khởi tạo hoặc kết thúc các Sequence. Các thông tin khác liên quan đến việc kiểm soát Sequence nằm trong một trường con của trường FH.
Sequence được tạo nên bởi một hoặc nhiều khung truyền theo một hướng từ một N_Port tới một N_Port khác. Mỗi khung trong một sequence được đánh số duy nhất trong trường Seq_Cnt (Sequence Count).
2.3.1.3.4. Exchange
Exchange là cấu trúc lớn nhất mà FC-2 có thể hiểu được. Một Exchange tạo nên bởi các Sequence có quan hệ. Exchange cung cấp phương tiện truyền tin cậy các Sequence. Chúng thực hiện điều này bởi việc phát hiện và khôi phục lỗi của Sequence.
2.3.1.3.5. Giao thức
Các giao thức liên quan đến các dịch vụ đưa ra bởi kênh quang. Các giao thức có thể đặc trưng cho các dịch vụ lớp cao hơn mặc dù kênh quang cung cấp các giao thức riêng của nó để quản lý môi trường hoạt động cho truyền dữ liệu.
2.3.1.3.6. Điều khiển luồng
Điều khiển luồng là tiến trình điều khiển của FC-2 nhằm điều chỉnh tốc độ dòng giữa các N_Port và giữa một N_Port với Fabric giúp tránh hiện tượng tràn tại đầu thu. Điều khiển luồng phụ thuộc vào các mức dịch vụ. Các khung mức 1 sử dụng điều khiển luồng end-to-end, mức 3 chỉ sử dụng buffer-to-buffer, các khung mức 2 sử dụng cả hai loại điều khiển luồng trên.
Điều khiển luồng end-to-end được sử dụng trong các trường hợp truyền thông từ N_Port tới N_Port. Đối với loại điều khiển nay, bên nhận sẽ phản hồi cho tất cả các khung hợp lệ nó nhận được bằng khung ACK. Trường hợp bộ nhớ đệm không sẵn sàng bên phía nhận, thì nó sẽ trả lời bằng khung Busy. Trường hợp khung không hợp lệ nó sẽ trả lại một khung từ chối. Sequence Initiator chịu trách nhiệm duy trì số lượng thẻ hiện tại (EE_Credit_CNT). Số thẻ sẽ giảm khi nó gửi đi một khung và sẽ tăng khi nhận được một phản hồi ACK.
Điều khiển luồng buffer-to-buffer được sử dụng trong trường hợp một N_Port trao đổi với fabric hoặc trong trường hợp kết nối N_port tới N_Port theo mô hình kết nối
point-to-point. Trong trường hợp này, mỗi bên chịu trách nhiệm duy trì BB_Credit_Count của nó. Cũng giống như end-to-end, BB_Credit_CNT sẽ giảm khi khung được truyền nhưng nó chỉ tăng khi nhận được R_RDY Ordered Sequence (Primitive Signal). Điều đó chỉ ra rằng bên nhận đã sẵn sàng nhận các khung khác.
2.3.1.3.7. Các mức dịch vụ
Để đảm bảo hiệu quả truyền dẫn của nhiều loại lưu lượng khác nhau, kênh quang cung cấp 6 mức dịch vụ khác nhau. Người sử dụng chọn mức dịch vụ dựa trên đặc tính của các ứng dụng của mình, như chiều dài gói tin và khoảng thời gian truyền dẫn.
- Mức 1: Dịch vụ kết nối xác nhận.
- Mức 2: Dịch vụ kết nối vô hướng xác nhận.
- Mức 3: Dịch vụ kết nối vô hướng không xác nhận. - Mức 4: Dịch vụ kết nối có hướng băng thông phân đoạn. - Mức 5: Đang được nghiên cứu và phát triển trong tương lai. - Mức 6: Dịch vụ kết nối đơn hướng.
Mức 1:
Mức 1 cung cấp kết nối riêng giữa hai cổng Fabric là Sequence Initiator và Sequence Recipient. Kết nối có toàn bộ băng thông. Ngoài ra, trong đa số các trường hợp các kết nối mức 1 không cho phép các cổng khác truy cập hai cổng này. Điều này sẽ đảm bảo cho các cổng không ở trạng thái bận. Nó cũng sẽ đảm bảo rằng tất cả các khung sẽ đến theo thứ tự chúng được gửi làm tăng tốc độ đồng bộ lại bên phía nhận. Kết nối mức 1 sẽ duy trì trạng thái hoạt động cho đến khi Sequence Initiator hoặc Sequence Recipient đóng nó. Mức này rất thích hợp với mô hình kết nối fabric, ở đó các kết nối riêng dễ dàng định tuyến trên mỗi kết nối thay vì trên mỗi khung. Điều này làm đơn giản hoạt động của fabric bởi vì N_Port có thể quản lý điều khiển kết nối. Nó cũng làm cho ít sử dụng tài nguyên của fabric hơn.
Lưu ý: có một tùy chọn chính của mức 1 gọi là Intermix, cho phép các khung ở mức 1 và mức 2 được gửi qua kết nối mức 1 trong giai đoạn không kích hoạt. Hình dưới đây chỉ rõ quá trình điều khiển luồng trong kết nối mức 1.