Saturday, January 18, 2020

การคอนฟิก NOKIA BNG กับการให้บริการ Broadband Internet ด้วยโปรโตคอล PPPoE

ก่อนที่เราจะเริ่มคอนฟิก BNG ผมขออธิบายเกี่ยวกับ Broadband Internet สักนิดก่อนนะครับ เพื่อได้เข้าใจว่า BNG ที่เราจะคอนฟิกนี้ อยู่ตรงส่วนใหนของเครือข่ายและมีการใช้งานยังไง

ในเนื้อหาที่เราจะพูดถึงนี้ประกอบไปด้วย 4 ส่วน  ดังนี้
1. Broadband Internet
2. PPPoE Call Flow
3. คอนฟิก BNG และอุปกรณ์อื่นๆ
4. ผลลัพธ์


Broadband Internet หรือ อินเตอร์เน็ตที่ให้บริการตามบ้าน

Broadband Internet แบ่งตามเทคโนลียีที่ใช้ในปัจจุบันจะมีอยู่ 2 แบบคือ xDSL กับ FTTx
  • xDSL  ใช้ชุมสายที่เรียกว่า IPSLAM ทำหน้าที่กระจายสัญญาณ ติดตั้งทั้งตามเสาไฟหรือภายในอาคารบางทีก็เรียกว่าโหนด สายนำสัญญาณที่ใช้ก็จะเป็นสายทองแดงคู่(Twist pair)บางทีเรียกว่าดรอปวายร์ ( dropwire ) เราเตอร์ที่ติดตั้งในบ้านเรียกว่า DSL Router. 
  • FTTx   ใช้ชุมสายที่เรียกว่า OLT ที่เป็นตัวกระจายสัญญาณด้วยแสง สายนำสัญญาณจะเป็น Fiber Optic หรือเรียกว่า  dropwire เช่นกัน เร้าเตอร์ที่ติดตั้งตามบ้านจะเรียกว่า ONT หรือ ONU ก็ได้


โครงสร้างเครือข่าย Broadband Internet 
Broadband Internet Architecture


ในเครือข่าย Broadband Internet ก็จะประกอบไปด้วย

  • ONT/DSL Router คือ Router ที่เจ้าหน้าที่มาติดตั้งที่บ้าน ต่อไปจะเรียกว่า Subscriber Host นะครับ
  • OLT/IPDSLAM คือ ชุมสายที่ทำหน้าที่กระจายสัญญาณ
  • Fiber Optic/Copper  หรือที่เรียกว่า dropwire คือสายสายนำสัญญาณที่เจ้าหน้าลากสายมาจากชุมสายเข้ามาต่อกับ Router ที่บ้าน
  • ISP(Internet Service Provider) Transmission เป็นเครือข่ายขนาดใหญ่ของผู้ให้บริการ ประกอบไปได้วย Router เป็นร้อยเป็นพันตัวทำหน้าที่รับส่ง Traffic สำหรับ Broadband Service ปกติจะ Implement เป็น MPLS L2VPN . 
  • Access Router คือ อุปกรณ์ที่ทำหน้าที่รวบรวมข้อมูล (Traffic) จากหลายๆ OLT, DLSAM เพื่อรับส่งกับ Aggregate Router
  • Aggregate Router คือ อุปกรณ์ที่ทำหน้าที่รวบรวมข้อมูลกับหลายๆ Access Router เพื่อรับส่งกับ BNG
  • BNG คืออุปกรณ์ที่คอยให้บริการ Broadband Internet โดยการสร้าง PPPoE session กับอุปกรณ์ที่ร้องขอการใช้เครือข่ายด้วย PPPoE โปรโตคอล ในที่นี้คือ ONT/DSL Router และเป็นทางออกสู่ Internet
  • Radius Server คือ อุปกรณ์ที่เก็บ Username/Password ของผู้ใช้ ในระหว่างการสร้าง PPPoE Session Username/Password ที่คอนฟิกใน DSL Router จะต้องถูกส่งไปที่ Radius จากนั้น Radius ก็จะตอบกลับมาว่าใช้งาน Internet หรือไม่ ใช้ได้ด้วย Profile อะไร ( Speed เท่าไหร่ )
  • DHCP Server คือ จะมีหน้าที่แจก IP Address ให้กับ  ONT/DSL Router ที่บ้าน
  • Internet คือ เครือข่าย Internet ของ ISP 

