Routers, ASIC, CPU and NPU

Anatomy of Internet Routers : https://www.ciscolive.com adresinden BRKSPG-2772 – Anatomy of Internet Routers (2013 London) isimli session videosu oldukça yararlı.

IOS Routing Internals – BRKARC-2350

Control Plane ve Data Plane / ASIC vs NP :

Genel olarak ağ cihazlarında şu an ki yaklaşım, control plane ve data plane olarak iki şekilde görmek üzerine kuruluyor. Data plane, hızlı veri transferi ve veri üzerinde hızlı işlem yapmak üzeredir. Control Plane ise daha çok data plane üzerinde veri iletimine yönelik değişimleri yapmak için kullanılır (routing change, feature change vb.). Control plane router’dan kaynaklanan trafiğide içerir (management, snmp, telemetry etc). Dolayısı ile data plane için kullanılacak işlemcilerin hızlı olması gerekir.

Software tabanlı router’lar da bu iki görev aynı CPU tarafından yapılır. Dolayısı ile genel amaçlı CPU’lar kullanılarak yapılırlar. Dolayısı ile data işlemi sırasında ne kadar fazla işlem yapılırsa, veya başka bir deyişle ne kadar fazla özellik kullanlır ise, kapasite o kadar azalır. Çünkü CPU gücü paket iletiminden özellik işlemeye kalır.

Hardware tabanlı routerlar’da ise bu iki işlem farklı CPU’lar aracı ile yapılır. Control plane işlemleri için CPU kullanılır iken, data plane için ASIC (Application Specific Integrated Circuit) kullanılır. ASIC sadece paket iletimi ile ilgilenen basit işlemcidir. Önemli olan özellik işleme değil paket iletimidir. ASIC iletemediği (bir sonraki gidiş noktası, çıkış noktası bilemediği, layer 2 için mac learning) durumlarda paket CPU gönderilir (punt paketler).

Hardware tabanlı cihazlarda ayrıca CAM/TCAM kullanılır. Bunlar data ASIC gönderilmeden önce hızlıca data’nın ne yapılacağını bulmak için kullanılar hafıza modülleridir.

CAM :

Normal bir memory DRAM şu sorgu ile çalışır su index’de ne var? Fakat CAM farklıdır. Her bir hücre kendi karşılaştırma işlemini yapar ve CAM şu sorgu gider sende bu veri var mı? Bu durumda aynı CPU cycle içerisinde tüm hücreler karşılaştırmayı yapar ve 0 veya 1 döner. Bu şekilde eşleşen hücreler bulunur. Hücre uzunluğu sabitdir. Genellikle switchlerde kullanılır, MAC adress tablosu gibi.

IPv4 için kullanılabilir mi? TCAM versiyonu.

TCAM :

IPv4 uzunluğu sabit değildir. Dolayısı ile yapılacak sorgu uzunluğu sabit olmıyabilir. /17, /26 prefix arama gibi. Bunun için hücrelerin dikkate al dikkate alma özelliği bulunur. Bu şekilde her hücre karşılaştırmasını yapar ve 0 1 veya dont care (bit) olarak geri dönüş yapar. FIB lookeplarına veya bazı routerlarda sadece hızlandırılmış ACL vb gibi amaçlar için kullanılır.(Bir cycleda ACL sonucu vb almak için).

ASIC’ler önceden belirlenen işlemleri yapmak için tasarlanırlar. Dolayısı ile yeni bir özellik uygulanmak istenir ise;

  • Bu özelliği control plane üzerinde yapmak ki bu durumda control plane işlevleri aksıyabilir.
  • Bu özellik için kendi ASIC bulununan yeni bir servis kartı yapılıp, bu işleve tabi tutulması gereken paketler bu karta yönlendirilebilir. Buda bu özelliğin uygulanmasında zaman sorununu ortaya çıkartabilir.

ASIC genel olarak bir feature pipe üzerinden packet process eder. Pipeline yeni bir feauture eklemek oldukça zordur. Eğer vendor bir feature için hw limitation diyor ise nedeni pipeline o feature desteklenmediğidir. Bazen bir feature veya istenileni yapmak icin packet ASIC çıkınca tekrar in yönünde geri gönderilir, recirculation. Paket iki kere ASIC dolaştığı için latency artmış olur.

ASIC genel olarak ise fixed header olan encapsulation methodlarında oldukça hızlıdır. Değişken header içeren encapsulation methodlarının ASIC üzerinde bir cost’u vardır. IPv6 extension header gibi.

 

