Segment Routing

IGP Prefix Segment

Segment Routing :

Segment Routing’den önce biraz MPLS’e bakalım.

MPLS ile data iletimi ;

– MPLS bize IP routing’den bağımsız olarak, bir üst katmanda etiket anahtarlama yapma şansı verir. Bu şekilde her node her paket için ip bilgisine bakmadan yönelendirme yapar. Bu ne demektir? Genel olarak ip yönlendirme sonucu her bir prefix için gidilmesi gereken bir sonraki cihaz, Next-Hop bulunur ve paket söz konusu next-hop’un olduğu interface gönderilir. Burada 3 kavram vardır. Kaynak (source), gidilmek istenen (destination) ve bu destination gitmek için kullanılacak bir sonraki (next-hop) node. Dolayısı ile kaynağın bağlı olduğu node ve son node arasındaki tüm node’lar kendi yönlendirme tablolarına bakar ve buna göre yönlendirme yapar. IGP kullanılmaması durumunda bir node’un söz konusu network hakkında bir bilgisi yoktur. Tüm yönlendirmelerin el ile yapılması gerekir (static routing). Bu hedef ip adresine gitmek için bu interface kullan şeklinde. IGP routing ile tüm node’lar network hakkında bir bilgiye sahip olur ve network üzerinde bir path hesabı yapabilir durumda olurlar. Bu şekilde hedef noktasına gitmek için hangi next-hop kullanması gerektiğini hesaplar. El ile bir routing bilgisi girilmesine gerek kalmaz. Her node kendi üzerindeki ip adreslerini ve diğer node’lar ile olan ilişkisini anons eder. Bu şekilde her node her bir destination prefix’e nasıl erişeceğini öğrenmiş olur. IGP ile network hakkında bilgiye eriştiğine göre, paketin takip edeceği yolu da bilir. Peki bunu garanti eder mi? Edemez eğer ara hopların birinde IGP ile kullandığı yönlendirme tablosu arasında fark olabilir (Ara node IGP anons etmediği, statik vb farklı bir routing girdisini kullanıyor olabilir). Dolayısı ile kaynak bir path hesaplar fakat paket bu path’i takip etmeyebilir. Sonuçta IGP bile kullansanız bile her hop kendi routing tablosuna bakar.  Dolayısı ile kaynak ve son hop arasında uçtan uça bir devre oluşturulamaz!. MPLS ile her node kendi routing işlemi sonucu bir tablo oluşturur. Burada’ki her bir prefix için bir kullanılacak bir etiket atanır ve bu etiket ve prefix tablosu diğer komşu hoplara (LDP,TDP, BGP labelled unicast vb) iletilir. Kaynak node destination ip adresine bakar bu ip’yi hangi IGP next-hop göndermesi gerektiğini bulur. Network’de IGP tablosu tutarlı olduğu sürece IGP’nin bu nexthop için kullanıdığı path takip edilir. Bunun tek istinası ara node’lar dan birinde bu next-hop için IGP’nin bilmediği bir routing girdisi olmasıdır (Bir önceki örnekde destination ip için farlı bir girdi var idi bu sefer ise next-hop için). Bu noktada routing işlemi ip next-hop bilgisine dayandığına göre kaynak nokta next-hop için komşunun kullanıdığı etiketi kullanarak iletim yapar. Burada bir eksiklik, kaynak node gidilmesi gereken path’i IGP ile hesaplar. IGP dışında bir path kullanmaz. Veya hop-by-hop path seçemez. Buda MPLS TE ile giderilmeye çalışmıştır. Segment routing’in katkısı’da tam bu noktadadır. Her bir mpls etiketlemeye routing yetkisi kazandırmıştır. IGP ile dağıtılan prefix’ler için aynı zamanda global bazda tanımlı etikette gönderilir!. Dolayısı ile bu etiketler kullnılarak ip routing’den bağımsız olarak path seçilebilir. Hatta merkezi bir path hesaplama uygulaması kullınılarak uçtan uca pathler kurgulanıp uygulabilir hale gelir. Sadece ve sadece kaynak path’e söz konusu devre için kullanması gereken node listesi etiket yığını halinde girilir.