PPPoE Call Flow


การสร้าง PPPoE Session  จะประกอบไปด้วยหลายขั้นตอน  ดังนี้
1. PPPoE Active Discovery
2. LCP Link Estrablish
3. (PAP/CHAP) Authentication
4. IPCP Address Assignment

ผมขอข้ามรายละเอียดแต่ละ Packet ไปนะครับเดี๋ยวมันจะยาวเกินไป
PPPoE Call Flow


การคอนฟิก BNG และอุปกรณ์อื่นๆ

คราวนี้เราจะมาจำลองเครือข่ายอย่างง่าย โดยการใช้โปรแกรม EVE-NG
วิธีการทำ Virtual Windows, Mikrotik, NOKIA 7750SR ตามลิ้งนี้ครับ https://www.eve-ng.net/index.php/documentation/howtos/

EVE-NG LAB Broadband Network


ส่วนประกอบของเครือข่ายที่เราจะทำก็จะมี
  • PC คือ Window7 ที่จำลองใน EVE-NG เอาทำไว้ทดลองเข้า Internet เหมือนคอมที่ตั้งอยู่ที่บ้าน
  • Mikrotik คือ Home router ที่ขอ PPPoE session กับ BNG หรือก็คือ Subscriber Host ผมจะควบคุม Mikrotik ผ่านโปรแกรม Winbox ได้จึงจำเป็นต้องต่อ Interface eth1 ของ Mikrotik ให้ออก Management Interface ของ EVE-NG จากนั้น Router จริงๆ ที่บ้านจะแจกไอพีให้  Mikrotik.ฺ
  • BNG ในที้นี้ใช้ NOKIA 7750SR-12 Timos version 12 สามารถหาได้จากใน Internet โดย Router จะ Reboot ทุกๆ 60 นาทีเพราะไม่มี License.
  • NAT คือ PC Window7 ที่ทำหน้าที่ Shared Internet จาก e0 ให้ e1 และทำหน้าที่ NAT ออกด้วย IP Address ที่ e0
  • Internet Cloud คือ Management ของ EVE-NG ปลายทางก็คือ Router จริงๆที่บ้าน เพื่อเป็นทางออก Internet
  • Management Cloud คือ Management ของ EVE-NG. Mikrotik จะได้รับการแจก IP จาก Router จริงๆที่บ้าน เพื่อที่จะใช้ Winbox ในการเซ็ต Mikrotik

1 BNG Configuration 


 1.1  BNG คอนฟิก Router Name กับ Provisioning Card
ปกติใน router ยี่ห้ออื่นๆ จะไม่ต้อง provisioning card คือถ้าปลั๊กการ์ดไปที่ router ก็จะสามารถคอนฟิกพอร์ทหรือ Interface ได้เลย แต่ Router ของ Nokia ต้อง provisioning card ก่อน


/configure system name BNG
/configure card 1 card-type "iom-xp-b
/configure card 1 mcm 1 mcm-type "mcm-xp"


 1.2 BNG คอนฟิก Physical Port 

port mode: access ของ NOKIA นี้ไม่เหมือนคอนฟิก Cisco นะครับคนละความหมายกันเลย. ในที่นี้พอร์ทจะถูกใช้กับ VPRN จึงต้องเป็น mode access ( Mode: network ใช้กับ router base, mode: hybrid ใช้กับ router base และ vprn.) ลิ้งค์ระหว่าง BNG กับ Mikrotik จะให้เป็น dot1q (tag vlan ด้วย)