Software tabanlı ve hardware tabanlı router mimarisi arasında hybrid routerlar yer almaktadır. Bu tip routerlar’da ASIC yerine NP (network processor) kullanılmaktadır. NP’ler ise göreceli olarak hızlı paket iletimi sağlarlar ve software upgrade ile yeni özelliklerin eklenmesi mümkün olmaktadır. Dolayısı ile yeni bir özelliğin uygulanması daha hızlı ve daha az maliyetli olmaktadır.

Sıralama aslında şu şekilde verilebilir, CPU-GPU-FPGA-ASIC. Programlanabilir  ASIC vardır fakat, cost enerji tüketimi vb nedenlerden pek tercih edilmezler. Farklı vendor ASIC’lerini kıyaslarken aslında en önemli konulardan biri ASIC yazılımı SDK ne kadar stabil olduğudur. Burada çıkan bugların fixlenmesi oldukça zor ve zaman alan işlemlerdir.

Cisco ASR1K quantum process bir çeşit FPGA ürünüdür.

Son zamanlarda smartNIC popüler olarak kullanılmaya başlanmıştır. Genel olarak üzerinde oldukça fazla CPU barındıran NIC kartlarıdır. İstenirse kartın üzerinde web sunucusu, load balancer v.b çalıştırılabilir.

Process Switching / CEF Switching :

Process switching her paketin işlenmek için CPU gönderilmesi işlenmesi demektir. Dolayısı ile process scheduling çok fazla önem kazanmaktır. Process switching’den bir sornaki adım ise CEF (Cisco Express Forwarding) swtiching’dir. CEF’e benzer method bir çok vendor tarafından uygulanmaktadır. Genel olarak anlamı paket iletimini veri tablolarına bakarak yapmaktır. Basitçe ilk paketi CPU gönder ne yapılacağını öğren ve hızlı bir veri tablosuna yaz ve bir sonraki paketi CPU göndermeden ilet.  FIB CPU üzerinde CEF tablosu routing’den kaynaklanan, iken CEF ise NP/ASIC üzerindeki iletim tablosu olarak anlandırılabilir. CEF üzerinde punt olarak işaretlemiş paket CPU gönder demektir. CEF tablosunda genel olarak bulunan bilgi, paket için eşleşme olarak kullanılacak route bilgisi, çıkış interface ve gideceği L2 next-hop bilgisidir.

Packet Lookup Unit and Table Lookup Unit

Hızlı yakınsama için paket iletiminde ve tablo aramalarında işaretçiler ve birden fazla tablo kullanılır. Routing protokolleri ilk olarak RIB tablosunu oluşturur. Daha sonra routing tablosundan CEF tablosu oluşturulur. Burada tablolar arındaki geçişte basitçe pointerlar kullanılarak yapılabilir.

Örnek ile anlatır isek, bir EBGP Next-hop’larını ait routeları update etmek gerektiğinde normalde ona ait tüm prefixlerin ADJ bilgisini uptade etmek gerekir. Prefix sayısı kadar update işlemi. Bunun yerine o prefixleirn NH bilgisi artı bir tabloya yazılır ve orası işaret edilir ise, sadece işaret edilen alanın update edilmesi sonucu daha hızlı bir update işlemi yapılabilir.

Ayrıca load-balancing, polorization, fast convegence gibi diğer paket iletim konuları da ayrıca incelenmelidir.

Buffers and does it matter:)

Buffer ihtiyacın var mı? Esas soru bu:) Fizik kuralları gereği buffer demek latency demek. Öle veya böyle bir şekilde buffer ihtiyaç var. Ama shallow buffer yani düşük kapasiteli buffer bir kaç MG sorgu hızını artırdığı ve latency daha düşük olduğu için daha uygun olabilir.

Genellik ile MB yeterli ama deep buffer GB kullanımı ihtiyaç oldukça değerlendirilmeli.

Offchip buffer baska ilginç konu? Onun ile haberleşmek için ayrı bir kapasiteli hat  demek.

Sürekli congestionda ayrı bir sorun. Buffer overflow yol acar. Buffer burst idare eder ama sürekli dolum onu bitiririm.

Cell based ASIC ayrı bir sorun. Ortalama trafik büyüklüğü ile çok ilgili. CELL 64 byte ise 64 byte line speed switch eder. 65 byte ise bir cell sadece 1 byte taşır. ASR9K super cell var.