– MPLS diğer bir katkısı ile ip L2 MPLS VPN ve L3 MPLS VPN gibi ip routing katkısıdır.

Günümüzde IGP ve benzeri yolların sağladığı dinamik routing yerini önceden belirlenen pathlerin veya yine dinamik olarak önceden belirlenen şartlara uyan pathların kullanımına bırakmıştır (Traffic Enginering). IGP ile  network’ün snap he MPLS TE / RSVP veya LDP ile bu tarz uygulamalar oldukça zor, fazlaca sinyalleşme içeren bir hal almaktadır. Zaman zaman MPLS TE uygulamaları full-mesh bir yapıya ulaşıp, neredeyse yönetilemez hale gelmektedir. Geçmiş multi-topology kullanımı gibi konular oldukça zor hale gelmektedir. Öncelikli trafik (ses) ve normal trafik (data) farklı bir yol izlesin veya yedek hattı sadece öncelikli trafik kullansın gibi konularda uygulamalar oldukça karmaşıklaşmaktadır. Ses ve data vrf için farklı next-hoplar kullanıp, uç ve kaynak noktalar arasındaki bu next-hop arasında MPLS TE kurmak. Statik yapılması tam bir işkence. Uygulama ve hata giderme tam bir işkence:). RSVP kullanmak bir kısmen bir çözüm bu seferde çok fazla sinyalleşme ve hata ayıklama tam bir işkence:)

Segment Routing ile bir çok işlem basitçe yapılabilmektedir. Kabaca Source routing’e benzer şekilde, gidilecek yolun kaynak tarafından seçilmesine yönelik bir uygulamadır. Paket iletilmek istenen yere doğru sanki bir MPLS TE varmışcasına iletilir. Bir nevi kullanılacak LSP’yi kaynak belirler. Segment routing ile IGP görevi basitçe sadece prefix ve bu prefixlere atanan etiketlerin dağıtımıdır. Dolayısı ile her bir node ilgili prefixler için kullanılması gereken global etiketi bilmiş olur. Kaynak noktada NH için bir path veya destination prefix ya el ile statik olarak veya PCE ile otomatik bir controller tarafından hesaplanarak FIB’e yerleştirilir. TE ise oldukça basit hale gelmiştir. SR için linklerin sınıflandırılması/renklendirilmesi yeterlidir. Kaynak tarafında istenen yol için hangi rengin kullanılmak istenildiği bilgisine göre gerekli yol bir kontroller tarafından hesaplanır. BGP ile anons edilen prefix’in rengi communitiler ile karşı uca iletilebilir (L3 MPLS VPN). Karşı uç’ta bu renge uygun bir path var ise kullanır. Dolayısı ile sadece prefix anonsu geldiğinde path kurulur. Gereksiz path kurulumu olmaz. Bu path ya el ile girilir veya tüm domain’den haberdar olan bir PCE sorularak kullanılacak path bilgisi (etiket yığını istenir). MPLS TE’de bu bilgi ya RSVP ile veya el ile statik olarak hop-by-hop girilerek elde belirlenir.

MPLS etiketlerinin kullanarak veya IPv6 routing extension kullanılarak yapılabilir. MPLS kullanılması durumunda tüm hopların MPLS etiketleme yapması gerekir. Fakat MPLS data iletimi bilindiği gibidir. SR desteklemese bile ortadaki node’ların MPLS desteği gerelir. IPv6 kullanılması durumunda ise orta node’ların SR desteği olması bile sadece IPv6 desteğinin olması yeterlidir. Notlarım genel olarak MPLS üzerinedir.

Genel olarak MPLS anahtarlamanın genel tanımlı etiketler kullanılarak yapılması durumudur. Böylece uç noktaya trafik gönderirken direk olarak hangi node veya node’lar üzerinden geçmesi gerektiğini belirtebilirsiniz. Benzer şekilde, basitçe uygulamalar statik mpls etiketleri kullanılarak yapılabilir. Segment tanımı aynı zamanda etiket (label) demektir. Söz konusu node’a veya hedef noktasına şu yolu kullanarak git demektir. Etiket genel anlam taşıdığına göre bir segment’i yani node veya komşuluğu (adjacency, link) tanımlar. Segment: locator,  IGP-based forwarding construct  BGP-based forwarding constract,  Local value or Global Index, Instructions such as “go to node N using the shortest path”.