/configure 
    port 1/1/1 
        description "To_NAT_eth1"
        ethernet
            mode access
        exit
        no shutdown
    exit
    port 1/1/2
        description "To_Mikrotik_eth1"
        ethernet
            mode access
            encap-type dot1q
        exit
        no shutdown
    exit
 
1.3 BNG คอนฟิก sla-profile และ sub-profile
sla-profile คือส่วนที่ควบคุม speed ของ subscriber หรือ user นั่นเอง ปกติแล้วก็จะมีคอนฟิก Qos อยู่ในนั้น แต่ขอข้ามส่วนของ QoS ไปก่อน เพราะฉนั้นคอนฟิกนี้ก็จะหมายถึง ไม่ได้จำกัด speed ของ user sub-profile ปกติคอฟฟิกนี้จะเกียวกับ accouting เช่น อัพเดทข้อมูลของ subscriber เป็นให้ Server ระยะๆ เพื่อความคุมการใช้และการคิดตังค์
sub-ident-policy เอาไว้ map sla-profile/ sub-profile ระหว่าง Radius กับ BNG.

A:BNG# configure subscriber-mgmt 
A:BNG>config>subscr-mgmt# info 
----------------------------------------------
        sla-profile "SLA-D100-U10" create
            description "Sla-profile Download 100M Upload 10M"
        exit
        sla-profile "SLA-DEFAULT" create
            description "Default Sla Profile"
        exit
        sub-profile "SUB-D100-U10" create
            description "Sub-profile Download 100M Upload 10M"
        exit
        sub-profile "SUB-DEFAULT" create
            description "Default Subscriber Profile"
        exit
        sub-ident-policy "SUB-IDEN" create
            sub-profile-map
                use-direct-map-as-default
            exit
            sla-profile-map
                use-direct-map-as-default
            exit
        exit
----------------------------------------------

 1.4 BNG คอนฟิก Local-user-db 
 ในการทำแล็บนี้เราจะใช้ Local-User-Database หรือ Local Radius Server ซึ่งเป็นฟังก์ชันที่มีอยู่แล้วใน BNG  แล็บถัดไป อาจจะใช้ External Radius Server นะครับ ในขั้นตอนการ authentication username/password ของ Subscriber ก็จะถูกส่งให้ Local-user-db จากนั้น เมื่อ authentication ผ่านแล้ว Local-user-db ก็จะส่งค่าเช่น sla-profile:"SLA-D100-U10" กับ sub-profile:"SUB-D100-U10" มาให้ด้วย ตรงนี้ก็เหมือนกับเราไปซื้อ package internet ก็จะได้ username/password ผูกกับ package.

ตัวอย่างนี้จะใช้
username: bnet@abc.com
password: abc1234

A:BNG# configure subscriber-mgmt 
A:BNG>config>subscr-mgmt# info 
----------------------------------------------
        local-user-db "LOCAL-DB" create
            ppp                       
                match-list username 
                host "Mikrotik" create
                    host-identification
                        username "bnet@abc.com"
                    exit
                    password chap "IpDZVgHclD7e1WF3fzruZ8yuxUsHKS3Y" hash2 
                    identification-strings 100 create
                        subscriber-id "SUB-IDEN"
                        sla-profile-string "SLA-D100-U10"
                        sub-profile-string "SUB-D100-U10"
                    exit
                    no shutdown
                exit
            exit
            no shutdown
        exit
----------------------------------------------

 1.5 BNG คอนฟิก Local DHCP Server
 DHCP เป็นได้ทั้ง External DHCP Server และ Local DHCP Server ในที่นี้จะใช้แบบ Local นะครับ
 เมื่อ authentication ผ่านแล้วขั้นตอนสุดท้ายคือการแจก IP Address ให้กับ Subscriber Host. โดย Local DHCP Server นี้คอนฟิกไว้คือ แจกด้วย IP วง 172.16.10.0/24 ตั้งแต่ IP 172.16.10.2/24 ถึง IP 172.16.10.254/24 gateway 172.16.10.1 dns 8.8.8.8
