Thương lượng với Neighbor Router

Một phần của tài liệu TÌM HIỂU về GIAO THỨC ĐỊNH TUYẾN (Trang 26)

Trước khi liên lạc BGP thiết lập, BGP speaker phải trở thành neighbor, hoặc peers. Bước đầu tiên để thành peer là BGP speaker phải thiết lập một TCP session với một speaker khác sử dụng TCP port 179. Nếu điều này không xảy ra, BGP speaker không bao giờ trở thành peers. Sau khi TCP session được thiết lập, BGP speaker

gửi một OPEN message đến speaker kia.Từ đó trở đi, BGP speaker sẽ gửi UPDATE message, NOTIFICATION message, KEEPALIVE message. Trạng thái xuyên suốt quá trình lập neighbor được gọi là Finite State Machine.

FINITE STATE MACHINE:

BGP Finite State Machine (FSM) định nghĩa các state mà các speaker phải đi qua. Có 6 trạng thái trong FSM.

Hình 7

Idle state: là trạng thái đầu tiên mà BGP speaker trải qua khi khởi tạo một phiên BGP. Trong trạng thái này BGP speaker đợi một BGP start event, từ chối tất cả BGP kết nối đến và không khởi tạo bất kỳ một kết nối BGP nào (BGP connection). Start event có thể được tạo ra bởi BGP speaker hay quản trị hệ thống. Khi start event xảy ra, BGP speaker sẽ khởi tạo tất cả tài nguyên BGP của nó. BGP speaker sẽ khởi động ConnectRetry timer, khởi tạo một kết nối TCP tới BGP speaker mà muốn trở thành peer với nó và cũng lắng nghe start event từ BGP speaker khác. BGP speaker sẽ thay đổi trạng thái của nó sang Connection. Nếu bất kỳ lỗi nào xảy ra trong xuốt quá trình này, phiên TCP sẽ bị ngắt và trạng thái của BGP speaker sẽ trở lại Idle. Và cần một start event mới để BGP speaker thử kết nối lại lần nữa. Nếu start event được set tự động chạy sau 1 khoảng thời gian, BGP speaker sẽ đợi 60

giây trước khi thử lại (retry) kết lối. Và mỗi lần retry kế tiếp thời gian chờ sẽ tăng lên gấp đôi.

Connection state: Trong trạng thái này, BGP sẽ đợi kết nối TCPđược thiết lập. Một khi kết nối được thiết lập thành công, BGP speaker sẽ reset ConnectRetry timer, nó sẽ gửi một bản tin OPEN tới remote BGP speaker và chuyển trạng thái của nó sang OpenSent. Nếu kết nối TCP không được kết nối thành công, BGP speaker sẽ khởi tạo lại ConnectRetry timer, và tiếp tục nghe một yêu cầu kết nối khác tử remote BGP speaker, và chuyển trạng thái sang Active. Nếu ConnectRetry timer hết hạn, BGP speaker sẽ khởi tại lại ConnectRetry timer và tiếp tục lắng nghe một yêu cầu kết nối từ remote BGP speaker và nó vẫn giữ trạng thái của nó ở Connection state. Nếu bất cứ loại event khác gây lên lỗi thì BGP speaker sẽ đóng kết nối TCP và chuyển trạng thái của nó về Idle. Tất cả các start even đều sẽ bị lờ đi trong Connection state.

Active state: trong trạng thái này, BGP speaker thử khởi tạo một phiên kết nối TCP với BGP speaker mà muốn trở thành peer với nó. Khi kết nối thành công, BGP speaker sẽ xoá sạch ConnectRetrry timer, sau đó BGP speaker sẽ gửi một bản tin OPEN tới remote BGP speaker và chuyển trạng thái sang OpenSent. Nếu ConnectRetry timer hết hạn, BGP speaker sẽ thiết lập lại thời gian, khởi tạo một phiên kết nối TCP và tiếp tục lắng nghe các yêu cầu kết nối từ remote BGP speaker và chuyển trạng thái sang Connection. Nếu BGP speaker phát hiện một BGP speaker khác đang gắng thiết lập kết nối với nó và địa chỉ IP của remote BGP speaker không phải là địa chỉ mong muốn, BGP speaker sẽ từ chối yêu cầu kết nối này và thiết lập lại ConnectRetry timer, tiếp tục lắng nghe một yêu cầu kết nối khác từ remote BGP speaker và giữ trạng thái Active. Nếu bất cứ loại event khác nào gây ra lỗi,BGP speaker sẽ đóng kết nối TCP và chuyển trạng thái về Idle. Tất cả start event sẽ bị lờ đi ở trạng thái Active.