Segment routing kullanılarak MPLS için sinyalleşme (LDP,RSVP) gerekliliği ortadan kalkar. Merkezi bir kontroller ve On-demand Next hop özellikleri ile MPLS TE için oldukça ciddi bir seçenektir. MPLS TE kullanımı zor full-mesh yapısını ihtiyaç zamanında açılan tüneller ve yapılandırma basitliği ile  kullanımı oldukça kolaydır. Ayrıca Ti-LFA ile %100 kapsama alanına sahiptir.

Segment Etiket Tipleri :

  • IGP :
    • Prefix/Node : Routing bilgisinden gelen prefix’e veya Next-Hop’a hangi etiket ile ulaşılacağı methodur. Bir IGP prefix’e ait en kısa yolu temsil eder. Prefix’in sahibi node’a hangi etiket ile giderim? ( Genel olarak IBGP next-hop).  IGP (ISIS/OSPF) söz konusu prefixlerin dağıtımından sorumludur. Her node kendi üzerindeki prefixleri global bir etiket(Segment routing global block SRGB, Cisco varsayılan 16000 to 23999) ile anons eder. Amaç her node’u IGP/BGP tablosunda temsil edilen Next-hop adresi için bir adet global tanımlı etiket kullanmaktır. Bu sayede her hangi bir node diğer bir node’a direk olarak sanki TE kurulmuşcasına paket gönderebilir. TE’den farklı olarak yol üzerinde ECMP otomatik olarak uygulanmış olur. Söz konusu global etiket aralığı, SRGB,  tüm domain için aynı olmalıdır. Zira IGP ile dağıtılan bu prefix/node etiketi prerfix + index şeklindedir. Buradaki index, SRGB başlagıcından itibaren etiketikin yerini simgeler. Örnek olarak 25 index’i var sayılan SRGB’ye göre 16000+25 = 16025’dir. Dolayısı ile SRGB bloğu aynı değil ise bir node için kullanılan etiket farklılık gösterebilir.
      IGP Prefix Segment
      IGP Prefix Segment
      •  IGP tarafından dağıtılır. ISIS için yeni TLV, OSPF için type 10 ile beraber dağıtılır. ECMP destekler.
      • Global anlamı vardır. Bir prefix için her yerde aynı etiket kullanılır.
      • Etiker index ile ifade edilir. Global etiketleme için ayrılan aralığın başlangıcından tanımlı bir index kullanılır. Örnek olarak range 16000’den başlıyor ise ve söz konusu prefix için 10 index’i kullanıldı ise bu 16000+10 etiketinin kullanımı demektir. IGP ile her zaman index dağıtılır. Dolayısı ile tüm segment routing kapsamında her cihazda aynı range kullanımı önemlidir!
      • Node/Prefix trafiği iletilirken etiket swap işlemi yapılır (aynı etiket çıkartılır ve eklenir:).
    • Adjaceny : Bir link üzerindeki komşuluğu anlatır. Yerel olarak tanımlı bir etiket kullanır. Dinamik etiket aralığından bir etiket kullanılır. Bir segment’e giderken bu komşuluk, bu link üzerinden git demek için kullanılır. Hesaplama zamanını kısaltmak için her down/up oluğunda yenilenmesini engellemek için söz konusu link down olduğunda etiket zombie olarak işaretlenir ve bir süre boyunca (var sayılan 30dk) o şekilde kalır. Link tekrar up olunca bu etiket kullanılır.

      IGP Adjaceny Segment
      IGP Adjaceny Segment
  • BGP
    • Prefix : Bir BGP prefix’ine ait en kısa yolu ifade eder. Genelde BGP only domainler’de (Etiketlerin BGP ile dağıtıldığı durumlarda) kullanılır. IGP prefix’e benzer şekilde etiketleme yapılır.

      BGP Prefix Segment
      BGP Prefix Segment
    • Adjaceny : BGP adjaceny?? eBGP komşulukları için kullanılır. Bir trafiği direk olarak söz konusu EBGP komşuluğuna göndermek için kullanılır. Söz konusu Adj ait etiket BGP-LS ile dağıtılır.

      BGP Peering Segment
      BGP Peering Segment