ส่วน interface loopback_DHCP ก็คือ Logical Interface ที่ทำหน้าที่เป็น Address ของ DHCP server


A:BNG# configure service vprn 100 customer 1 create 
A:BNG>config>service>vprn# info 
----------------------------------------------
            route-distinguisher 65000:100
            service-name "BNG"
            dhcp
                local-dhcp-server "LOCAL_DHCP_SERVER" create
                    use-gi-address 
                    pool "pool1" create
                        options
                            dns-server 8.8.8.8
                        exit
                        subnet 172.16.10.0/24 create
                            options
                                default-router 172.16.10.1
                            exit
                            address-range 172.16.10.2 172.16.10.254 
                        exit
                    exit
                    no shutdown
                exit
            exit
            interface "Loopback_DHCP" create
                address 10.10.10.1/32
                local-dhcp-server "LOCAL_DHCP_SERVER"
                loopback              
            exit

 1.6 BNG คอนฟิก Subscriber-Interface และ Group-Interface 
Subscriber-Interface เป็น Interface ที่เอาไว้คุยกับ Subscriber Host มีคอนฟิก address เพื่อเป็น ip-gateway ของ subscriber 
Group-interface จะเป็น interface ที่ผูกกับ physical interface (1/1/2:10) และเป็นตัวกำหนด parameter ต่างๆ ของ subscriber ที่จะเข้ามาทาง interface นี้ เช่น กำหนดว่าจะให้ใช้ dhcp server ตัวใหน. authentication กับ Radius server ใหน
 ในตัวอย่างนี้ Mikrotik ต้อง tag ด้วย vlan 10 เพื่อที่จะเข้ามาทาง Group-interface นี้ได้. โดยเริ่มต้นจะได้ sla-profile: "SLA-DEFAULT" และ sub-profile:"SUB-DEFAULT"

A:BNG# configure service vprn 100
A:BNG>config>service>vprn#  info      
----------------------------------------------
            subscriber-interface "SUB-INT-1" create
                address 172.16.10.1/24
                group-interface "GRP-INT-1" create
                    dhcp
                        server 10.10.10.1 
                        lease-populate 32767
                        client-applications ppp
                        gi-address 172.16.10.1
                        user-db "LOCAL-DB"
                        no shutdown
                    exit
                    sap 1/1/2:10 create
                        sub-sla-mgmt
                            def-sub-id use-auto-id
                            def-sub-profile "SUB-DEFAULT"
                            def-sla-profile "SLA-DEFAULT"
                            sub-ident-policy "SUB-IDEN"
                            multi-sub-sap 32767
                            no shutdown
                        exit
                    exit
                    pppoe             
                        session-limit 32767
                        sap-session-limit 32767
                        no shutdown
                    exit
                exit
            exit

 1.7 BNG คอนฟิกทางออก Internet
 เมื่อ Subscriber Host authentication ผ่านแล้ว ได้ IP แล้ว ก็จำเป็นที่จะต้องมีทางออกไป Internet. ในแล็บนี้ได้คอนฟิกเป็น Static-route Default Route ส่งไปที่ NAT (PC)  จากนั้น NAT PC ก็จำทำการ NAT และส่ง Traffic ไปที่ Router จริงที่บ้านเพื่อออก Internet อีกที ( ดูซับซ้อนนะ  )

A:BNG# configure service vprn 100
A:BNG>config>service>vprn#  info      
----------------------------------------------
            interface "to_NAT" create
                description "Way to the Internet"
                address 20.20.20.2/30
                sap 1/1/1 create
                exit
            exit
            static-route 0.0.0.0/0 next-hop 20.20.20.1 description "Default-Route to NAT"
   
สำหรับ Config บน BNG ก็จะหมดเพียงเท่านี้ครับ ที่เหลือก็จะเป็นการคอนฟิกส่วนประกอบอื่นๆ ของเครือข่ายเช่น  Mikrotik กับ NAT (PC)

2 Mikrotik  Configuration 

  Mikrotik จะคอนฟิกแบ่งออกเป็น 3 ส่วนนะครับ คือ
