DNS-AS

Merhaba arkadaslar, bugun sizlere yeni duydugum ve beni heyecanlandiran DNS as Authoritative Source (DNS-AS) konusundan bahsetmek istiyorum. DNS-AS, evet dogru dusunuyorsunuz, basitce bir DNS sunucusu ancak A kaydi disinda TXT ve AVC kayitlari da paylasabilen bir sunucudur. Bu kayitlar ozellikle sirketiniz icerisinde bulunan Custom Uygulamalariniz icin uygulama tanima gibi ozellikleri merkezi bir sekilde yonetebilmenizi saglar ve bu sayede tum ag altyapiniz boyunca tutarli bir QoS yapisina sahip olabilirsiniz. Bunun da disinda gunumuzde uygulama tanima ile ilgili bazi sorunlar mevcut durumdadir. Bunlar basitce:

  • Gunumuzde cogu uygulama HTTP/S kullanmaktadir, sifrelenmemis trafikte olsa uygulamanin detaylarini anlayabilmek icin DPI (Deep Packet Inspection) uygulamamiz gerekmektedir ki bu kaynak gerektiren bir islemdir. Sifrelenmis bir trafikte ise DPI uygulamamizin bir anlami yoktur cunku sifrelenmis trafikten uygulama bilgisini alamazsiniz. Certificate Inspection veya MITM (SSL decrypt/encrypt) gibi metodlarla bir yere kadar bilgi edinebilirsiniz anca yinede bu yeterli olmayabilir.
  • Merkezi bir yapinin olusturulmasi ileride uygulamanizda yapilacak degisikligi merkezi bir sekilde tum cihazlariniza yansitmaniza yardimci olacaktir ki bu ag yoneticisini buyuk bir yukten kurtarabilir.

Bu gibi sebeplerden dolayi ag uzerinde uygulama tanimak ve buna uygun aksiyon almak zorlasmaktadir. Bu sorunlarin ustesinden gelebilmek DNS-AS ve uzerinde barindirdigi METADATA bilgisi ile mumkundur.

Peki METADATA nedir? Basitce aciklamak gerekirse METADATA “Data Hakkinda Data” demektir. Belirli uygulamalar icin cihazlarinizin anlayabilecegi bazi bilgiler vererek buna bagli olarak uygulama tanimaniza yardimci olmaktadir. METADATA, TXT veya AVC kaydi olarak DNS-AS uzerinde bulunmaktadir farkli formatlar olmasina ragmen basitce ayni bilgileri verebilmektedir. Zorunlu olarak kullanmaniz gereken ozellikler, app-name,app-id,app-class ve business degerleridir ve bunun disinda opsiyonel degerler de bulunmaktadir. Bu degerler size basitce QoS icin gerekli temel verileri vermektedir. Opsiyonel degerlere ornek vermemiz gerekirse, METADATA uzerinden uygulama icin gerekli olan ag gerekliliklerini bant genisligi, gecikme vb. degerleri ogrenip buna gore QoS uygulamamizi gerceklestirebiliriz.Bu degerler hakkinda daha detayli bilgi almak isterseniz veya opsiyonel degerleri merak ediyorsaniz https://www.dns-as.org sitesinden detayli inceleme yapabilirsiniz. Ayrica kendi METADATA degerinizi olusturmak istiyorsaniz, https://www.dns-as.org/support/avc-rdata/ linkini kullanabilirsiniz.

DNS-AS TXT kaydi CISCO IWAN icin:

CISCO-CLS=app-name:my-app|business:yes|app-class:BD|app-category:business-and-productivity-tool|app-sub-category:enterprise-voice-collaboration

DNS-AS AVC kaydi CISCO IWAN icin:

app-name:my-app|business:yes|app-class:BD|app-category:business-and-productivity-tool|app-sub-category:enterprise-voice-collaboration

Temel bilgilerden bahsettikten sonra biraz da nasil calistigindan bahsetmek istiyorum.

Client her hangi bir uygulama icin DNS isteginde bulundugu zaman bu GW tarafindan iletilmek uzere L3 cihaza ulasmaktadir. Bu bir router veya L3 switch olabilir. Burada yapilan konfigurasyonda onemli olan ilk deger trusted domain degeridir. Ornegin; ABC sirketinde calisiyorsaniz ve sirketiniz icerisinde bulunan app1.ABC.com sunucusuna gitmek istiyorsaniz cihazinizda bulunan trusted domain ayarini *ABC.com yapmaniz gerekmektedir. Sebebi, L3 cihaziniz gerekli konfigurasyonu yaptiginizda DNS Snooping ozelligini aktif edecektir. Bu ozellik sayesinde non-trusted domain icin gelen DNS paketleri icin bir islem yapmayacakken trust domain iceren DNS paketleri icin DNS-AS sunucusuna METADATA icin sorgulama yapacaktir.

Cihazimiz uygulama METADATASI icin sorguyu yapmasinin akabinde, default olarak once AVC kaydi icin yoksa daha sonra TXT kaydi icin sorgulama yapar, aldigi bilgilere gore cihazimiz tablosunda A kaydi karsiliginda TXT veya AVC karsiligi olarak tutacaktir. Bu degerlere gore onceden belirlemis oldugumuz class-map icerisinde match ederek kullanabilir. Ornegin;

ROUTER UZERINDE BULUNAN TABLO
Router# show avc dns-as client binding-table detail
DNS-AS generated protocols:
Max number of protocols :50
Protocol-Name : appexample1
VRF : <default>
Host : www.appexample1.com
Time To Expire[min] : 58
TXT Record : app-name:appexample1|app-class:VO|business:YES
Traffic Class : voip-telephony
Business Relevance : business relevant
IP : 192.0.1.254

CLASS-MAP
class-map match-all VOICE
match protocol attribute traffic-class voip-telephony
match protocol attribute business-relevance business-relevant
class-map match-all BROADCAST-VIDEO
match protocol attribute traffic-class broadcast-video
match protocol attribute business-relevance business-relevant

POLICY-MAP
policy-map MARKING
class VOICE
set dscp ef
class BROADCAST-VIDEO
set dscp cs5

Bu sayede ornegin bu uygulama icin gerekli interface altinda service-policy uygulanarak DSCP marking islemi yapabilmekteyiz ve bunu tamamen dinamik ve merkezi bir sekilde uygulayabilmekteyiz.

Konfigurasyonel acidan cok zor olmayan ve uygulama taniyabilme acisindan elimizde yeni bir silah olmasindan dolayi DNS-AS gelecekte umit vaadeden bir durumda. Sonuc olarak; suan cok yaygin olarak kullanilmasa da kesinlikle ileride kendisiyle daha fazla karsilasacagiz.