Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

CƠ BẢN HOẠT ĐỘNG CỦA BGP (Phần 3)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • CƠ BẢN HOẠT ĐỘNG CỦA BGP (Phần 3)

    Tuy nhiên, lệnh aggregate có thể tạo ra các tuyến tổng để AS_SEQ phải có giá trị null. Khi các mạng của tuyến tóm tắt có các giá trị AS_SEQ khác nhau, router chỉ đơn giản không thể tạo ra một dạng chính xác của AS_SEQ, vì vậy nó dùng giá trị AS_SEQ bằng null. Tuy nhiên, hành động này tạo ra một khả năng bị vòng lặp bởi vì nội dung của AS_PATH, đặc biệt là AS_SEQ được dùng để ngăn ngừa tuyến không bị quảng bá đến một AS đã có thông tin về tuyến đó.

    Phân đoạn AS_SET của biến AS_PATH giải quyết vấn đề khi tuyến tổng có giá trị AS_SEQ là trống. AS_SET chứa một danh sách không có thứ tự của tất cả các ASN của tất cả các tuyến con. Trong ví dụ dưới đây router dùng một giá trị AS_SEQ bằng null cho một tuyến tổng và sau đó một tuyến tổng tương tự với tuỳ chọn as_set sẽ tạo ra thuộc tính AS_SET.

    Chú ý là thuộc tính AS_PATH bao gồm các giá trị AS_CONFED_SEQ và AS_CONFED_SET.

    Danh sách dưới đây tóm tắt các hành động được thực hiện bởi lệnh aggregate-address khi nó tạo ra một tuyến tổng:
    • Lệnh này không tạo ra tuyến tổng nếu bảng BGP không có bất kỳ tuyến nào cho NLRI bên trong tuyến tổng.
    • Nếu tất cả các tuyến con bị mất ra khỏi bảng BGP, tuyến tổng của sẽ bị mất. Nói cách khác, router láng giềng sẽ được thông báo là tuyến tổng không còn tồn tại.
    • Lệnh này gán giá trị NEXT_HOP của tuyến tổng, liệt kê trong bảng BGP với giá trị là 0.0.0.0.
    • Lệnh này sẽ gán địa chỉ NEXT_HOP của tuyến tổng khi được quảng bá đến router láng giềng dùng địa chỉ update source trong từng quan hệ láng giềng.
    • Nếu tất cả các tuyến con bên trong một tuyến tổng có cùng giá trị AS_SEQ, lệnh này sẽ gán giá trị AS_SEQ của tuyến tổng có cùng giá trị như AS_SEQ của các tuyến con.
    • Nếu giá trị AS_SEQ của các tuyến con là khác nhau, giá trị AS_SEQ của tuyến tổng có giá trị NULL.
    • Khi tuỳ chọn as_set được cấu hình, router sẽ tạo ra AS_SET cho tuyến tổng, nhưng chỉ nếu tuyến tổng AS_SEQ là null.
    • Bình thường, nếu tuyến tổng được quảng bá đến eBGP, router sẽ thêm giá trị AS của chính nó vào AS_SEQ trước khi gửi cập nhật.
    • Lệnh này sẽ loại bỏ việc quảng bá tất cả các mạng con nếu tùy chọn summary-only được dùng. Nếu tùy chọn summary-only bị loại bỏ, tất cả các tuyến con được quảng bá và nếu tùy chọn suppress-map được cấu hình, chỉ có một vài mạng con được quảng bá.

    Ví dụ dưới đây mô tả R3 đang tóm tắt mạng 23.0.0.0/8. R3 quảng báo tuyến tóm tắt với giá trị AS 123 như là giá trị AS duy nhất trong AS_SEQ bởi vì vài mạng con có AS bằng 45 và các mạng khác có AS bằng 678 45. Kết quả là R3 dùng thuộc tính AS_SEQ bằng null cho tuyến tổng. Phần sau của ví dụ mô tả ảnh hưởng của tùy chọn as_set.

    Chú ý rằng các tuyến của R3 về mạng 23 có cùng thuộc tính AS_PATH ngoại trừ một mạng mới có giá trị AS_PATH có chứa AS 678. Kết quả là R3 sẽ tạo ra một tuyến tổng có AS_SEQ bằng null.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R3# show ip bgp | include 23
    
    *> 23.3.0.0/20 4.4.4.4 0 45 i
    
    *> 23.3.16.0/20 4.4.4.4 0 45 i
    
    *> 23.3.32.0/19 4.4.4.4 0 45 i
    
    *> 23.3.64.0/18 4.4.4.4 0 45 i
    
    *> 23.3.128.0/17 4.4.4.4 0 45 i
    
    *> 23.4.0.0/16 4.4.4.4 0 45 678 i[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Lệnh sau được thêm vào trong cấu hình BGP của R3.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]aggregate-address 23.0.0.0 255.0.0.0 summary-only[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Chú ý là bây giờ R3 sẽ không có một hàng 23.0.0.0/8 trong bảng BGP, tuy nhiên R3 sẽ quảng bá những tuyến tổng đến router láng giềng bởi vì có ít nhất một tuyến con tồn tại.

    R1 đã học được các mạng. Giá trị chặng kế tiếp bằng 3.3.3.3 (là địa chỉ nguồn cập nhật của R3) nhưng thuộc tính AS_PATH bằng null bởi vì R1 là trong cùng AS với R3. Nếu R1-R3 là quan hệ eBGP, R3 phải thêm vào giá trị AS của chính nó. Chú ý lệnh kế tiếp là trên R1.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# sh ip bgp | begin Network
    
        Network  Next Hop Metric LocPrf Weight Path
    
    *>I 21.0.0.0 3.3.3.3    0     100     0     45  i
    
    *>I 23.0.0.0 3.3.3.3    0     100     0         I[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Kế tiếp, R1 hiển thị thuộc tính kết hợp AGGREGATOR, trong đó chỉ ra R3 (3.3.3.3) và giá trị AS của nó (123) là điểm thực hiện thực hiện tóm tắt tuyến. Ngoài ra cụm từ “atomic_aggregate” cũng ám chỉ đến sự kiện là thuộc tính ATOMIC_AGGREGATE PA cũng đã được gán. Thuộc tính này cũng chỉ ra rằng NLRI là một tuyến tócm tắt.
    Code:
    R1# show ip bgp 23.0.0.0
    
    BGP routing table entry for 23.0.0.0/8, version 45
    
    Paths: (1 available, best #1, table Default-IP-Routing-Table)
    
    Flag: 0x800
    
    Advertised to update-groups:
    
    2
    
    Local, (aggregated by 123 3.3.3.3), (received & used)
    
    3.3.3.3 (metric 2302976) from 3.3.3.3 (3.3.3.3)
    Origin IGP, metric 0, localpref 100, valid, internal, atomic-aggregate, best

    R6 trong AS 678 nhận tuyến tóm tắt từ R1 nhưng thiếu thông tin trong biến AS_PATH hiện tại, cho nên R6 có thể học tuyến này, có khả năng gây ra vòng lặp (chú ý rằng một trong những tuyến con 23.4.0.0/16 đến từ AS 678).
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R6# sh ip bgp nei 172.16.16.1 received-routes | begin Network
    
       Network   Next Hop    Metric  LocPrf Weight Path
    
    *> 21.0.0.0 172.16.16.1    0      123           45   i
    
    *> 23.0.0.0 172.16.16.1    0      123                i[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Cấu hình của R3 thay đổi để dùng thuộc tính as-set.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R3# aggregate-address 23.0.0.0 255.0.0.0 summary-only as-set[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R1 bây giờ đã có thành phần AS_SET trong biến AS_PATH, bao gồm một danh sách không có thứ tự của các AS của tất cả các tuyến con trên R3.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# sh ip bgp | begin Network
    
        Network   Next Hop Metric LocPrf Weight Path
    
    *>I 21.0.0.0  3.3.3.3    0     100     0     45     i
    
    *>I 23.0.0.0  3.3.3.3    0     100     0   {45,678} i[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Bây giờ, R4 không nhận mạng 23.0.0.0 do R1 đã kiểm tra thuộc tính AS_SET. Chú ý rằng giá trị AS678 có trong AS_SET và cũng là chỉ số AS của R6.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R6# sh ip bgp nei 172.16.16.1 received-routes | begin Network
    
       Network  Next Hop    Metric LocPrf Weight Path
    
    *> 21.0.0.0 172.16.16.1   0     123           45   i[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Chú ý: Các tuyến tổng có thể được thêm vào thông qua một phương thức khác. Đầu tiên, router sẽ tạo ra một tuyến tĩnh, có địa chỉ đích là null0. Sau đó địa chỉ mạng chỉ ra trong câu lệnh sẽ đúng bằng địa chỉ đích này để đưa tuyến tổng vào BGP. Phương thức này sẽ không lọc bất kỳ tuyến con nào.

    Bảng 12.5 tóm tắt các điểm chủ chốt liên quan đến quá trình tóm tắt tuyến dùng lệnh aggregate-address, auto-summary, và network.

    Lệnh Các tuyến con có bị xóa Những tuyến có thể được tóm tắt
    Auto-summary trong quá trình
    phân phối
    Tất cả Chỉ có những tuyến nào được đưa
    vào BGP với câu lệnh redistribute.
    Aggregate-address Tất cả, không có tuyến con nào hoặc
    chỉ một tuyến con
    Bất kỳ mạng nào tồn tại trong bảng BGP
    Auto-summary với câu lệnh
    network
    Không Chỉ có những route nào được chèn vào
    BGP trên router đó dùng lệnh network
    Bảng 12.5: Tóm tắt các lệnh được sử dụng trong BGP

    7. Thêm tuyến mặc định vào trong BGP

    Phương thức cuối cùng được mô tả trong chương này để đưa các tuyến vào trong bảng BGP là chèn các tuyến mặc định vào trong BGP. Các tuyến mặc định có thể đưa vào trong BGP theo một trong ba cách:
    • Bằng cách dùng lệnh network để đưa tuyến mặc định.
    • Bằng cách dùng lệnh redistribute.
    • Bằng cách đưa tuyến mặc định vào trong BGP dùng lệnh neighbor neighbor-id default-information [route-map route-map-name].
    Khi chèn một tuyến đường mặc định vào trong BGP dùng câu lệnh network, một tuyến mặc định 0.0.0.0/0 phải tồn tại trong bảng định tuyến và câu lệnh network 0.0.0.0 là cần thiết. Tuyến đường mặc định có thể được học thông qua bất kỳ cách thức nào, nhưng nếu nó bị xóa khỏi bảng định tuyến IP, BGP sẽ xóa tuyến đường mặc định ra khỏi bảng BGP.

    Động tác chèn một tuyến mặc định thông qua quá trình phân phối yêu cầu phải có thêm một lệnh đặc biệt, lệnh default-information originate. Tuyến đường mặc định phải tồn tại trong bảng định tuyến IP, ví dụ như một tuyến đường mặc định về null0 có thể được tạo ra. Sau đó, lệnh redistribute static có thể được dùng để quảng bá tuyến đường mặc định dạng tĩnh đó. Tuy nhiên, trong trường hợp đặc biệt của của tuyến đường mặc định, IOS của Cisco yêu cầu lệnh default-information originate.

    Việc chèn một tuyến đường mặc định vào trong BGP dùng câu lệnh neighbor neighbor-id default-information [route-map route-map-name] không thêm vào một tuyến mặc định trong bảng BGP cục bộ, thay vào đó, nó sẽ quảng bá một tuyến mặc định đến một router BGP láng giềng đã xác định. Thật ra, phương thức này thậm chí không kiểm tra sự tồn tại của một tuyến mặc định trong bảng định tuyến IP nhưng nó có thể thực hiện việc kiểm tra này. Nếu dùng tùy chọn route-map cùng với câu lệnh, route-map được tham chiếu sẽ kiểm tra các hàng trong bảng định tuyến IP (chứ không kiểm tra bảng BGP). Nếu một mệnh đề cho phép (permit) của route-map là trùng, tuyến đường mặc định sẽ được quảng bá đến router láng giềng.

    Ví dụ dưới đây mô tả trên R1, với tùy chọn route-map check-default kiểm tra sự tồn tại của một tuyến đường mặc định trước khi R1 gửi một tuyến mặc định đến cho R3.

    Cấu hình của R1 được liệt kê kế tiếp, trong đó route-map sẽ so trùng với một tuyến về 0.0.0.0/0 với một hành động cho phép (permit), cho phép quảng bá một tuyến đường mặc định về láng giềng 3.3.3.3 (R3).
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]router bgp 123
    
    neighbor 3.3.3.3 remote-as 123
    
    neigbor 3.3.3.3 update-source Loopback1
    
    neighbor 3.3.3.3 default-originate route-map check-default
    
    !
    
    ip route 0.0.0.00.0.0.0 Null0
    
    !
    
    ip prefix-list def-route seq 5 permit 0.0.0.0/0
    
    !
    
    route-map check-default permit 10
    
    match ip address prefix-list def-route[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R1 đã có một tuyến đường mặc định, như kết quả dưới đây:
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# show ip route | include 0.0.0.0/0
    
    S* 0.0.0.0/0 is directly connected, Null0[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R3 đã học được một tuyến đường mặc định từ R1 như dưới đây:
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R3# show ip bgp | begin Network
    
        Network  Next Hop  Metric LocPrf Weight Path
    
    *>I 0.0.0.0  1.1.1.1    100     0                i[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Thuộc tính nguyên mẫu của đường đi

    Tùy thuộc vào phương thức được dùng để đưa một tuyến vào trong bảng BGP, BGP gán một trong ba giá trị sau cho thuộc tính nguyên mẫu (Origin): IGP, EGP hoặc chưa hoàn tất (incomplete). Thuộc tính ORIGIN cung cấp một mô tả tổng quan một tuyến đã được đưa vào bảng BGP như thế nào. Lệnh show ip bgp bao gồm ba giá trị có thể. Bảng dưới đây liệt kê các giá trị này. Các ký tự đơn được dùng bởi hệ điều hành IOS của Cisco và các nguyên nhân tại sao một tuyến được gán một giá trị đặc biệt. Ý nghĩa của thuộc tính ORIGIN chứa đựng vài khái niệm mà nhiều người cảm thấy không trực quan. Các tuyến được phân phối vào BGP từ một IGP thực sự có ORIGIN là chưa hoàn tất (incomplete). Ngoài ra, đừng nhầm lẫn EGP với eBGP. Một tuyến có nguồn gốc EGP để chỉ đến một giao thức rất cũ là giao thức cổng ngoại vùng (Exterior Gateway Protocol). Thực tế, thông số EGP này sẽ không tìm thấy ngày nay.


    Mã Origin Mã đại diện Dùng cho những tuyến được chèn vào thông qua các lệnh sau
    IGP I network, aggregate-address (trong một vài trường hợp)
    neighbor default-originate.
    EGP E Không có lệnh cụ thể được áp dụng.
    Incomplete (Chưa hoàn tất) ? redistribute, aggregate-address (trong vài trường hợp), và lệnh
    default information originate.
    Bảng 12.6: Các loại mã của thuộc tính ORIGIN


    Các luật liên quan đến thuộc tính ORIGIN được dùng cho các tuyến tổng được tạo ra với câu lệnh aggregate address có thể gây một chút khác biệt. Các luật được tóm tắt như sau:
    • Nếu tùy chọn as-set không được dùng, tuyến tổng sẽ có thuộc tính là i.
    • Nếu tùy chọn as-set được dùng và tất cả các tuyến con đang được tóm tắt dùng thuộc tính I, tuyến tổng sẽ có thuộc tính i.
    • Nếu thuộc tính as-set được dùng và có ít nhất một mạng con con có thuộc tính ?, tuyến tổng sẽ có thuộc tính ?.

    Thuộc tính ORIGIN cung cấp một thông tin mô tả nhỏ cho nguồn gốc của bảng BGP trong đó được dùng như một phần của tiến trình ra quyết định của BGP.

    8. Quảng bá các tuyến BGP đến các láng giềng


    Phần trước tập trung mô tả các công cụ mà BGP dùng để đưa các tuyến vào một bảng BGP của router. BGP sẽ lấy các tuyến từ bảng BGP cục bộ và quảng bá một phần các tuyến đến các láng giềng BGP của nó. Phần này sẽ tiếp tục tập trung vào bảng BGP và việc quảng bá các tuyến BGP về các router láng giềng.
    • Thông điệp cập nhật của BGP
    Khi bảng BGP của một tuyến có một danh sách các tuyến, router cần phải quảng bá thông tin đến router láng giềng. Để thực hiện việc này, router gửi ra các thông điệp cập nhật đến các láng giềng. Hình 12.5 mô tả định dạng của thông điệp cập nhật BGP.


    Hình 12.5: Mô tả định dạng gói tin cập nhật

    Mỗi thông điệp cập nhật có ba phần chính:
    • Trường chỉ ra các tuyến bị mất cho phép BGP thông báo các router láng giềng về các tuyến bị lỗi.
    • Trường thuộc tính đường dẫn (Path Attribute) liệt kê các thuộc tính PA cho từng tuyến. Các thuộc tính NEXT_HOP và AS_PATH là các ví dụ của trường này.
    • Trường tiền tố (Prefix) và độ dài tiền tố (Prefix Length) định nghĩa các NLRI riêng biệt.

    Khái niệm trung tâm trong một thông điệp cập nhật là tập hợp các thuộc tính PA. Sau đó, tất cả các NLRI có cùng tập hợp các thuộc tính PS và các giá trị PS sẽ được bao gồm trong các thông điệp cập nhật. Nếu một router cần quảng bá một tập hợp của các NLRI, mỗi NLRI sẽ có các cài đặt khác nhau cho từng thuộc tính PA, sau đó các thông điệp cập nhật riêng lẽ sẽ là cần cho từng NLRI. Tuy nhiên khi có nhiều tuyến có cùng PA, nhiều NLRI sẽ có thể nằm trong một gói cập nhật. Điều này giảm tải trên CPU và dùng ít băng thông của kết nối.
    • Xác định nội dung của thông điệp cập nhật
    Một router xây dựng nội dung thông điệp cập nhật dựa trên nội dung của bảng BGP. Tuy nhiên, router phải chọn lựa các thành phần nào của bảng BGP để quảng bá đến từng láng giềng, với các tập hợp thay đổi từ láng giềng này đến láng giềng khác. Bảng dưới đây tóm tắt các luật về các tuyến và BGP không bao gồm trong các thông điệp cập nhật và mỗi luật được mô tả đầy đủ trong bảng 12.7.
    Quan hệ iBGP và/hoặc eBGP Các tuyến không lấy ra từ bảng BGP
    Cả hai Các tuyến không được xem là tốt nhất
    Cả hai Các tuyến bị so trùng với mệnh đề bỏ qua (deny) trong một bộ lọc BGP
    IBGP Các tuyến học thông qua quan hệ iBGP
    EBGP Các tuyến trong đó thuộc tính AS_PATH bao gồm giá trị
    AS của router láng giềng eBGP mà thông điệp cập nhật dự định gửi đến.
    Bảng 12.7: Các thông điệp cập nhật
    BGP chỉ quảng bá một tuyến để đến một mạng NLRI nếu tuyến đó được xem là đường đi tốt nhất. Nếu một router BGP chỉ học một tuyến để đến một mạng đặc biệt, tiến trình ra quyết định thì rất đơn giản. Tuy nhiên, khi chọn lựa nhiều đường đi để đến cùng một mạng, BGP xác định đường đi tốt nhất dựa trên một tiến trình ra quyết định rất dài. Giả sử không có router nào đã cấu hình cho bất kỳ chính sách định tuyến nào có thể ảnh hưởng đến tiến trình ra quyết định, cây ra quyết định sẽ giảm xuống còn một tiến trình bốn bước như sau:
    • Chọn ra đường đi với giá trị AS_PATH ngắn nhất.
    • Nếu chiều dài AS_PATH là bằng nhau, ưu tiên chọn một tuyến được học thông qua e-BGP hơn là những tuyến được học từ iBGP.
    • Nếu đường đi tốt nhất chưa được chọn lựa, chọn ra những tuyến có chi phí IGP thấp nhất để đến chặng kế tiếp (NEXT_HOP) của tuyến.
    • Nếu giá trị IGP là bằng nhau, chọn lựa các tuyến được học thông qua iBGP có giá trị BGP RID của router quảng bá có giá trị thấp nhất.

    Thêm vào đó, BGP loại bỏ một vài tuyến khỏi việc xem xét như là tốt nhất dựa trên giá trị của thuộc tính NEXT_HOP. Để một tuyến là ứng cử viên của đường đi tốt nhất, giá trị NEXT_HOP phải là 0.0.0.0 là kết quả của những tuyến đang được đưa vào trên router cục bộ. NEXT_HOP phải có khả năng đến được thông qua nội dung hiện hành của bảng định tuyến. Nói cách khác, giá trị NEXT_HOP phải so trùng với một tuyến trong bảng định tuyến.

    Bởi vì thuộc tính NEXT_HOP là quan trọng khi xem xét chọn lựa của BGP để tìm ra đường đi tốt nhất, phần này tóm tắt các cơ chế và đưa ra vài ví dụ. Thuật toán sẽ chia ra thành hai phần dựa trên việc các route có được quảng bá vào trong iBGP hay eBGP. Mặc định, khi gửi đến một router eBGP, thuộc tính NEXT_HOP bị thay đổi thành địa chỉ IP của router đang quảng bá. Cụ thể, địa chỉ được dùng bởi câu lệnh update source. Khi gửi đến một láng giềng iBGP, hành động mặc định là để thuộc tính NEXT_HOP không thay đổi.

    Cả hai trạng thái mặc định này có thể thay đổi bằng các lệnh liệt kê trong bảng 12.8:
    Kiểu láng giềng Hành động mặc định cho những tuyến được quảng bá Lệnh để chuyển sang trạng thái khác
    IBGP Không thay đổi thuộc tính NEXT_HOP Neighbor…next-hop-self
    EBGP Đổi giá trị NEXT_HOP bằng với địa chỉ IP của nguồn cập nhật Neighbor…next-hop-unchange
    Bảng 12.8: Các lệnh thay đổi trạng thái mặc định trong BGP
    Chú ý rằng thuộc tính NEXT_HOP không thể được gán thông qua route-map. Cách duy nhất để thay đổi thuộc tính NEXT_HOP là thông qua các phương thức liệt kê trong bảng trên.

    Các ví dụ kế tiếp sẽ mô tả một chuỗi các sự kiện liên quan đến việc truyền mạng 31.0.0.0/8 thông qua BGP. R6 tạo ra các tuyến trong 30 giây bằng cách phân phối các tuyến EIGRP học được từ R9. Mục đích của một loạt các ví dụ này là giải thích BGP chọn các tuyến như thế nào trong thông điệp cập nhật trong các tình huống khác nhau. Ví dụ đầu tiên tập trung vào các lệnh được dùng để kiểm tra R6 đã gửi thông tin gì đến R1, R1 nhận được những gì và các kết quả trong bảng BGP của R1. Ví dụ kế tiếp sẽ kiểm tra cùng một tuyến được truyền từ R1 đến R3, bao gồm các vấn đề liên quan đến trạng thái mặc định là không thay đổi thuộc tính NEXT_HOP của những tuyến này. Ví dụ cuối cùng mô tả giải pháp của R1 dùng lệnh neighbor 3.3.3.3 next-hop-self và ảnh hưởng của nó đối với nội dung của thông điệp cập nhật BGP trong AS123.

    R6 đã chèn ba tuyến liệt kê dưới đây. Các tuyến này không được học từ các router láng giềng BGP khác. Chú ý cả ba tuyến đều hiển thị như tuyến tốt nhất thông qua ký hiệu >.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R6# show ip bgp
    
    BGP table version is 5, local router ID is 6.6.6.6
    
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale
    
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network     Next Hop    Metric LocPrf Weight Path
    
    *> 31.0.0.0    10.1.69.9   156160  32768             ?
    
    *> 32.0.0.0    0.0.0.0     32768                     i
    
    *> 32.1.1.0/24 10.1.69.9   156160  32768             ?[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R6 liệt kê các tuyến nó quảng bá đến R1. Lệnh này liệt kê các hàng trong bảng BGP của R6 dự định gửi nhưng R6 có thể thay đổi các thông tin trước khi gửi đến R1. Lệnh này hiển thị nội dung của bảng BGP của R6 sẽ được gửi đến R1 nhưng R6 có thể thực hiện bất cứ thay đổi nào, bao gồm giá trị NEXT_HOP.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R6# show ip bgp neighbor 172.1616.1 advertised-routes
    
    BGP table version is 5, local router ID is 6.6.6.6
    
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale
    
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network     Next Hop  Metric LocPrf Weight Path
    
    *> 31.0.0.0    10.1.69.9 156160 32768              ?
    
    *> 32.0.0.0    0.0.0.0          32768              i
    
    *> 32.1.1.0/24 10.1.69.9 156160 32768              ?
    
    Total number of prefixes 3[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Lệnh kế tiếp trên R1 liệt kê các thông tin nhận được trong thông điệp cập nhật BGP từ R6. Chú ý rằng giá trị NEXT_HOP là khác. R6 thay đổi thuộc tính NEXT_HOP trước khi gửi cập nhật đó, bởi vì nó có kết nối eBGP đến R1 và mặc định eBGP sẽ gán giá thuộc tính NEXT_HOP bằng chính nó.

    Vì R6 dùng địa chỉ 172.16.16.6 như là địa chỉ IP để gửi thông điệp BGP đến R1, R6 gán NEXT_HOP bằng giá trị đó. Cũng lưu ý là R1 liệt kê chỉ số AS trong cột PATH, chỉ ra thuộc tính AS_PATH của tuyến đường.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# show ip bgp neighbor 172.16.16.6 received-routes
    
    BGP table version is 7, local router ID is 111.111.111.111
    
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale
    
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network     Next Hop    Metric LocPrf Weight Path
    
    *> 31.0.0.0    172.16.16.6 156160   0     678       ?
    
    *> 32.0.0.0    172.16.16.6   0      0     678       i
    
    *> 32.1.1.0/24 172.16.16.6 156160   0     678       ?
    
    Total number of prefixes 3[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Lệnh show ip bgp summary liệt kê trạng thái của láng giềng cho đến khi nào quan hệ láng giềng đã được thiết lập. Ở thời điểm đó, cột State/PfxRcd liệt kê số lượng NLRI nhận được và hợp lệ từ láng giềng đó.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# show ip bgp summary | begin Neighbor
    
    Neighbor    V AS  MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
    
    2.2.2.2     4 123   55      57      7     0   0   00:52:30    0
    
    3.3.3.3     4 123   57      57      7     0   0   00:52:28    3
    
    172.16.16.6 4 678   53      51      7     0   0   00:48:50    3[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R1 cũng đã học các địa chỉ này từ R3 như thấy dưới đây. Các tuyến đi qua R6 có một AS trong biến AS_PATH và các tuyến đi qua R3 có hai AS, vì vậy tuyến đi qua R6 là tốt nhất. Ngoài ta, các tuyến iBGP cũng có một ký tự “i” viết tắt cho nội vùng “internal” ngay trước địa chỉ tiền tố.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# show ip bgp
    
    BGP table version is 7, local router ID is 111.111.111.111
    
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale
    
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network     Next Hop Metric LocPrf Weight Path
    
    * i31.0.0.0    3.3.3.3    0     1000   45     678 ?
    
    *> 172.16.16.6          156160    0           678 ?
    
    * i32.0.0.0    3.3.3.3    0     1000   45     678 i
    
    *> 172.16.16.6            0       0           678 i
    
    * i32.1.1.0/24 3.3.3.3    0     1000   45     678 ?
    
    *> 172.16.16.6          156160    0           678 ?[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Ví dụ dưới đây mô tả làm cách nào ta có thể xem nội dung của thông điệp cập nhật thật sự được gửi tới láng giềng (dùng lệnh show ip bgp neighbor advertise-route và nội dung của thông điệp cập nhật từ một láng giềng (dùng lệnh show ip bgp neighbor received-route). RFC1771 đề nghị rằng RIB của BGP có thể chia ra thành các thành phần cho các thông điệp được cập nhận được nhận từ mỗi láng giềng và thông điệp cập nhật cho mỗi láng giềng. Phần lớn các hiện thực (bao gồm các phiên bản hệ điều hành IOS của Cisco) giữ một bản đơn RIB, với các ký hiệu để chỉ ra các tuyến nào là được gửi và nhận từ từng láng giềng.

    Lệnh show ip bgp neighbor với tuỳ chọn advertised-route liệt kê các hàng trong bảng BGP sẽ được quảng bá đến láng giềng đó. Tuy nhiên, chú ý rằng bất kỳ sự thay đổi nào đến các thuộc tính PA bên trong một hàng sẽ không được hiển thị trong kết quả lệnh. Ví dụ lệnh show ip bgp neighbor 172.16.16.1 advertised-routes trên R6 liệt kê thuộc tính NEXT_HOP cho mạng 31/8 là 10.1.69.9, điều này là đúng cho hàng đợi đó trong bảng BGP của R6. R6 sau đó thay đổi thuộc tính NEXT_HOP trước khi gửi thông điệp cập nhật thật sự, với giá trị NEXT_HOP là 172.16.16.6. Cuối của ví dụ này, R1 biết cả hai đường đi để đến từng mạng bắt đầu bằng 30 (có AS_PATH 678 và 45-678) nhưng đã chọn đường đi có AS_PATH ngắn nhất (thông qua R6) như là đường đi tốt nhất trong từng trường hợp. Chú ý là ký hiệu > trong kết quả của lệnh show ip bgp chỉ tuyến đường như là đường đi tốt nhất của R1.

    Kế tiếp, ví dụ mô tả một vài kết quả trên R3 liên quan đến chọn lựa đường đi tốt nhất. Chú ý tùy chọn received-routes chỉ hoạt động nếu router được cấu hình thêm lệnh neighbor neighbor-id soft-reconfiguration inbound.

    Lệnh show ip bgp neighbor với tùy chọn advertise-routes liệt kê các hàng trong bảng BGP sẽ được quảng bá đến láng giềng đó. Tuy nhiên chú ý rằng bất kỳ thay đổi nào đến các thuộc tính PA bên trong từng đường đi sẽ không hiển thị trong kết quả lệnh. Ví dụ, lệnh show ip bgp neighbor 172.16.16.1 advertised-routes trên R6 liệt kê thuộc tính NEXT_HOP cho mạng 31/8 là 10.1.69.9. Điều này là đúng cho mạng đó trong bảng BGP của R6. R6 sau đó thay đổi thuộc tính NEXT_HOP PA trước khi gửi cập nhật thực sự, với giá trị NEXT_HOP là 172.16.16.6.

    Cuối của ví dụ nêu trên, R1 đã biết cả hai đường đi về ba mạng trong dãy 30 (các AS_PATH 678 và 45-678) nhưng đã chọn lựa đường đi có AS_PATH ngắn nhất (thông qua R6) như là đường đi ngắn nhất trong từng trường hợp. Chý ý rằng ký hiệu > trong lệnh show ip bgp cho thấy tuyến đó như là tuyến tốt nhất của R1.

    R1 gửi cập nhật cho R3 với các tuyến tốt nhất
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R1# show ip bgp neighbor 3.3.3.3 advertised-routes | begin Network
    
       Network     Next Hop    Metric LocPrf Weight Path
    
    *> 31.0.0.0    172.16.16.6 156160    0    678        ?
    
    *> 32.0.0.0    172.16.16.6   0       0    678        i
    
    *> 32.1.1.0/24 172.16.16.6 156160    0    678        ?[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    R3 nhận các tuyến nhưng các tuyến tốt nhất của R3 chỉ ngược về R4 trong AS45 với giá trị AS_PATH 45-678, là một đường đi dài hơn. Tuyến đường thông qua R1 không thể là đường đi tốt nhất bởi vì giá trị NEXT_HOP không đổi khi được gửi bởi iBGP.
    Code:
    [INDENT][SIZE=14px][FONT=Tahoma]R3# show ip bgp
    
    BGP table version is 7, local router ID is 3.3.3.3
    
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale
    
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
        Network     Next Hop  Metric LocPrf Weight Path
    
    *>  31.0.0.0    4.4.4.4    0       45    678        ?
    
    * i 172.16.16.6           156160   1000  678        ?
    
    *>  32.0.0.0    4.4.4.4    0       45    678        i
    
    * i 172.16.16.6            0       1000 678        i
    
    *>  32.1.1.0/24 4.4.4.4    0        45  678        ?
    
    * i 172.16.16.6           156160   1000 678        ?
    
    ! Proof that R3 cannot reach the next-hop IP address is shown next.
    
    R3# ping 172.16.16.6
    
    Type escape sequence to abort.
    
    Sending 5, 100-byte ICMP Echos to 172.16.16.6, timeout is 2 seconds:
    
    .....
    
    Success rate is 0 percent (0/5)[/FONT][/SIZE][/INDENT]
     [SIZE=14px][FONT=Tahoma][/FONT][/SIZE]

    Ví dụ trên chỉ ra vài điểm chú ý với vài thuật ngữ trong lệnh show ip bgp, cũng như là các chọn lựa thiết kế quan trọng của BGP. Đầu tiên, kết quả lệnh liệt kê * có nghĩa là tuyến hợp lệ, tuy nhiên điều đó cũng chỉ có ý nghĩa tuyến này là ứng cử viên cho tuyến đường tốt nhất. Trước khi một tuyến có thể được thực sự sử dụng và thêm vào bảng định tuyến, thuộc tính NEXT_HOP phải là ping được. Trong một vài trường hợp, các tuyến đường mà BGP xem là hợp lệ chưa chắc là những tuyến đường dùng được. Ví dụ dưới đây minh họa điều đó.


    Phan Trung Tín
    Email: phantrungtin@vnpro.org
    .
    Trung Tâm Tin Học VnPro
    149/1D Ung Văn Khiêm, P.25, Q.Bình Thạnh, Tp.HCM
    Tel: (028) 35124257 (028) 36222234
    Fax: (028) 35124314

    Home Page: http://www.vnpro.vn
    Forum: http://www.vnpro.org
    Twitter: https://twitter.com/VnVnpro
    LinkedIn: https://www.linkedin.com/in/VnPro
    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
    - Phát hành sách chuyên môn
    - Tư vấn và tuyển dụng nhân sự IT
    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

    Videos: http://www.dancisco.com
    Blog: http://www.vnpro.org/blog
    Facebook: http://facebook.com/VnPro
    Zalo: https://zalo.me/1005309060549762169
    ​​​​​​
Working...
X