2.1 Mikrotik PPPoE Client คือ เพื่อสร้าง PPPoE Session เพื่อขอการใช้งาน Internet กับ ISP
2.2 Mikrotik DHCP Server คือ ทำหน้าที่แจก IP ให้กับ PC ในบ้าน
2.3 Mikrotik NAT คือ ทำหน้าที่ NAT ออกไปด้วย IP Address ของ interface pppoe



  2.1. Mikrotik PPPoE Client. 
 Mikrotik คอนฟิก interface eth2 ให้ tag vlan 10โดยคลิกที่ Interface > New Interface (เครืองหมาย + สีน้ำเงิน ) > VLAN จากนั้นตั้งค่าตามรูป

Mikrotik interface with vlan


สร้าง pppoe client  โดยคลิกที่ Interface > New Interface  > PPPoE client

Mikrotik PPPoE Client.

2.2 Mikrotik DHCP Server 
 เพื่อแจก IP ให้กับ PC ในบ้าน ในที่นี้จะแจก IP ด้วยวง 192.168.1.0/24   เริ่มจากสร้าง ip pool ที่จะแจก IP ก่อน โดยเข้าไปที่ IP > Pool ในตัวอย่างนี้ตั้งค่า address เป็น 192.168.1.10-192.168.1.254
Mikrotik IP Pool

จากนั้นก็คอนฟิกเป็น DHCP Server โดยเข้าไปที่ IP > DHCP Server

Mikrotik DHCP Server

 2.3 Mikrotik NAT
เพื่อ NAT source address จาก PC ( 192.168.1.0/24) ให้เป็น IP ของ pppoe-out1 ที่เราคอนฟิกด้านบน โคยคลิกที่ IP > Firewall
Mikrotik NAT


3 NAT(PC) internet shared  

เนื่องจากต้องการทำให้ PC ที่อยู่ในแล๊บออก Internet ได้จริง และ LAB ก็มีข้อจำกัดเกี่ยวกับการจำลองเครือข่าย ในที่นี้ผมเลือกที่จะทำ NAT PC (Windows 7 ใน EVE-NG ) และทำการ shared internet ในเครือข่ายจริงจะไม่มีในส่วนนี้นะครับ

 3.1  NAT PC share internet
 NAT PC จะต้องมีอย่างน้อย 2 interface   ในที่นี้มี
 Local Area Connection 3 หรือ e0 ใน EVE-NG ที่ต่อเข้ากับ management ของ EVE-NG. Interface นี้จะได้รับการแจก IP จาก Router จริงที่บ้าน (เหมือนกับ Mikrotic eth1)
 Local Area Connection 4 คือ e1 ที่ต่อไปหา BNG
 จากนั้นก็ทำการ Share โดยการคลิกขวาที่ Local Area Connection 3 > Properties > Sharing แล้วก็คลิก Allow ตามรูปด้านล่าง

PC share internet

Local Area Connection 4 คือ e1 ใน EVE-NG ที่ต่อไปหา BNG ก็ต้องเซ็ต IP address กับ Subnet mask ให้ตรงกัน ตามรูป

 3.2 NAT PC Routes
 NAT PC ต้องทำ route 172.16.10.0/24 next-hop 20.20.20.2 ด้วยเพื่อให้รูปเส้นทางในการส่งข้อมูลกลับไปหา Subscriber Host
 การคอนฟิก Route ที่ NAT PC ต้อง run cmd as Administration นะครับ แล้วก็ใส่คำสั่งตามในรูป แล้วก็เช็ค route-table ด้วยเลย เห็นว่า default gateway คือ10.10.1.1 หรือก็คือ IP ของ Router จริงที่อยู่บ้าน ส่วน network 172.16.10.0/24 next-hop ไปที่ BNG
PC Routes

NAT PC  ก็มีการตั้งค่าแค่ทำนี้ แล้วก็อย่าลืมปิด Firewall ด้วยนะครับเอาไว้ Ping test


