BGP là một giao thức lớp ứng dụng sử dụng TCP làm giao thức lớp truyền tải của nó - Cổng TCP số 179, cung cấp phân phối gói tin đáng tin cậy theo định hướng kết nối. BGP giả định rằng giao tiếp của nó là đáng tin cậy và không thực hiện bất kỳ cơ chế phân mảnh, truyền lại, xác nhận, giải trình tự và khôi phục lỗi nào như EIGRP. Thông tin BGP được đóng gói bên trong các phân đoạn TCP, sau đó được đóng gói bên trong các gói IP. BGP là giao thức định tuyến IP duy nhất sử dụng TCP làm lớp truyền tải của nó. RIP sử dụng UDP cho lớp truyền tải của nó; IGRP, EIGRP và OSPF nằm ngay trên lớp IP; và IS-IS nằm trong lớp mạng.
Bộ định tuyến BGP thiết lập kết nối TCP giữa chúng thông qua bắt tay ba chiều TCP tiêu chuẩn để trao đổi thông báo xác nhận các tham số kết nối và cập nhật định tuyến đầy đủ. Bộ định tuyến BGP chỉ gửi các thay đổi (cập nhật được kích hoạt) sau đó. BGP cũng gửi các tin nhắn lưu giữ định kỳ, tương tự như các gói Hello trong EIGRP, OSPF và IS-IS.
BGP luôn có hơn 120.000 tuyến Internet để quảng cáo, sử dụng TCP để xử lý quy trình xác nhận. Cửa sổ TCP 16-bit cho phép gửi tối đa 65536 byte mà không cần chờ xác nhận. Nếu các gói 1000 byte đang được gửi, khoảng 65 gói được phép gửi mà không cần chờ xác nhận. Với cửa sổ trượt TCP, người nhận thường xác nhận ở nửa sau của cửa sổ gửi, điều này cho phép bất kỳ ứng dụng TCP nào, ví dụ: BGP, truyền các gói tin mà không cần phải dừng lại và chờ thông báo xác nhận. TCP được chọn làm lớp truyền tải cho BGP vì TCP có thể truyền một lượng lớn dữ liệu một cách đáng tin cậy. Với bảng định tuyến Internet đầy đủ có kích thước vượt quá 32MB và vượt quá 1000 byte BGP thay đổi mỗi phút, dựa vào TCP để tạo cửa sổ và độ tin cậy sẽ tốt hơn việc triển khai khả năng cửa sổ
Bản tin BGP được mang trong các phân đoạn TCP. Kích thước thư tối thiểu và tối đa lần lượt là 19 và 4096 octet hoặc byte. Tất cả các thông báo BGP đều có chung một tiêu đề. Một phần dữ liệu có thể theo sau tiêu đề hoặc có thể không phụ thuộc vào loại thông báo.
Hình 3.6: Định dạng tiêu đề bản tin
Marker: là một trường 16 byte được sử dụng để phát hiện mất đồng bộ hóa giữa các BGP peer và xác thực thông báo khi hỗ trợ xác thực. Nó được đặt thành tất cả 1s nếu loại thông báo là Open hoặc nếu thông báo là Open message không chứa thông tin xác thực. nếu không giá trị của Marker có thể được dự đoán bằng một số tính toán như một phần của quá trình xác thực.
Length: là trường 2 byte cho biết tổng độ dài của thông báo bao gồm tiêu đề, tính bằng octet.
Type là trường 1 byte chỉ định loại thông báo. BGP xác định các loại bản tin sau:
Bảng 1.1: Bảng xác định các loại bản tin của giao thức BGP
Open (Type Code 1)
Tin nhắn đầu tiên được gửi bởi cả hai peer sau khi kết nối TCP đã được thiết lập. Nếu bản tin Open message được chấp nhận, bản tin Keepalive sẽ được gửi để xác nhận việc Open. Các bản tin Keepalive, Update và Notification chỉ có thể được trao đổi sau khi Open đã được xác nhận và kết nối BGP được thiết lập.
Update (Type code 2)
BGP peer trao đổi các bảng định tuyến BGP đầy đủ trên kết nối TCP ban đầu. Các cập nhật về những thay đổi trong bảng định tuyến sẽ được gửi sau đó.
Notification (Type code 3)
Được gửi khi phát hiện lỗi hoặc điều kiện đặc biệt. Kết nối BGP sẽ bị ngắt ngay lập tức khi một bản tin Notification message được gửi đi. Một bản tin Notification message bao gồm Error Code, Error Subcode và dữ liệu hoặc lý do gây ra lỗi
Keepalive (Type Code 4)
Chỉ bao gồm tiêu đề bản tin BGP 19 byte mà không có dữ liệu bổ sung. Duy trì kết nối BGP giữa 2 BGP peer. Được đổi trong khoảng thời gian một phần ba (1/3) thời gian lưu giữ, nhưng không ít hơn 1 giây; 60 giây theo mặc định. Bản tin Keepalive không được gửi nếu thời gian lưu giữ đã thương lượng cho phiên BGP là 0.
Hình 3.7: Định dạng BGP Open Message
Bản tin BGP Open message chứa các trường và thông tin sau:
Version: Trường 1 byte cho biết số phiên bản BGP đang chạy trên trình khởi tạo. Phiên bản chung cao nhất mà cả hai bộ định tuyến đã thương lượng và hỗ trợ sẽ được sử dụng. Hầu hết các triển khai BGP hiện tại đều sử dụng phiên bản hiện tại - BGP-4.
My Autonomous System: Trường 2 byte cho biết số AS của trình khởi tạo. Một BGP peer sử dụng thông tin này để xác định xem phiên BGP là EBGP hay IBGP và sẽ kết thúc phiên BGP nếu nó không phải là số AS mong đợi.
Hold time: Trường 2 byte cho biết số giây được khởi tạo cho bản tin hold time BGP - khoảng thời gian có thể trôi qua trước khi người nhận phải nhận được thông báo Keepalive hoặc Update từ người khởi tạo. Người nhận bản tin Open message sẽ tính toán giá trị hẹn giờ để sử dụng bằng cách so sánh trường Hold time được chỉ định trong bản tin Open message và giá trị hẹn giờ giữ đã định cấu hình của nó, chấp nhận giá trị nhỏ hơn hoặc từ chối kết nối. Hold time bằng 0 hoặc ít nhất 3 giây. Hold time mặc định là 180 giây.
BGP Identifier: Trường 4 byte cho biết Router ID của trình khởi tạo. Định danh BGP là địa chỉ IP được gán cho bộ định tuyến BGP và được xác định khi khởi động quy trình định tuyến BGP. ID bộ định tuyến BGP được chọn giống như cách chọn ID bộ định tuyến OSPF. ID bộ định tuyến BGP có thể được định cấu hình tĩnh thay vì cấu hình động.
Optional Parameters Length: Trường 1 byte cho biết tổng độ dài của trường được tính bằng octet. Giá trị bằng 0 cho biết rằng không có trường tham số tùy chọn nào được đưa vào bản tin Open message.
Optional Parameters: Trường có độ dài thay đổi có chứa danh sách các tham số tùy chọn. Mỗi tham số được chỉ định bởi trường Type 1 byte, trường Length 1 byte và trường Giá trị độ dài biến thể có chứa chính giá trị tham số. Trường này được sử dụng để quảng cáo hỗ trợ cho các khả năng tùy chọn, ví dụ: tiện ích mở rộng đa giao thức, làm mới tuyến, …
Bản tin BGP Update message có thể quảng cáo một tuyến khả thi duy nhất hoặc rút lại nhiều tuyến không khả thi hoặc cả hai. Update message chỉ chứa thông tin về một đường dẫn duy nhất, nhiều đường dẫn yêu cầu nhiều Update message. Tất cả các thuộc tính đường dẫn trong Update message tham chiếu đến một đường dẫn cụ thể và các tiền tố có thể đạt được thông qua đường dẫn được chỉ định -
đóng gói cập nhật. Bản tin BGP Update message chứa các trường và thông tin sau:
Hình 3.8: Định dạng bản tin BGP Update Message
Unfeasible Routes Length: Trường 2 byte cho biết tổng độ dài của trường Withdrawn Routes, tính bằng octet. Giá trị bằng 0 cho biết rằng không có tuyến đường nào đang được withdrawn và không có trường Withdrawn Routes bao gồm trong Update message.
Withdrawn Routes: Trường có độ dài thay đổi chứa danh sách các tuyến đường không thể truy cập sẽ được rút khỏi dịch vụ (nếu có). Mỗi tuyến đường trong danh sách được mô tả bằng một tuple (Length - Prefix). Nếu phần Length của bộ giá trị là 0, Prefix khớp với tất cả các tuyến đường.
Total Path Attribute Length: Trường 2 byte cho biết tổng độ dài của trường, tính bằng octet. Giá trị bằng 0 cho biết rằng không có thuộc tính đường dẫn và NLRI nào được bao gồm trong Update message.
Path Attributes: Trường có độ dài thay đổi liệt kê các thuộc tính được liên kết với NLRI trong trường sau. Mỗi thuộc tính đường dẫn là một bộ ba có độ dài thay đổi của (Attribute Type, Attribute Length, Attribute Value). Trường Attribute Type 2 byte bao gồm 4 bit Cờ Attribute, 4 bit không sử dụng và trường Attribute Type Code 1 byte.
bằng cách sử dụng các bộ giá trị (Length - Prefix). Giá trị Length bằng 0 cho biết một Prefix phù hợp với tất cả các tiền tố IP.