Segment Routing bir sinyalleşme yoktur. Trafik başlangıç noktasında gidilmesi gereken node/prefix/segment bilinir ve buna göre etiket ataması yapılır. TE benzer şekilde eğer belli bir path üzerinden gitmek istiyor iseniz ya bunu statik olarak tanımlarsınız veya bir yönetici aracılığı ile bazı özellikleri içeren bir path dönmesini isteriniz. Dolayısı ile milyonlarca flow’u oldukça hızlı bir şekilde yönetebilirsiniz. Orta noktalar işin içine girmez!.

Segment routing, servisler (L3 MPLS VPN vb) bir değişiklik getirmez. Servisler bilindiği hali veya yeni bazı özellikler ile yapılandırılır. SR ile data iletiminde değişiklik getirilmiştir. No changes to control or forwarding plane, IGP or BGP label distribution for IPv4 and IPv6. Forwarding plane remains the same!

 

Eğer bir controller, PCE, kullanıyor iseniz bu kontrollerin tüm domain hakkında bilgi sahibi olması gerekir. Bunun için BGP-LS kullanılır.

LDP’den segment routing’e geçiş kolaydır. Bir arada kullanılabilir. Sadece LDP domain’de değişen bir şey yoktur. Segment etiketi kurallara uygun iletilir. Fakat segment routing alanını bilmediği için (LDP alanındaki nexthopları), LDP alanındaki prefixler için kullanılması gereken etiketler bir eşleyici tarafından SR alanına dağıtılmalıdır.

SR TE : Bir sinyalleşme içermez. Merkezi bir PCE kullanımı ile birlikte oldukça başarılı bir uygulama haline gelir. Burada önemli olan PCE’nin tüm network hakkında bilgisini olmasıdır. Böylece verilen şartlara uygun olarak path hesaplar (aynı zamanda hatalara karşıda alternatif yolları hesaplar ve uygulamaya koyar). SR TE, TE uç noktası tarafından başlatılır. Ara noktalar ile bir sinyalleşme vb içermez. Önemli nokta SR TE policy tanımlamasıdır. Bu policy’de kurulması istenen TE için gerekli şartlar (renk, nh listesi, te ve igp metric gibi) belirtilir. Normel TE farklı olarak, path üzerinde ECMP yapılmasına izin verir!

  • No core state: state in the packet header
  • No tunnel interface: “SR Policy”
  • No head-end a-priori configuration: on-demand policy instantiation
  • No head-end a-priori steering: automated steering

• Forwarding (legacy)

  • Autoroute Announce (AA)
  • Autoroute Destination
  • Static route
  • Access-list Based Forwarding (ABF)
    1. • Constraints
      • Color/affinity
      • IGP/TE metric

• Measured latency (future)

    • Disjoint paths
    • Bandwidth with centralized models

MPLS etiketleri :

Value  Description  Reference 
0-15 Reserved. Never to be made available for allocation. [RFC7274]
16-239 Unassigned
240-255 Reserved for Experimental Use [RFC7274]
256-1048575 Reserved. Not to be made available for allocation without a new Standards Track RFC to define an allocation policy. [RFC7274]
Value  Description  Reference 
0 IPv4 Explicit NULL Label [RFC3032]
1 Router Alert Label [RFC3032]
2 IPv6 Explicit NULL Label [RFC3032]
3 Implicit NULL Label [RFC3032]
4-6 Unassigned
7 Entropy Label Indicator (ELI) [RFC6790]
8-12 Unassigned
13 GAL Label [RFC5586]
14 OAM Alert Label [RFC3429]
15 Extension Label [RFC7274]

 

Yararlı Linkler :

http://www.segment-routing.net

Cisco Live Session :

Intermediate – Introduction to Segment Routing – BRKRST-2124

Segment Routing: Technology deep-dive and advanced use cases – BRKRST-3122

Troubleshooting Segment Routing – BRKRST-3009

Segment Routing in NGN – BRKSPG-2620

DevNet Workshop – Application Engineered Egress Routing – DEVNET-2062