OpenSent state: ở trạng thái này, BGP speaker đợi để nhận một bản tin OPEN từ remote BGP speaker.Khi BGP speaker nhận bản tin OPEN, tất cả các trường sẽ được kiểm tra.Nếu một lỗi được phát hiện bởi BGP speaker, nó sẽ gửi một NOTIFICATION message tới remote BGP speaker và ngắt kết nối TCP, và chuyển trạng thái của nó sang Idle. Nếu không có lỗi trong OPEN message, BGP speaker sẽ gửi một bản tin KEEPALIVE tới remote BGP speaker, thiết lập các giá trị keepalive timer và hold timer. BGP speaker sẽ đàm phán để điều chỉnh giá trị hold time. Nếu hold time giá trị là 0, có nghĩa là keepalive timer và hold timer sẽ không bao giờ bị

reset. Sau quá trình đàm phán về hold timer, BGP speaker sẽ xác định kết nối là iBGP hay eBGP.

Nếu 2 BGP speaker cùng trong một autonomous system, loại BGP sẽ là iBGP. Nếu chúng thuộc 2 autonomous system khác nhau, loại BGP sẽ là eBGP.

Khi loại BGP đã được xác định, trạng thái của nó sẽ chuyển sang OpenConfirm. Trong suốt trạng thái này, có thể BGP speaker sẽ nhận được một TCP disconnect message. Nếu điều này xảy ra, BGP speaker sẽ chuyển trạng thái sang Active. Nếu bất kỳ event khác nào gây ra lỗi, BGP speaker sẽ đóng kết nối TCP và chuyển trạng thái sang Idle. Tất cả các start event sẽ bị lờ đi trong trạng thái OpenSent.

OpenConfirm state: ở trạng thái này, BGP speker đợi để nhận một KEEPALIVE message từ remote BGP speaker. Khi KEEALIVE message được nhận, BGP speaker sẽ thiết lập lại hold timer và chuyển trạng thái sang Established. Tại thời điểm này mối quan hệ peer giữa chúng đã được thiết lập. Nếu một NOTIFICATION message được nhận thay vì KEEPALIVE message , BGP speaker sẽ thay đổi trạng thái sang Idle. Trong trường hợp hold timer hết hạn trước khi nhận được KEEPALIVE message từ remote BGP speaker, nó hủy kết nối TCP chuyển trạng thái sang Idle. BGP speaker có thể nhận được TCP disconnect từ peer của nó. Nếu điều này xảy ra, BGP speaker chuyển trạng thái sang Idle.BGP speaker cũng chuyển sang Idle nếu nó nhận đc 1 stop event tự động sinh ra hoặc từ người quản trị. Bất cứ loại event nào gây lên lỗi, BGP speaker sẽ đóng kết nối TCP và chuyển trạng thái sang Idle. Tất cả các start event sẽ bị lờ đi trong trạng thái này.

Established state: Khi một BGP speaker đạt đến trạng thái Established, tất cả các quá trình đàm phán với neigbor đã hoàn tất. Ở trạng thái này BGP peer sẽ trao đổi UPDATE message và KEEPALIVE message. Mỗi lận BGP speaker nhận được một UPDATE message hay KEEPALIVE message, nó sẽ thiết lập lại hold timer của nó. Nếu hold timer hết hạn trước khi nhận được một UPDATE message hay KEEPALIVE message, BGP speaker sẽ gửi một NOTIFICATION message tới peer của nó, ngắt phiên kết nối TCP và chuyển trạng thái sang Idle. Bất cứ event: “nhận được NOTIFICATION message, lỗi ở UPDATE message, TCP disconnect message, stop event, hay các event khác khiến cho BGP speaker tạo ra một bản NOTIFICATION” thì BGP speaker sẽ chuyển trạng thái về Idle. Tất cả Start event sẽ bị lờ đi trong trạng thái Established.

Khi BGP peer đạt đến trạng thái Established, chúng sẽ bắt đầu quá trình trao đổi thông tin định tuyến.

Một phần của tài liệu TÌM HIỂU về GIAO THỨC ĐỊNH TUYẾN (Trang 26)