ผลลัพธ์

  • ทดสอบ PC ในแล็บเพื่อออก Internet 
  • แสดงผลสถานะของ Subscriber บน BNG
  • ผล Capture Traffic ในขั้นตอนการสร้าง PPPoE session ด้วยโปรแกรม Wireshark

 ผลลัพธ์ PC ในแล็บเพื่อออก Internet 

 แสดงผลลัพธ์บน Mikrotik
Mikrotik Result


 แสดงผลสถานะของ Subscriber บน BNG

*A:BNG#   show router 100 route-table 

===============================================================================
Route Table (Service: 100)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric   
-------------------------------------------------------------------------------
0.0.0.0/0                                     Remote  Static    02d02h26m  5
       20.20.20.1                                                   1
10.10.10.1/32                                 Local   Local     04d21h41m  0
       Loopback_DHCP                                                0
20.20.20.0/30                                 Local   Local     02d02h26m  0
       to_NAT                                                       0
172.16.10.0/24                                Local   Local     04d21h41m  0
       SUB-INT-1                                                    0
172.16.10.13/32                               Remote  Sub Mgmt  00h05m47s  0
       [GRP-INT-1]                                                  0
-------------------------------------------------------------------------------
No. of Routes: 5
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested      
===============================================================================
*A:BNG# 

*A:BNG# show service active-subscribers hierarchy 

===============================================================================
Active Subscriber hierarchy
===============================================================================
-- 50:04:00:02:00:01|1/1/2:10|1 (SUB-DEFAULT)
   |
   |-- sap:1/1/2:10 - sla:SLA-DEFAULT
   |   |
   |   |-- 172.16.10.13
   |   |   50:04:00:02:00:01 - 1 (IPCP)
   |   |

===============================================================================
*A:BNG# show router 100 dhcp local-dhcp-server "LOCAL_DHCP_SERVER" leases 

===============================================================================
Leases for DHCP server LOCAL_DHCP_SERVER router 100
===============================================================================
IP Address      Lease State       Mac Address       Remaining   Clnt  Fail
  PPP user name/Opt82 Circuit Id                    LifeTime    Type  Ctrl
  User-db-hostname                                                      
-------------------------------------------------------------------------------
172.16.10.13    stable            50:04:00:02:00:01 0h47m18s    ppp   local
  BNG|100|GRP-INT-1|1/1/2:10
-------------------------------------------------------------------------------
1 leases found
===============================================================================
*A:BNG# 

ผล Capture Traffic ระหว่าง Mikrotik กับ BNG
 ดาวน์โหลดไฟล์ .pcapng https://drive.google.com/open?id=1hKqwkc3Plfy8o44AEdAk6YB4zYabWRX2
*IP ที่แสดงไม่ตรงกันนะครับ เพราะเก็บคนละรอบกัน
PPPoE Wireshark capture


จบแล้บครับสำหรับการจำลองเครือข่าย Broadband Internet รอบนี้
เราสามารถปรับปรุงเครือข่ายนี้ให้ดีขึ้นได้ โดยใช้ External Radius Server, Radius Server Redundancy,  External DHCP Server. Implement BNG Large Scale NAT. BNG Redundancy หรืออื่นๆ อีก
สำหรับการให้บริการ WiFi ของ ISP ปกติก็จะเป็น Protocol IPoE (Internet Protocol over Ethernet)
ลิ้งค์ระหว่าง Mikrotik กับ BNG ปกติจะผ่าน ISP Transmission ด้วยเทคโนโลยี MPLS L2VPN

จากที่กล่าวมาผมจะเอาไว้เขียนในบทความถัดไปครับ


No comments:

Post a Comment

การใช้งาน Secure crt เพื่อรัน Python-Script และ VBScript

   สำหรับใครที่ใช้งาน Secure CRT อยู่เป็นประจำและมีงานที่ต้องดึงข้อมูลโดยใช้ command line อยู่เป็นประจำหรือต้องดึงข้อมูลปริมาณมาก การใช้งาน ...