alsoran เป็นการใช้งานแบบ Rust ของ gNodeB Centralized Unit (gNB-CU) ของเครือข่ายการเข้าถึงวิทยุ 5G (RAN)
gNodeB เป็นองค์ประกอบที่จัดการการเข้าถึงวิทยุของอุปกรณ์ผู้ใช้ 5G (UE) และเชื่อมต่อกับแกน 5G
ปัจจุบันโปรเจ็กต์นี้เป็นเพียงการพิสูจน์แนวคิดและยังไม่เป็น gNB-CU ที่ทำงานได้อย่างสมบูรณ์
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
โดยทั่วไปจะครอบคลุมเฉพาะกรณีความสำเร็จเท่านั้น และมี 'สิ่งที่ต้องทำ' มากมาย
เขียนด้วยภาษา Rust และมีดีไซน์ "scale-out single hop"
"การขยายขนาด" หมายความว่ามีกระบวนการของผู้ปฏิบัติงานไร้สัญชาติที่เปลี่ยนแปลงได้หลายกระบวนการ ผู้ปฏิบัติงานคนใดก็ตามสามารถประมวลผลคำขอได้ และไม่มีผู้ปฏิบัติงานคนใดที่เป็นจุดล้มเหลวเพียงจุดเดียว กระบวนการของผู้ประสานงานประสานการแลกเปลี่ยนการจัดการอินเทอร์เฟซของผู้ปฏิบัติงานเมื่อโทโพโลยีเปลี่ยนแปลง แรงจูงใจคือความสามารถในการขยายขนาดและความทนทานต่อข้อผิดพลาด
"Single hop" หมายความว่า ในกรณีหลัก ข้อความจะถูกประมวลผลโดยผู้ปฏิบัติงานเพียงคนเดียว (แทนที่จะเชื่อมโยงกันผ่านไมโครเซอร์วิสหรือโหลดบาลานเซอร์หลายตัว) ผู้ปฏิบัติงาน CU-CP ของAlsran แต่ละคนมีการเชื่อมต่อ SCTP ของตัวเองกับ AMF, DU และ CU-UP แรงจูงใจคือความเร็วและความเรียบง่ายของระบบ
Rust เป็นตัวเลือกภาษาที่น่าสนใจสำหรับการพัฒนา O-RAN ใหม่ อุปสรรคหลักในการเข้าสู่คือโปรโตคอลที่ใช้ ASN.1 และ SCTP โครงการนี้พยายามที่จะพิสูจน์ว่าอุปสรรคนี้สามารถเอาชนะได้
บิลด์อาศัย lld
เพื่อลดความต้องการหน่วยความจำของลิงเกอร์ คุณจะต้องติดตั้ง LLD ( sudo apt install lld
หรือที่คล้ายกัน) หรือแก้ไข .cargo/config เพื่อลบการกำหนดค่า target.x86_64-unknown-linux-gnu
ซึ่งเปลี่ยนกลับเป็นการลิงก์ cc
ธรรมดา
cargo test
จะเรียกใช้ชุดการทดสอบการรวม ลบการทดสอบ Redis แบบสด
หากต้องการรันการทดสอบ Redis แบบสด cargo test live_redis -- --ignored
คุณต้องมี redis-server
ในเส้นทางของคุณจึงจะผ่านพ้นไปได้ รับ Redis ที่นี่: https://redis.io/docs/getting-started/
การทดสอบต่อไปนี้แสดงให้เห็นว่า alsoran CU-CP และ CU-UP ดำเนินการลงทะเบียน UE การสร้างเซสชัน และการส่งต่อเครื่องบินผู้ใช้
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
การทดสอบนี้แสดงให้ผู้ปฏิบัติงานสองคนเริ่มต้นการทำงาน และผู้ประสานงานกำลังแนะนำผู้ปฏิบัติงานถึงวิธีการเริ่มต้นอินเทอร์เฟซ NGAP, E1AP และ F1AP
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
คุณสามารถจับแพ็คเก็ตในระหว่างการทดสอบเหล่านี้ได้โดยการรันสิ่งต่อไปนี้พร้อมกัน
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
...จากนั้นกด Ctrl-C เมื่อสิ้นสุดการทดสอบและเปิด alsoran.pcap ใน Wireshark
หากต้องการดำเนินการลงทะเบียนจริงกับ free5GC ต้องใช้การตั้งค่าเพิ่มเติมอีกเล็กน้อย - ดูคำแนะนำการสาธิต
สุดท้ายนี้ คุณอาจต้องการเรียกดูบันทึกการออกแบบในเอกสารประกอบ/การออกแบบ ซึ่งให้แนวคิดเกี่ยวกับแนวคิดการออกแบบที่รวมอยู่ในAlsran จนถึงขณะนี้
หากคุณต้องการมีส่วนร่วม ให้เริ่มต้นด้วยการสร้างปัญหาหรือการอภิปราย Github เพื่อเสนอการเปลี่ยนแปลงที่คุณต้องการ
Backlog แสดงรายการหลักที่อยู่ระหว่างดำเนินการและยังติดตามส่วนของหนี้ด้านเทคโนโลยีอีกด้วย
คำแนะนำสำหรับการสร้างอินเทอร์เฟซ OpenAPI ทั้งสองใหม่อยู่ในการสร้าง OpenAPI
การจัดการโปรโตคอลของAlsranและตรรกะเวิร์กโฟลว์จะขึ้นอยู่กับข้อกำหนดต่อไปนี้